From bf47401e6c4c80b416cb52341e21ca0efe82ea38 Mon Sep 17 00:00:00 2001 From: Tom Date: Sat, 12 Apr 2025 16:06:29 +0200 Subject: [PATCH] Add Qube.load --- src/python/qubed/Qube.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/python/qubed/Qube.py b/src/python/qubed/Qube.py index dd7a5d9..7b05b94 100644 --- a/src/python/qubed/Qube.py +++ b/src/python/qubed/Qube.py @@ -1,9 +1,11 @@ import dataclasses import functools +import json from collections import defaultdict from collections.abc import Callable from dataclasses import dataclass from functools import cached_property +from pathlib import Path from typing import Any, Iterable, Iterator, Literal, Sequence from frozendict import frozendict @@ -63,6 +65,11 @@ class Qube: def root_node(cls, children: Iterable["Qube"]) -> "Qube": return cls.make("root", QEnum(("root",)), children) + @classmethod + def load(cls, path: str | Path) -> "Qube": + with open(path, "r") as f: + return Qube.from_json(json.load(f)) + @classmethod def from_datacube(cls, datacube: dict[str, str | Sequence[str]]) -> "Qube": key_vals = list(datacube.items())[::-1]