Mailing List Archive

bpo-46386: improve `test_typing:test_immutability_by_copy_and_pickle` (GH-30613)
https://github.com/python/cpython/commit/09087b8519316608b85131ee7455b664c00c38d2
commit: 09087b8519316608b85131ee7455b664c00c38d2
branch: main
author: Nikita Sobolev <mail@sobolevn.me>
committer: corona10 <donghee.na92@gmail.com>
date: 2022-01-16T16:32:11+09:00
summary:

bpo-46386: improve `test_typing:test_immutability_by_copy_and_pickle` (GH-30613)

files:
M Lib/test/test_typing.py

diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py
index cf719df6da1d7..c8a077e2f1ff5 100644
--- a/Lib/test/test_typing.py
+++ b/Lib/test/test_typing.py
@@ -2130,22 +2130,30 @@ class Node(Generic[T]): ...
def test_immutability_by_copy_and_pickle(self):
# Special forms like Union, Any, etc., generic aliases to containers like List,
# Mapping, etc., and type variabcles are considered immutable by copy and pickle.
- global TP, TPB, TPV # for pickle
+ global TP, TPB, TPV, PP # for pickle
TP = TypeVar('TP')
TPB = TypeVar('TPB', bound=int)
TPV = TypeVar('TPV', bytes, str)
- for X in [.TP, TPB, TPV, List, typing.Mapping, ClassVar, typing.Iterable,
+ PP = ParamSpec('PP')
+ for X in [.TP, TPB, TPV, PP,
+ List, typing.Mapping, ClassVar, typing.Iterable,
Union, Any, Tuple, Callable]:
- self.assertIs(copy(X), X)
- self.assertIs(deepcopy(X), X)
- self.assertIs(pickle.loads(pickle.dumps(X)), X)
+ with self.subTest(thing=X):
+ self.assertIs(copy(X), X)
+ self.assertIs(deepcopy(X), X)
+ for proto in range(pickle.HIGHEST_PROTOCOL + 1):
+ self.assertIs(pickle.loads(pickle.dumps(X, proto)), X)
+ del TP, TPB, TPV, PP
+
# Check that local type variables are copyable.
TL = TypeVar('TL')
TLB = TypeVar('TLB', bound=int)
TLV = TypeVar('TLV', bytes, str)
- for X in [TL, TLB, TLV]:
- self.assertIs(copy(X), X)
- self.assertIs(deepcopy(X), X)
+ PL = ParamSpec('PL')
+ for X in [TL, TLB, TLV, PL]:
+ with self.subTest(thing=X):
+ self.assertIs(copy(X), X)
+ self.assertIs(deepcopy(X), X)

def test_copy_generic_instances(self):
T = TypeVar('T')

_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
https://mail.python.org/mailman/listinfo/python-checkins