@@ -140,6 +140,15 @@ class _FrozenChild(MutableBase):
140
140
FrozenChild = frozen_dataclass_sealable (_FrozenChild )
141
141
142
142
143
+ # Class used for pickling tests, defined at module level
144
+ @frozen_dataclass_sealable
145
+ class PickleTest :
146
+ name : str
147
+ values : list [int ] = field (
148
+ default_factory = list , metadata = {"mutable_during_init" : True }
149
+ )
150
+
151
+
143
152
# Core behavior tests
144
153
# -----------------
145
154
@@ -666,8 +675,8 @@ class Inner:
666
675
667
676
@frozen_dataclass_sealable
668
677
class Outer :
669
- inner : Inner = field (default = None , metadata = {"mutable_during_init" : True })
670
678
data : str = field (metadata = {"mutable_during_init" : True })
679
+ inner : Inner = field (default = None , metadata = {"mutable_during_init" : True })
671
680
672
681
# Case 1: Deep sealing (deep=True)
673
682
inner_obj = Inner (val = 42 )
@@ -809,8 +818,12 @@ def test_mutable_containers_after_sealing() -> None:
809
818
810
819
@frozen_dataclass_sealable
811
820
class ContainerHolder :
812
- items : list [int ] = field (default_factory = list )
813
- mapping : dict [str , int ] = field (default_factory = dict )
821
+ items : list [int ] = field (
822
+ default_factory = list , metadata = {"mutable_during_init" : True }
823
+ )
824
+ mapping : dict [str , int ] = field (
825
+ default_factory = dict , metadata = {"mutable_during_init" : True }
826
+ )
814
827
815
828
obj = ContainerHolder ()
816
829
obj .items .extend ([1 , 2 , 3 ])
@@ -866,13 +879,6 @@ def test_pickling_sealed_objects() -> None:
866
879
"""Test that sealed objects can be pickled and unpickled while preserving their sealed state."""
867
880
import pickle
868
881
869
- @frozen_dataclass_sealable
870
- class PickleTest :
871
- name : str
872
- values : list [int ] = field (
873
- default_factory = list , metadata = {"mutable_during_init" : True }
874
- )
875
-
876
882
# Create and configure object
877
883
obj = PickleTest (name = "test" )
878
884
obj .values .extend ([1 , 2 , 3 ])
@@ -968,13 +974,13 @@ class Level3:
968
974
969
975
@frozen_dataclass_sealable
970
976
class Level2 :
971
- level3 : Level3 = field (default = None , metadata = {"mutable_during_init" : True })
972
977
name : str = field (metadata = {"mutable_during_init" : True })
978
+ level3 : Level3 = field (default = None , metadata = {"mutable_during_init" : True })
973
979
974
980
@frozen_dataclass_sealable
975
981
class Level1 :
976
- level2 : Level2 = field (default = None , metadata = {"mutable_during_init" : True })
977
982
data : str = field (metadata = {"mutable_during_init" : True })
983
+ level2 : Level2 = field (default = None , metadata = {"mutable_during_init" : True })
978
984
979
985
# Create nested structure
980
986
level3 = Level3 (value = 42 )
@@ -987,7 +993,7 @@ class Level1:
987
993
level1 .data = "modified top"
988
994
989
995
# Deep seal from the top level
990
- level1 .seal (deep = True )
996
+ level1 .seal (deep = True ) # This should seal all levels
991
997
992
998
# All levels should now be sealed
993
999
with pytest .raises (AttributeError ):
@@ -1013,10 +1019,10 @@ class RegularClass:
1013
1019
1014
1020
@frozen_dataclass_sealable
1015
1021
class MixedContainer :
1022
+ data : str = field (metadata = {"mutable_during_init" : True })
1016
1023
regular : RegularClass = field (
1017
1024
default = None , metadata = {"mutable_during_init" : True }
1018
1025
)
1019
- data : str = field (metadata = {"mutable_during_init" : True })
1020
1026
1021
1027
# Create objects
1022
1028
regular = RegularClass (name = "test" , value = 42 )
0 commit comments