Skip to content

Commit a95fd46

Browse files
committed
Feedback
1 parent b66f18e commit a95fd46

File tree

2 files changed

+34
-27
lines changed

2 files changed

+34
-27
lines changed

src/test_typing_extensions.py

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4341,13 +4341,13 @@ class Unclosed(TypedDict, closed=False):
43414341
class ChildUnclosed(Closed, Unclosed):
43424342
...
43434343

4344-
self.assertFalse(ChildUnclosed.__closed__)
4344+
self.assertIs(ChildUnclosed.__closed__, None)
43454345
self.assertEqual(ChildUnclosed.__extra_items__, NoExtraItems)
43464346

43474347
class ChildClosed(Unclosed, Closed):
43484348
...
43494349

4350-
self.assertFalse(ChildClosed.__closed__)
4350+
self.assertIs(ChildClosed.__closed__, None)
43514351
self.assertEqual(ChildClosed.__extra_items__, NoExtraItems)
43524352

43534353
def test_extra_items_class_arg(self):
@@ -4783,8 +4783,8 @@ class ExtraReadOnly(TypedDict):
47834783
self.assertEqual(ExtraReadOnly.__optional_keys__, frozenset({}))
47844784
self.assertEqual(ExtraReadOnly.__readonly_keys__, frozenset({'__extra_items__'}))
47854785
self.assertEqual(ExtraReadOnly.__mutable_keys__, frozenset({}))
4786-
self.assertEqual(ExtraReadOnly.__extra_items__, NoExtraItems)
4787-
self.assertFalse(ExtraReadOnly.__closed__)
4786+
self.assertIs(ExtraReadOnly.__extra_items__, NoExtraItems)
4787+
self.assertIs(ExtraReadOnly.__closed__, None)
47884788

47894789
class ExtraRequired(TypedDict):
47904790
__extra_items__: Required[str]
@@ -4793,8 +4793,8 @@ class ExtraRequired(TypedDict):
47934793
self.assertEqual(ExtraRequired.__optional_keys__, frozenset({}))
47944794
self.assertEqual(ExtraRequired.__readonly_keys__, frozenset({}))
47954795
self.assertEqual(ExtraRequired.__mutable_keys__, frozenset({'__extra_items__'}))
4796-
self.assertEqual(ExtraRequired.__extra_items__, NoExtraItems)
4797-
self.assertFalse(ExtraRequired.__closed__)
4796+
self.assertIs(ExtraRequired.__extra_items__, NoExtraItems)
4797+
self.assertIs(ExtraRequired.__closed__, None)
47984798

47994799
class ExtraNotRequired(TypedDict):
48004800
__extra_items__: NotRequired[str]
@@ -4803,8 +4803,8 @@ class ExtraNotRequired(TypedDict):
48034803
self.assertEqual(ExtraNotRequired.__optional_keys__, frozenset({'__extra_items__'}))
48044804
self.assertEqual(ExtraNotRequired.__readonly_keys__, frozenset({}))
48054805
self.assertEqual(ExtraNotRequired.__mutable_keys__, frozenset({'__extra_items__'}))
4806-
self.assertEqual(ExtraNotRequired.__extra_items__, NoExtraItems)
4807-
self.assertFalse(ExtraNotRequired.__closed__)
4806+
self.assertIs(ExtraNotRequired.__extra_items__, NoExtraItems)
4807+
self.assertIs(ExtraNotRequired.__closed__, None)
48084808

48094809
@skipIf(TYPING_3_14_0, "Only supported on <3.14")
48104810
def test_closed_inheritance_legacy(self):
@@ -4817,7 +4817,7 @@ class Base(TypedDict, closed=True):
48174817
self.assertEqual(Base.__mutable_keys__, frozenset({}))
48184818
self.assertEqual(Base.__annotations__, {})
48194819
self.assertEqual(Base.__extra_items__, ReadOnly[Union[str, None]])
4820-
self.assertTrue(Base.__closed__)
4820+
self.assertIs(Base.__closed__, True)
48214821

48224822
class Child(Base, closed=True):
48234823
a: int
@@ -4828,7 +4828,7 @@ class Child(Base, closed=True):
48284828
self.assertEqual(Child.__readonly_keys__, frozenset({}))
48294829
self.assertEqual(Child.__mutable_keys__, frozenset({'a'}))
48304830
self.assertEqual(Child.__annotations__, {"a": int})
4831-
self.assertEqual(Child.__extra_items__, int)
4831+
self.assertIs(Child.__extra_items__, int)
48324832
self.assertIs(Child.__closed__, True)
48334833

48344834
class GrandChild(Child, closed=True):
@@ -4839,8 +4839,8 @@ class GrandChild(Child, closed=True):
48394839
self.assertEqual(GrandChild.__readonly_keys__, frozenset({}))
48404840
self.assertEqual(GrandChild.__mutable_keys__, frozenset({'a'}))
48414841
self.assertEqual(GrandChild.__annotations__, {"a": int})
4842-
self.assertEqual(GrandChild.__extra_items__, str)
4843-
self.assertTrue(GrandChild.__closed__)
4842+
self.assertIs(GrandChild.__extra_items__, str)
4843+
self.assertIs(GrandChild.__closed__, True)
48444844

