[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