From e17ddddbfa041a3f5d1cde314010d7820020d680 Mon Sep 17 00:00:00 2001 From: Yurii Karabas <1998uriyyo@gmail.com> Date: Fri, 23 Jul 2021 19:54:01 +0300 Subject: [PATCH 1/3] Add __reduce__ to NewType. Update pickle test --- Lib/test/test_typing.py | 17 +++++++++-------- Lib/typing.py | 3 +++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 13ac395f769c6b..85cb527a24db24 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -3755,16 +3755,17 @@ def test_repr(self): def test_pickle(self): UserAge = self.module.NewType('UserAge', float) for proto in range(pickle.HIGHEST_PROTOCOL + 1): - pickled = pickle.dumps(UserId, proto) - loaded = pickle.loads(pickled) - self.assertIs(loaded, UserId) + with self.subTest(proto=proto): + pickled = pickle.dumps(UserId, proto) + loaded = pickle.loads(pickled) + self.assertIs(loaded, UserId) - pickled = pickle.dumps(self.UserName, proto) - loaded = pickle.loads(pickled) - self.assertIs(loaded, self.UserName) + pickled = pickle.dumps(self.UserName, proto) + loaded = pickle.loads(pickled) + self.assertIs(loaded, self.UserName) - with self.assertRaises(pickle.PicklingError): - pickle.dumps(UserAge, proto) + with self.assertRaises(pickle.PicklingError): + pickle.dumps(UserAge, proto) class NewTypePythonTests(NewTypeTests, BaseTestCase): diff --git a/Lib/typing.py b/Lib/typing.py index 198837cc7203fc..98b0f6bf3d19b6 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -2404,6 +2404,9 @@ def __or__(self, other): def __ror__(self, other): return Union[other, self] + def __reduce__(self): + return self.__name__ + # Python-version-specific alias (Python 2: unicode; Python 3: str) Text = str From 1f33fdf9b119c6cd5aa6d344667e09b0aed47c73 Mon Sep 17 00:00:00 2001 From: Yurii Karabas <1998uriyyo@gmail.com> Date: Fri, 23 Jul 2021 20:16:34 +0300 Subject: [PATCH 2/3] Use __qualname__ instead of __name__ --- Lib/typing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/typing.py b/Lib/typing.py index 98b0f6bf3d19b6..db977c36afa648 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -2405,7 +2405,7 @@ def __ror__(self, other): return Union[other, self] def __reduce__(self): - return self.__name__ + return self.__qualname__ # Python-version-specific alias (Python 2: unicode; Python 3: str) From 5c6cd2be67017c931c4ecef5fdd0e39a25b4e338 Mon Sep 17 00:00:00 2001 From: Yurii Karabas <1998uriyyo@gmail.com> Date: Fri, 23 Jul 2021 20:25:04 +0300 Subject: [PATCH 3/3] Update typing and test_typing --- Lib/typing.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/Lib/typing.py b/Lib/typing.py index db977c36afa648..198837cc7203fc 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -2404,9 +2404,6 @@ def __or__(self, other): def __ror__(self, other): return Union[other, self] - def __reduce__(self): - return self.__qualname__ - # Python-version-specific alias (Python 2: unicode; Python 3: str) Text = str