diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2023-05-24 19:21:28 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-24 19:21:28 (GMT) |
commit | 3d91d034a0d74804a356d773f54230e62c9924ba (patch) | |
tree | 1ac3e7e2ee2fa1eb7d2b74afd81cb8cfdcfefbaa /Lib | |
parent | ddc29c8fdb59849e7eebd8e72462b14a98994874 (diff) | |
download | cpython-3d91d034a0d74804a356d773f54230e62c9924ba.zip cpython-3d91d034a0d74804a356d773f54230e62c9924ba.tar.gz cpython-3d91d034a0d74804a356d773f54230e62c9924ba.tar.bz2 |
[3.12] Improve test coverage for is_typeddict (GH-104884) (#104889)
Improve test coverage for is_typeddict (GH-104884)
In particular, it's important to test that is_typeddict(TypedDict)
returns False.
(cherry picked from commit 1497607a8e99f1103c40368dd5f9057f0146a520)
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_typing.py | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index a3fad6f..e68ce6e 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -7223,10 +7223,29 @@ class TypedDictTests(BaseTestCase): pass def test_is_typeddict(self): - assert is_typeddict(Point2D) is True - assert is_typeddict(Union[str, int]) is False + self.assertIs(is_typeddict(Point2D), True) + self.assertIs(is_typeddict(Union[str, int]), False) # classes, not instances - assert is_typeddict(Point2D()) is False + self.assertIs(is_typeddict(Point2D()), False) + call_based = TypedDict('call_based', {'a': int}) + self.assertIs(is_typeddict(call_based), True) + self.assertIs(is_typeddict(call_based()), False) + + T = TypeVar("T") + class BarGeneric(TypedDict, Generic[T]): + a: T + self.assertIs(is_typeddict(BarGeneric), True) + self.assertIs(is_typeddict(BarGeneric[int]), False) + self.assertIs(is_typeddict(BarGeneric()), False) + + class NewGeneric[T](TypedDict): + a: T + self.assertIs(is_typeddict(NewGeneric), True) + self.assertIs(is_typeddict(NewGeneric[int]), False) + self.assertIs(is_typeddict(NewGeneric()), False) + + # The TypedDict constructor is not itself a TypedDict + self.assertIs(is_typeddict(TypedDict), False) def test_get_type_hints(self): self.assertEqual( |