]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.10] [ GH-99155: Fix `NormalDist` pickle with `0` and `1` protocols (GH-99156)...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 7 Nov 2022 10:16:54 +0000 (02:16 -0800)
committerGitHub <noreply@github.com>
Mon, 7 Nov 2022 10:16:54 +0000 (04:16 -0600)
Lib/statistics.py
Lib/test/test_statistics.py
Misc/NEWS.d/next/Library/2022-11-06-12-44-51.gh-issue-99155.vLZOzi.rst [new file with mode: 0644]

index f66245380abb17a9546583c797866c4cfd1e1aee..52f17851591beb8d88a9df23f89bc16fd8978f3d 100644 (file)
@@ -1265,3 +1265,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
index 2853b1b2b2f4f65fcca594b762a6d86bd60e6e51..341abef8b1c1a5a86f55aec228569d15d2754899 100644 (file)
@@ -2880,14 +2880,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
diff --git a/Misc/NEWS.d/next/Library/2022-11-06-12-44-51.gh-issue-99155.vLZOzi.rst b/Misc/NEWS.d/next/Library/2022-11-06-12-44-51.gh-issue-99155.vLZOzi.rst
new file mode 100644 (file)
index 0000000..a84caa6
--- /dev/null
@@ -0,0 +1 @@
+Fix :class:`statistics.NormalDist` pickle with ``0`` and ``1`` protocols.