File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 5
5
import os
6
6
import textwrap
7
7
import functools
8
+ import dataclasses
8
9
from returnn .tensor import Dim , batch_dim
9
10
from sisyphus .hash import sis_hash_helper
10
11
from ..serialization_v2 import serialize_config , SisPathHandling , PyCode
@@ -290,3 +291,42 @@ def test_mult_value_refs():
290
291
b = True
291
292
"""
292
293
)
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
You can’t perform that action at this time.
0 commit comments