Skip to content

Commit ece0218

Browse files
committed
test frozen dataclass
1 parent c132067 commit ece0218

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

users/zeyer/tests/test_serialization_v2.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import os
66
import textwrap
77
import functools
8+
import dataclasses
89
from returnn.tensor import Dim, batch_dim
910
from sisyphus.hash import sis_hash_helper
1011
from ..serialization_v2 import serialize_config, SisPathHandling, PyCode
@@ -290,3 +291,42 @@ def test_mult_value_refs():
290291
b = True
291292
"""
292293
)
294+
295+
296+
@dataclasses.dataclass
297+
class _DemoData:
298+
value: int
299+
300+
301+
def test_dataclass():
302+
obj = _DemoData(42)
303+
config = {"obj": obj}
304+
serialized = serialize_config(config)
305+
code = serialized.as_serialized_code()
306+
scope = {}
307+
exec(code, scope)
308+
obj_ = scope["obj"]
309+
assert obj_ is not obj
310+
assert isinstance(obj_, _DemoData)
311+
assert obj_.value == 42
312+
assert obj_ == obj
313+
314+
315+
@dataclasses.dataclass(frozen=True)
316+
class _FrozenDemoData:
317+
value: int
318+
319+
320+
def test_dataclass_frozen():
321+
obj = _FrozenDemoData(42)
322+
config = {"obj": obj}
323+
serialized = serialize_config(config)
324+
code = serialized.as_serialized_code()
325+
print(code)
326+
scope = {}
327+
exec(code, scope)
328+
obj_ = scope["obj"]
329+
assert obj_ is not obj
330+
assert isinstance(obj_, _FrozenDemoData)
331+
assert obj_.value == 42
332+
assert obj_ == obj

0 commit comments

Comments
 (0)