Skip to content

Commit 916f9d0

Browse files
committed
another test
1 parent 539b167 commit 916f9d0

File tree

1 file changed

+35
-1
lines changed

1 file changed

+35
-1
lines changed

src/test_typing_extensions.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4807,7 +4807,7 @@ class ExtraNotRequired(TypedDict):
48074807
self.assertFalse(ExtraNotRequired.__closed__)
48084808

48094809
@skipIf(TYPING_3_14_0, "Only supported on <3.14")
4810-
def test_closed_inheritance(self):
4810+
def test_closed_inheritance_legacy(self):
48114811
class Base(TypedDict, closed=True):
48124812
__extra_items__: ReadOnly[Union[str, None]]
48134813

@@ -4842,6 +4842,40 @@ class GrandChild(Child, closed=True):
48424842
self.assertEqual(GrandChild.__extra_items__, str)
48434843
self.assertTrue(GrandChild.__closed__)
48444844

4845+
def test_closed_inheritance(self):
4846+
class Base(TypedDict, extra_items=ReadOnly[Union[str, None]]):
4847+
a: int
4848+
4849+
self.assertEqual(Base.__required_keys__, frozenset({"a"}))
4850+
self.assertEqual(Base.__optional_keys__, frozenset({}))
4851+
self.assertEqual(Base.__readonly_keys__, frozenset({}))
4852+
self.assertEqual(Base.__mutable_keys__, frozenset({"a"}))
4853+
self.assertEqual(Base.__annotations__, {"a": int})
4854+
self.assertEqual(Base.__extra_items__, ReadOnly[Union[str, None]])
4855+
self.assertFalse(Base.__closed__)
4856+
4857+
class Child(Base, extra_items=int):
4858+
a: str
4859+
4860+
self.assertEqual(Child.__required_keys__, frozenset({'a'}))
4861+
self.assertEqual(Child.__optional_keys__, frozenset({}))
4862+
self.assertEqual(Child.__readonly_keys__, frozenset({}))
4863+
self.assertEqual(Child.__mutable_keys__, frozenset({'a'}))
4864+
self.assertEqual(Child.__annotations__, {"a": str})
4865+
self.assertEqual(Child.__extra_items__, int)
4866+
self.assertFalse(Child.__closed__)
4867+
4868+
class GrandChild(Child, closed=True):
4869+
a: float
4870+
4871+
self.assertEqual(GrandChild.__required_keys__, frozenset({'a'}))
4872+
self.assertEqual(GrandChild.__optional_keys__, frozenset({}))
4873+
self.assertEqual(GrandChild.__readonly_keys__, frozenset({}))
4874+
self.assertEqual(GrandChild.__mutable_keys__, frozenset({'a'}))
4875+
self.assertEqual(GrandChild.__annotations__, {"a": float})
4876+
self.assertEqual(GrandChild.__extra_items__, Never)
4877+
self.assertTrue(GrandChild.__closed__)
4878+
48454879
def test_implicit_extra_items(self):
48464880
class Base(TypedDict):
48474881
a: int

0 commit comments

Comments
 (0)