summaryrefslogtreecommitdiff
path: root/pyflakes/test/test_type_annotations.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyflakes/test/test_type_annotations.py')
-rw-r--r--pyflakes/test/test_type_annotations.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/pyflakes/test/test_type_annotations.py b/pyflakes/test/test_type_annotations.py
index 1fa4f5e..15c658b 100644
--- a/pyflakes/test/test_type_annotations.py
+++ b/pyflakes/test/test_type_annotations.py
@@ -42,6 +42,7 @@ class TestTypeAnnotations(TestCase):
def test_typingExtensionsOverload(self):
"""Allow intentional redefinitions via @typing_extensions.overload"""
self.flakes("""
+ import typing_extensions
from typing_extensions import overload
@overload
@@ -54,6 +55,17 @@ class TestTypeAnnotations(TestCase):
def f(s):
return s
+
+ @typing_extensions.overload
+ def g(s): # type: (None) -> None
+ pass
+
+ @typing_extensions.overload
+ def g(s): # type: (int) -> int
+ pass
+
+ def g(s):
+ return s
""")
@skipIf(version_info < (3, 5), 'new in Python 3.5')
@@ -426,3 +438,64 @@ class TestTypeAnnotations(TestCase):
def f(c: C, /): ...
""")
+
+ @skipIf(version_info < (3,), 'new in Python 3')
+ def test_partially_quoted_type_annotation(self):
+ self.flakes("""
+ from queue import Queue
+ from typing import Optional
+
+ def f() -> Optional['Queue[str]']:
+ return None
+ """)
+
+ @skipIf(version_info < (3,), 'new in Python 3')
+ def test_literal_type_typing(self):
+ self.flakes("""
+ from typing import Literal
+
+ def f(x: Literal['some string']) -> None:
+ return None
+ """)
+
+ @skipIf(version_info < (3,), 'new in Python 3')
+ def test_literal_type_typing_extensions(self):
+ self.flakes("""
+ from typing_extensions import Literal
+
+ def f(x: Literal['some string']) -> None:
+ return None
+ """)
+
+ @skipIf(version_info < (3,), 'new in Python 3')
+ def test_literal_union_type_typing(self):
+ self.flakes("""
+ from typing import Literal
+
+ def f(x: Literal['some string', 'foo bar']) -> None:
+ return None
+ """)
+
+ @skipIf(version_info < (3,), 'new in Python 3')
+ def test_deferred_twice_annotation(self):
+ self.flakes("""
+ from queue import Queue
+ from typing import Optional
+
+
+ def f() -> "Optional['Queue[str]']":
+ return None
+ """)
+
+ @skipIf(version_info < (3, 7), 'new in Python 3.7')
+ def test_partial_string_annotations_with_future_annotations(self):
+ self.flakes("""
+ from __future__ import annotations
+
+ from queue import Queue
+ from typing import Optional
+
+
+ def f() -> Optional['Queue[str]']:
+ return None
+ """)