48454845
def test_closed_inheritance(self):
48464846
class Base(TypedDict, extra_items=ReadOnly[Union[str, None]]):
@@ -4852,7 +4852,7 @@ class Base(TypedDict, extra_items=ReadOnly[Union[str, None]]):
48524852
self.assertEqual(Base.__mutable_keys__, frozenset({"a"}))
48534853
self.assertEqual(Base.__annotations__, {"a": int})
48544854
self.assertEqual(Base.__extra_items__, ReadOnly[Union[str, None]])
4855-
self.assertFalse(Base.__closed__)
4855+
self.assertIs(Base.__closed__, None)
48564856

48574857
class Child(Base, extra_items=int):
48584858
a: str
@@ -4862,8 +4862,8 @@ class Child(Base, extra_items=int):
48624862
self.assertEqual(Child.__readonly_keys__, frozenset({}))
48634863
self.assertEqual(Child.__mutable_keys__, frozenset({'a'}))
48644864
self.assertEqual(Child.__annotations__, {"a": str})
4865-
self.assertEqual(Child.__extra_items__, int)
4866-
self.assertFalse(Child.__closed__)
4865+
self.assertIs(Child.__extra_items__, int)
4866+
self.assertIs(Child.__closed__, None)
48674867

48684868
class GrandChild(Child, closed=True):
48694869
a: float
@@ -4873,21 +4873,31 @@ class GrandChild(Child, closed=True):
48734873
self.assertEqual(GrandChild.__readonly_keys__, frozenset({}))
48744874
self.assertEqual(GrandChild.__mutable_keys__, frozenset({'a'}))
48754875
self.assertEqual(GrandChild.__annotations__, {"a": float})
4876-
self.assertEqual(GrandChild.__extra_items__, Never)
4877-
self.assertTrue(GrandChild.__closed__)
4876+
self.assertIs(GrandChild.__extra_items__, NoExtraItems)
4877+
self.assertIs(GrandChild.__closed__, True)
4878+
4879+
class GrandGrandChild(GrandChild):
4880+
...
4881+
self.assertEqual(GrandGrandChild.__required_keys__, frozenset({'a'}))
4882+
self.assertEqual(GrandGrandChild.__optional_keys__, frozenset({}))
4883+
self.assertEqual(GrandGrandChild.__readonly_keys__, frozenset({}))
4884+
self.assertEqual(GrandGrandChild.__mutable_keys__, frozenset({'a'}))
4885+
self.assertEqual(GrandGrandChild.__annotations__, {"a": float})
4886+
self.assertIs(GrandGrandChild.__extra_items__, NoExtraItems)
4887+
self.assertIs(GrandGrandChild.__closed__, None)
48784888

48794889
def test_implicit_extra_items(self):
48804890
class Base(TypedDict):
48814891
a: int
48824892

4883-
self.assertEqual(Base.__extra_items__, NoExtraItems)
4884-
self.assertFalse(Base.__closed__)
4893+
self.assertIs(Base.__extra_items__, NoExtraItems)
4894+
self.assertIs(Base.__closed__, None)
48854895

48864896
class ChildA(Base, closed=True):
48874897
...
48884898

4889-
self.assertEqual(ChildA.__extra_items__, Never)
4890-
self.assertTrue(ChildA.__closed__)
4899+
self.assertEqual(ChildA.__extra_items__, NoExtraItems)
4900+
self.assertIs(ChildA.__closed__, True)
48914901

48924902
@skipIf(TYPING_3_14_0, "Backwards compatibility only for Python 3.13")
48934903
def test_implicit_extra_items_before_3_14(self):
@@ -4896,8 +4906,8 @@ class Base(TypedDict):
48964906
class ChildB(Base, closed=True):
48974907
__extra_items__: None
48984908

4899-
self.assertEqual(ChildB.__extra_items__, type(None))
4900-
self.assertTrue(ChildB.__closed__)
4909+
self.assertIs(ChildB.__extra_items__, type(None))
4910+
self.assertIs(ChildB.__closed__, True)
49014911

49024912
@skipIf(
49034913
TYPING_3_13_0,
@@ -4907,7 +4917,7 @@ class ChildB(Base, closed=True):
49074917
def test_backwards_compatibility(self):
49084918
with self.assertWarns(DeprecationWarning):
49094919
TD = TypedDict("TD", closed=int)
4910-
self.assertFalse(TD.__closed__)
4920+
self.assertIs(TD.__closed__, None)
49114921
self.assertEqual(TD.__annotations__, {"closed": int})
49124922

49134923

src/typing_extensions.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,9 +1043,6 @@ def __new__(cls, name, bases, ns, *, total=True, closed=None,
10431043
readonly_keys.update(base_dict.get('__readonly_keys__', ()))
10441044
mutable_keys.update(base_dict.get('__mutable_keys__', ()))
10451045

1046-
if closed and extra_items_type is NoExtraItems:
1047-
extra_items_type = Never
1048-
10491046
# This was specified in an earlier version of PEP 728. Support
10501047
# is retained for backwards compatibility, but only for Python
10511048
# 3.13 and lower.

0 commit comments

Comments
 (0)