Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
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 1497607)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
  • Loading branch information
JelleZijlstra authored and miss-islington committed May 24, 2023
commit 8c2873735a67b3a9b1f472b395acd0d1dd47fe1c
25 changes: 22 additions & 3 deletions Lib/test/test_typing.py
Original file line number Diff line number Diff line change
Expand Up @@ -6756,10 +6756,29 @@ class Wrong(*bases):
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
Comment thread
JelleZijlstra marked this conversation as resolved.
Outdated
self.assertIs(is_typeddict(TypedDict), False)

def test_get_type_hints(self):
self.assertEqual(
Expand Down