[pypy-commit] pypy py3.6: add missing file

cfbolz pypy.commits at gmail.com
Sun Feb 24 09:22:59 EST 2019


Author: Carl Friedrich Bolz-Tereick <cfbolz at gmx.de>
Branch: py3.6
Changeset: r96146:57e5774b430e
Date: 2019-02-24 15:22 +0100
http://bitbucket.org/pypy/pypy/changeset/57e5774b430e/

Log:	add missing file

diff --git a/lib-python/3/test/mod_generics_cache.py b/lib-python/3/test/mod_generics_cache.py
new file mode 100644
--- /dev/null
+++ b/lib-python/3/test/mod_generics_cache.py
@@ -0,0 +1,53 @@
+"""Module for testing the behavior of generics across different modules."""
+
+import sys
+from textwrap import dedent
+from typing import TypeVar, Generic, Optional
+
+
+if sys.version_info[:2] >= (3, 6):
+    exec(dedent("""
+    default_a: Optional['A'] = None
+    default_b: Optional['B'] = None
+
+    T = TypeVar('T')
+
+
+    class A(Generic[T]):
+        some_b: 'B'
+
+
+    class B(Generic[T]):
+        class A(Generic[T]):
+            pass
+
+        my_inner_a1: 'B.A'
+        my_inner_a2: A
+        my_outer_a: 'A'  # unless somebody calls get_type_hints with localns=B.__dict__
+    """))
+else:  # This should stay in sync with the syntax above.
+    __annotations__ = dict(
+        default_a=Optional['A'],
+        default_b=Optional['B'],
+    )
+    default_a = None
+    default_b = None
+
+    T = TypeVar('T')
+
+
+    class A(Generic[T]):
+        __annotations__ = dict(
+            some_b='B'
+        )
+
+
+    class B(Generic[T]):
+        class A(Generic[T]):
+            pass
+
+        __annotations__ = dict(
+            my_inner_a1='B.A',
+            my_inner_a2=A,
+            my_outer_a='A'  # unless somebody calls get_type_hints with localns=B.__dict__
+        )


More information about the pypy-commit mailing list