Add tests
This commit is contained in:
parent
4e777f295d
commit
e04c0dd3bc
@ -17,6 +17,7 @@ import numpy as np
|
||||
from frozendict import frozendict
|
||||
|
||||
from . import set_operations
|
||||
from .metadata import from_nodes
|
||||
from .node_types import NodeData, RootNodeData
|
||||
from .tree_formatters import (
|
||||
HTML,
|
||||
@ -111,6 +112,10 @@ class Qube:
|
||||
|
||||
return from_json(json)
|
||||
|
||||
@classmethod
|
||||
def from_nodes(cls, nodes: dict[str, dict], add_root: bool = True):
|
||||
return from_nodes(cls, nodes, add_root)
|
||||
|
||||
def to_json(self) -> dict:
|
||||
def to_json(node: Qube) -> dict:
|
||||
return {
|
||||
|
41
src/python/qubed/metadata.py
Normal file
41
src/python/qubed/metadata.py
Normal file
@ -0,0 +1,41 @@
|
||||
from typing import TYPE_CHECKING, Iterator
|
||||
|
||||
import numpy as np
|
||||
|
||||
from .value_types import QEnum
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .qube import Qube
|
||||
|
||||
|
||||
def make_node(
|
||||
cls,
|
||||
key: str,
|
||||
values: Iterator,
|
||||
shape: list[int],
|
||||
children: "tuple[Qube]",
|
||||
metadata: dict[str, np.ndarray] | None = None,
|
||||
):
|
||||
return cls.make(
|
||||
key=key,
|
||||
values=QEnum(values),
|
||||
metadata={k: np.array(v).reshape(shape) for k, v in metadata.items()}
|
||||
if metadata is not None
|
||||
else {},
|
||||
children=children,
|
||||
)
|
||||
|
||||
|
||||
def from_nodes(cls, nodes, add_root=True):
|
||||
shape = [len(n["values"]) for n in nodes.values()]
|
||||
nodes = nodes.items()
|
||||
*nodes, (key, info) = nodes
|
||||
root = make_node(shape=shape, children=(), key=key, **info)
|
||||
|
||||
for key, info in reversed(nodes):
|
||||
shape.pop()
|
||||
root = make_node(shape=shape, children=(root,), key=key, **info)
|
||||
|
||||
if add_root:
|
||||
return cls.root_node(children=(root,))
|
||||
return root
|
0
tests/test_metadata.py
Normal file
0
tests/test_metadata.py
Normal file
Loading…
x
Reference in New Issue
Block a user