Add tests

This commit is contained in:
Tom 2025-04-15 14:43:21 +01:00
parent 4e777f295d
commit e04c0dd3bc
3 changed files with 46 additions and 0 deletions

View File

@ -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 {

View 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
View File