]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] GH-99155: Fix `NormalDist` pickle with `0` and `1` protocols (GH-99156). ...
authorNikita Sobolev <mail@sobolevn.me>
Mon, 7 Nov 2022 09:41:08 +0000 (12:41 +0300)
committerGitHub <noreply@github.com>
Mon, 7 Nov 2022 09:41:08 +0000 (01:41 -0800)
(cherry picked from commit d7a00f1e8eee05fc5ae97ea1ef0615feefce887b)

Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
Automerge-Triggered-By: GH:rhettinger
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 9598ab6d090d0d70bf99e92e088cdbfc5263fd5d..3b3b43babb42e2f07d04b95c08d7a743d30dc920 100644 (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
index 6de98241c294d79d3070115b4ec8a9b749f7be6e..3e172e974e125dd371fa41140a454b055da1413c 100644 (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
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.