summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2023-10-22 19:14:50 (GMT)
committerGitHub <noreply@github.com>2023-10-22 19:14:50 (GMT)
commit9e73c71aa90d8785e2e107595b4f9927a9a06a13 (patch)
treef992fc1da7b7ca997910c8208040358a0e3191f0
parent06fe8685a1af80daaad401f3e0869ec794965211 (diff)
downloadcpython-9e73c71aa90d8785e2e107595b4f9927a9a06a13.zip
cpython-9e73c71aa90d8785e2e107595b4f9927a9a06a13.tar.gz
cpython-9e73c71aa90d8785e2e107595b4f9927a9a06a13.tar.bz2
[3.12] gh-110196: Fix ipaddress.IPv6Address.__reduce__ (GH-110198) (GH-111191)
(cherry picked from commit 767f416feb551f495bacfff1e9ba1e6672c2f24e) Co-authored-by: Tian Gao <gaogaotiantian@hotmail.com>
-rw-r--r--Lib/ipaddress.py3
-rw-r--r--Lib/test/test_ipaddress.py7
-rw-r--r--Misc/NEWS.d/next/Library/2023-10-02-05-23-27.gh-issue-110196.djwt0z.rst1
3 files changed, 11 insertions, 0 deletions
diff --git a/Lib/ipaddress.py b/Lib/ipaddress.py
index af1d5c4..9ca90fd 100644
--- a/Lib/ipaddress.py
+++ b/Lib/ipaddress.py
@@ -1938,6 +1938,9 @@ class IPv6Address(_BaseV6, _BaseAddress):
return False
return self._scope_id == getattr(other, '_scope_id', None)
+ def __reduce__(self):
+ return (self.__class__, (str(self),))
+
@property
def scope_id(self):
"""Identifier of a particular zone of the address's scope.
diff --git a/Lib/test/test_ipaddress.py b/Lib/test/test_ipaddress.py
index a5388b2..fc27628 100644
--- a/Lib/test/test_ipaddress.py
+++ b/Lib/test/test_ipaddress.py
@@ -4,6 +4,7 @@
"""Unittest for ipaddress module."""
+import copy
import unittest
import re
import contextlib
@@ -542,11 +543,17 @@ class AddressTestCase_v6(BaseTestCase, CommonTestMixin_v6):
def test_pickle(self):
self.pickle_test('2001:db8::')
+ self.pickle_test('2001:db8::%scope')
def test_weakref(self):
weakref.ref(self.factory('2001:db8::'))
weakref.ref(self.factory('2001:db8::%scope'))
+ def test_copy(self):
+ addr = self.factory('2001:db8::%scope')
+ self.assertEqual(addr, copy.copy(addr))
+ self.assertEqual(addr, copy.deepcopy(addr))
+
class NetmaskTestMixin_v4(CommonTestMixin_v4):
"""Input validation on interfaces and networks is very similar"""
diff --git a/Misc/NEWS.d/next/Library/2023-10-02-05-23-27.gh-issue-110196.djwt0z.rst b/Misc/NEWS.d/next/Library/2023-10-02-05-23-27.gh-issue-110196.djwt0z.rst
new file mode 100644
index 0000000..341f338
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-10-02-05-23-27.gh-issue-110196.djwt0z.rst
@@ -0,0 +1 @@
+Add ``__reduce__`` method to :class:`IPv6Address` in order to keep ``scope_id``