diff options
author | Nikita Sobolev <mail@sobolevn.me> | 2022-11-07 02:56:41 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-07 02:56:41 (GMT) |
commit | bef9efabc3f899a8f05cc6bee009c7c5fb3d01ae (patch) | |
tree | 11b29d0b6a93c99dd55b31a4bd6bbc7e224dfe0b /Lib | |
parent | f626b7b504df454d289527a4f922b09deeae9e21 (diff) | |
download | cpython-bef9efabc3f899a8f05cc6bee009c7c5fb3d01ae.zip cpython-bef9efabc3f899a8f05cc6bee009c7c5fb3d01ae.tar.gz cpython-bef9efabc3f899a8f05cc6bee009c7c5fb3d01ae.tar.bz2 |
GH-99155: Fix `NormalDist` pickle with `0` and `1` protocols (GH99156)
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/statistics.py | 6 | ||||
-rw-r--r-- | Lib/test/test_statistics.py | 11 |
2 files changed, 14 insertions, 3 deletions
diff --git a/Lib/statistics.py b/Lib/statistics.py index b4adabd..07d1fd5 100644 --- a/Lib/statistics.py +++ b/Lib/statistics.py @@ -1446,3 +1446,9 @@ class NormalDist: def __repr__(self): return f'{type(self).__name__}(mu={self._mu!r}, sigma={self._sigma!r})' + + def __getstate__(self): + return self._mu, self._sigma + + def __setstate__(self, state): + self._mu, self._sigma = state diff --git a/Lib/test/test_statistics.py b/Lib/test/test_statistics.py index 05ce79f..31a3cb6 100644 --- a/Lib/test/test_statistics.py +++ b/Lib/test/test_statistics.py @@ -3003,14 +3003,19 @@ class TestNormalDist: nd = NormalDist(100, 15) self.assertNotEqual(nd, lnd) - def test_pickle_and_copy(self): + def test_copy(self): nd = self.module.NormalDist(37.5, 5.625) nd1 = copy.copy(nd) self.assertEqual(nd, nd1) nd2 = copy.deepcopy(nd) self.assertEqual(nd, nd2) - nd3 = pickle.loads(pickle.dumps(nd)) - self.assertEqual(nd, nd3) + + def test_pickle(self): + nd = self.module.NormalDist(37.5, 5.625) + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + with self.subTest(proto=proto): + pickled = pickle.loads(pickle.dumps(nd, protocol=proto)) + self.assertEqual(nd, pickled) def test_hashability(self): ND = self.module.NormalDist |