diff options
author | Jelle Zijlstra <jelle.zijlstra@gmail.com> | 2023-05-18 15:56:15 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-18 15:56:15 -0700 |
commit | b9dce3aec46bf5190400bd8239fdd4ea9e64d674 (patch) | |
tree | dc4e08c00d835d3f45b66e5be4b73df0d94ddbe3 /Lib/test | |
parent | 1c55e8d00728ceabd97cd1a5bd4906c9875a80c6 (diff) | |
download | cpython-b9dce3aec46bf5190400bd8239fdd4ea9e64d674.tar.gz cpython-b9dce3aec46bf5190400bd8239fdd4ea9e64d674.zip |
gh-104549: Set __module__ on TypeAliasType (#104550)
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/mod_generics_cache.py | 5 | ||||
-rw-r--r-- | Lib/test/test_type_aliases.py | 20 |
2 files changed, 24 insertions, 1 deletions
diff --git a/Lib/test/mod_generics_cache.py b/Lib/test/mod_generics_cache.py index 9d8b56cf03c..6c1ee2fec83 100644 --- a/Lib/test/mod_generics_cache.py +++ b/Lib/test/mod_generics_cache.py @@ -1,6 +1,6 @@ """Module for testing the behavior of generics across different modules.""" -from typing import TypeVar, Generic, Optional +from typing import TypeVar, Generic, Optional, TypeAliasType default_a: Optional['A'] = None default_b: Optional['B'] = None @@ -19,3 +19,6 @@ class B(Generic[T]): my_inner_a1: 'B.A' my_inner_a2: A my_outer_a: 'A' # unless somebody calls get_type_hints with localns=B.__dict__ + +type Alias = int +OldStyle = TypeAliasType("OldStyle", int) diff --git a/Lib/test/test_type_aliases.py b/Lib/test/test_type_aliases.py index d2abb932f58..56d150d67af 100644 --- a/Lib/test/test_type_aliases.py +++ b/Lib/test/test_type_aliases.py @@ -1,6 +1,8 @@ +import pickle import types import unittest from test.support import check_syntax_error, run_code +from test import mod_generics_cache from typing import Callable, TypeAliasType, TypeVar, get_args @@ -155,6 +157,7 @@ class TypeAliasConstructorTest(unittest.TestCase): self.assertEqual(TA.__name__, "TA") self.assertIs(TA.__value__, int) self.assertEqual(TA.__type_params__, ()) + self.assertEqual(TA.__module__, __name__) def test_generic(self): T = TypeVar("T") @@ -162,12 +165,14 @@ class TypeAliasConstructorTest(unittest.TestCase): self.assertEqual(TA.__name__, "TA") self.assertEqual(TA.__value__, list[T]) self.assertEqual(TA.__type_params__, (T,)) + self.assertEqual(TA.__module__, __name__) def test_keywords(self): TA = TypeAliasType(name="TA", value=int) self.assertEqual(TA.__name__, "TA") self.assertIs(TA.__value__, int) self.assertEqual(TA.__type_params__, ()) + self.assertEqual(TA.__module__, __name__) def test_errors(self): with self.assertRaises(TypeError): @@ -202,3 +207,18 @@ class TypeAliasTypeTest(unittest.TestCase): union3 = list[range] | Alias1 self.assertIsInstance(union3, types.UnionType) self.assertEqual(get_args(union3), (list[range], Alias1)) + + def test_module(self): + self.assertEqual(TypeAliasType.__module__, "typing") + type Alias = int + self.assertEqual(Alias.__module__, __name__) + self.assertEqual(mod_generics_cache.Alias.__module__, + mod_generics_cache.__name__) + self.assertEqual(mod_generics_cache.OldStyle.__module__, + mod_generics_cache.__name__) + + def test_pickling(self): + pickled = pickle.dumps(mod_generics_cache.Alias) + self.assertIs(pickle.loads(pickled), mod_generics_cache.Alias) + pickled = pickle.dumps(mod_generics_cache.OldStyle) + self.assertIs(pickle.loads(pickled), mod_generics_cache.OldStyle) |