[3.11] Improve test coverage for is_typeddict (GH-104884) (#104888)

In particular, it's important to test that is_typeddict(TypedDict)
returns False.
(cherry picked from commit 1497607a8e)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
This commit is contained in:
Miss Islington (bot) 2023-05-24 12:23:35 -07:00 committed by GitHub
parent fa7d8ce21f
commit 5e911673e4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -6756,10 +6756,23 @@ 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)
# The TypedDict constructor is not itself a TypedDict
self.assertIs(is_typeddict(TypedDict), False)
def test_get_type_hints(self):
self.assertEqual(