summaryrefslogtreecommitdiff
path: root/tests/run/typing_module.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run/typing_module.py')
-rw-r--r--tests/run/typing_module.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/run/typing_module.py b/tests/run/typing_module.py
new file mode 100644
index 000000000..c2e27e2ec
--- /dev/null
+++ b/tests/run/typing_module.py
@@ -0,0 +1,42 @@
+# mode: run
+# tag: pure3.6
+
+from __future__ import print_function
+
+import cython
+
+try:
+ import typing
+ from typing import List
+ from typing import Set as _SET_
+except ImportError:
+ pass # this should allow Cython to interpret the directives even when the module doesn't exist
+
+
+def test_subscripted_types():
+ """
+ >>> test_subscripted_types()
+ dict object
+ list object
+ set object
+ """
+ a: typing.Dict[int, float] = {}
+ b: List[int] = []
+ c: _SET_[object] = set()
+
+ print(cython.typeof(a) + (" object" if not cython.compiled else ""))
+ print(cython.typeof(b) + (" object" if not cython.compiled else ""))
+ print(cython.typeof(c) + (" object" if not cython.compiled else ""))
+
+@cython.cclass
+class TestClassVar:
+ """
+ >>> TestClassVar.cls
+ 5
+ >>> TestClassVar.regular # doctest: +IGNORE_EXCEPTION_DETAIL
+ Traceback (most recent call last):
+ ...
+ AttributeError:
+ """
+ regular: int
+ cls: typing.ClassVar[int] = 5 # this is a little redundant really because the assignment ensures it