@@ -1732,9 +1732,7 @@ class FrozenDict(frozendict):
17321732
17331733
17341734class FrozenDictSlots (frozendict ):
1735- __slots__ = ('attr' ,)
1736- def __init__ (self , * args , ** kwargs ):
1737- self .attr = 123
1735+ __slots__ = ('slot_attr' ,)
17381736
17391737
17401738class FrozenDictTests (unittest .TestCase ):
@@ -1837,17 +1835,32 @@ def test_pickle(self):
18371835 FrozenDict (x = 1 , y = 2 ),
18381836 FrozenDictSlots (x = 1 , y = 2 ),
18391837 ):
1838+ if type (fd ) == FrozenDict :
1839+ fd .attr = 123
1840+ if type (fd ) == FrozenDictSlots :
1841+ fd .slot_attr = 456
18401842 with self .subTest (fd = fd , proto = proto ):
18411843 if proto >= 2 :
18421844 p = pickle .dumps (fd , proto )
18431845 fd2 = pickle .loads (p )
18441846 self .assertEqual (fd2 , fd )
18451847 self .assertEqual (type (fd2 ), type (fd ))
1848+ if type (fd ) == FrozenDict :
1849+ self .assertEqual (fd2 .attr , 123 )
1850+ if type (fd ) == FrozenDictSlots :
1851+ self .assertEqual (fd2 .slot_attr , 456 )
18461852 else :
18471853 # protocol 0 and 1 don't support frozendict
18481854 with self .assertRaises (TypeError ):
18491855 pickle .dumps (fd , proto )
18501856
1857+ def test_pickle_iter (self ):
1858+ it = iter (frozendict (x = 1 , y = 2 ))
1859+ for proto in range (pickle .HIGHEST_PROTOCOL + 1 ):
1860+ p = pickle .dumps (it , proto )
1861+ it2 = pickle .loads (p )
1862+ self .assertEqual (list (it2 ), ['x' , 'y' ])
1863+
18511864
18521865if __name__ == "__main__" :
18531866 unittest .main ()
0 commit comments