[3.11] GH-99155: Fix NormalDist pickle with 0 and 1 protocols (GH-99156). (GH-99188)

(cherry picked from commit d7a00f1e8e)

Co-authored-by: Nikita Sobolev <mail@sobolevn.me>

Automerge-Triggered-By: GH:rhettinger
This commit is contained in:
Nikita Sobolev 2022-11-07 12:41:08 +03:00 committed by GitHub
parent 58c8c1dee7
commit 263e9830aa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 3 deletions

View file

@ -1382,3 +1382,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

View file

@ -2986,14 +2986,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

View file

@ -0,0 +1 @@
Fix :class:`statistics.NormalDist` pickle with ``0`` and ``1`` protocols.