Skip to content

Commit

Permalink
[3.10] pythongh-102721: Improve coverage of `_collections_abc._Callab…
Browse files Browse the repository at this point in the history
…leGenericAlias`
  • Loading branch information
sobolevn committed Mar 17, 2023
1 parent 744a41b commit 06a619b
Showing 1 changed file with 20 additions and 7 deletions.
27 changes: 20 additions & 7 deletions Lib/test/test_typing.py
Original file line number Diff line number Diff line change
Expand Up @@ -556,14 +556,27 @@ def test_weakref(self):
self.assertEqual(weakref.ref(alias)(), alias)

def test_pickle(self):
global T_pickle, P_pickle # needed for pickling
Callable = self.Callable
alias = Callable[[int, str], float]
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
s = pickle.dumps(alias, proto)
loaded = pickle.loads(s)
self.assertEqual(alias.__origin__, loaded.__origin__)
self.assertEqual(alias.__args__, loaded.__args__)
self.assertEqual(alias.__parameters__, loaded.__parameters__)
T_pickle = TypeVar('T_pickle')
P_pickle = ParamSpec('P_pickle')

samples = [
Callable[[int, str], float],
Callable[P_pickle, int],
Callable[P_pickle, T_pickle],
Callable[Concatenate[int, P_pickle], int],
]
for alias in samples:
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
with self.subTest(alias=alias, proto=proto):
s = pickle.dumps(alias, proto)
loaded = pickle.loads(s)
self.assertEqual(alias.__origin__, loaded.__origin__)
self.assertEqual(alias.__args__, loaded.__args__)
self.assertEqual(alias.__parameters__, loaded.__parameters__)

del T_pickle, P_pickle # cleaning up global state

def test_var_substitution(self):
Callable = self.Callable
Expand Down

0 comments on commit 06a619b

Please sign in to comment.