From 162dd48748c0f5a8609dc6d6d039482c90f5c8c8 Mon Sep 17 00:00:00 2001 From: Tom Date: Mon, 24 Feb 2025 13:24:33 +0000 Subject: [PATCH] Unfreeze datastructures --- src/python/qubed/Qube.py | 2 +- src/python/qubed/node_types.py | 4 ++-- src/python/qubed/value_types.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/python/qubed/Qube.py b/src/python/qubed/Qube.py index b8d96fa..9160041 100644 --- a/src/python/qubed/Qube.py +++ b/src/python/qubed/Qube.py @@ -16,7 +16,7 @@ from .tree_formatters import ( from .value_types import QEnum, Values, values_from_json -@dataclass(frozen=True, eq=True, order=True) +@dataclass(frozen=False, eq=True, order=True, unsafe_hash=True) class Qube: data: NodeData children: tuple['Qube', ...] diff --git a/src/python/qubed/node_types.py b/src/python/qubed/node_types.py index 7abbe75..13ccb0a 100644 --- a/src/python/qubed/node_types.py +++ b/src/python/qubed/node_types.py @@ -6,7 +6,7 @@ from frozendict import frozendict from .value_types import Values -@dataclass(frozen=True, eq=True, order=True) +@dataclass(frozen=False, eq=True, order=True, unsafe_hash=True) class NodeData: key: str values: Values @@ -15,7 +15,7 @@ class NodeData: def summary(self) -> str: return f"{self.key}={self.values.summary()}" if self.key != "root" else "root" -@dataclass(frozen=True, eq=True, order=True) +@dataclass(frozen=False, eq=True, order=True) class RootNodeData(NodeData): "Helper class to print a custom root name" def summary(self) -> str: diff --git a/src/python/qubed/value_types.py b/src/python/qubed/value_types.py index 65f588b..a0f992c 100644 --- a/src/python/qubed/value_types.py +++ b/src/python/qubed/value_types.py @@ -38,8 +38,8 @@ class Values(ABC): T = TypeVar("T") EnumValuesType = FrozenSet[T] -@dataclass(frozen=True, order=True) +@dataclass(frozen=True, order=True) class QEnum(Values): """ The simplest kind of key value is just a list of strings.