From 7ca844b953d89958371a0b928f5cc562b86a97f0 Mon Sep 17 00:00:00 2001 From: Marek Materzok Date: Mon, 10 Feb 2025 11:24:29 +0100 Subject: [PATCH] Fix make_hashable --- transactron/utils/data_repr.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/transactron/utils/data_repr.py b/transactron/utils/data_repr.py index a9c7102..8e96597 100644 --- a/transactron/utils/data_repr.py +++ b/transactron/utils/data_repr.py @@ -24,12 +24,16 @@ def layout_subset(layout: StructLayout, *, fields: set[str]) -> StructLayout: def make_hashable(val) -> Hashable: - if isinstance(val, Mapping): - return frozenset(((k, make_hashable(v)) for k, v in val.items())) - elif isinstance(val, Iterable): - return tuple(make_hashable(v) for v in val) - else: + try: + hash(val) return val + except TypeError: + if isinstance(val, Mapping): + return frozenset(((k, make_hashable(v)) for k, v in val.items())) + elif isinstance(val, Iterable): + return tuple(make_hashable(v) for v in val) + else: + raise def align_to_power_of_two(num: int, power: int) -> int: