aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test
diff options
context:
space:
mode:
authorJelle Zijlstra <jelle.zijlstra@gmail.com>2023-05-18 15:56:15 -0700
committerGitHub <noreply@github.com>2023-05-18 15:56:15 -0700
commitb9dce3aec46bf5190400bd8239fdd4ea9e64d674 (patch)
treedc4e08c00d835d3f45b66e5be4b73df0d94ddbe3 /Lib/test
parent1c55e8d00728ceabd97cd1a5bd4906c9875a80c6 (diff)
downloadcpython-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.py5
-rw-r--r--Lib/test/test_type_aliases.py20
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)