◐ Shell
clean mode source ↗

[3.10] bpo-45566: `test_frozen_pickle` checks all `pickle` protocols (GH-29150) by miss-islington · Pull Request #29201 · python/cpython

Expand Up @@ -2859,13 +2859,26 @@ class FrozenSlotsClass: foo: str bar: int
@dataclass(frozen=True) class FrozenWithoutSlotsClass: foo: str bar: int
def test_frozen_pickle(self): # bpo-43999
assert self.FrozenSlotsClass.__slots__ == ("foo", "bar") p = pickle.dumps(self.FrozenSlotsClass("a", 1)) assert pickle.loads(p) == self.FrozenSlotsClass("a", 1)
self.assertEqual(self.FrozenSlotsClass.__slots__, ("foo", "bar")) for proto in range(pickle.HIGHEST_PROTOCOL + 1): with self.subTest(proto=proto): obj = self.FrozenSlotsClass("a", 1) p = pickle.loads(pickle.dumps(obj, protocol=proto)) self.assertIsNot(obj, p) self.assertEqual(obj, p)
obj = self.FrozenWithoutSlotsClass("a", 1) p = pickle.loads(pickle.dumps(obj, protocol=proto)) self.assertIsNot(obj, p) self.assertEqual(obj, p)
class TestDescriptors(unittest.TestCase): def test_set_name(self): Expand Down