@@ -1898,12 +1898,14 @@ c_key: Literal["c"]
18981898d: Outer
18991899
19001900reveal_type(d[a_key]) # N: Revealed type is "builtins.int"
1901- reveal_type(d[b_key]) # N: Revealed type is "builtins.str"
1901+ reveal_type(d[b_key]) # N: Revealed type is "builtins.str" \
1902+ # E: TypedDict "Outer" key "b" is not required and might not be present.
1903+ reveal_type(d.get(b_key)) # N: Revealed type is "builtins.str"
19021904d[c_key] # E: TypedDict "Outer" has no key "c"
19031905
1904- reveal_type(d.get(a_key, u)) # N: Revealed type is "Union[ builtins.int, __main__.Unrelated] "
1906+ reveal_type(d.get(a_key, u)) # N: Revealed type is "builtins.int"
19051907reveal_type(d.get(b_key, u)) # N: Revealed type is "Union[builtins.str, __main__.Unrelated]"
1906- reveal_type(d.get(c_key, u)) # N: Revealed type is "builtins.object "
1908+ reveal_type(d.get(c_key, u)) # N: Revealed type is "__main__.Unrelated "
19071909
19081910reveal_type(d.pop(a_key)) # E: Key "a" of TypedDict "Outer" cannot be deleted \
19091911 # N: Revealed type is "builtins.int"
@@ -1946,8 +1948,8 @@ u: Unrelated
19461948reveal_type(a[int_key_good]) # N: Revealed type is "builtins.int"
19471949reveal_type(b[int_key_good]) # N: Revealed type is "builtins.int"
19481950reveal_type(c[str_key_good]) # N: Revealed type is "builtins.int"
1949- reveal_type(c.get(str_key_good, u)) # N: Revealed type is "Union[ builtins.int, __main__.Unrelated] "
1950- reveal_type(c.get(str_key_bad, u)) # N: Revealed type is "builtins.object "
1951+ reveal_type(c.get(str_key_good, u)) # N: Revealed type is "builtins.int"
1952+ reveal_type(c.get(str_key_bad, u)) # N: Revealed type is "__main__.Unrelated "
19511953
19521954a[int_key_bad] # E: Tuple index out of range
19531955b[int_key_bad] # E: Tuple index out of range
@@ -1987,6 +1989,7 @@ tup2[idx_bad] # E: Tuple index out of range
19871989[out]
19881990
19891991[case testLiteralIntelligentIndexingTypedDictUnions]
1992+ # flags: --strict-optional
19901993from typing_extensions import Literal, Final
19911994from mypy_extensions import TypedDict
19921995
@@ -2014,12 +2017,12 @@ bad_keys: Literal["a", "bad"]
20142017
20152018reveal_type(test[good_keys]) # N: Revealed type is "Union[__main__.A, __main__.B]"
20162019reveal_type(test.get(good_keys)) # N: Revealed type is "Union[__main__.A, __main__.B]"
2017- reveal_type(test.get(good_keys, 3)) # N: Revealed type is "Union[__main__.A, Literal[3]?, __main__.B]"
2020+ reveal_type(test.get(good_keys, 3)) # N: Revealed type is "Union[__main__.A, __main__.B]"
20182021reveal_type(test.pop(optional_keys)) # N: Revealed type is "Union[__main__.D, __main__.E]"
20192022reveal_type(test.pop(optional_keys, 3)) # N: Revealed type is "Union[__main__.D, __main__.E, Literal[3]?]"
20202023reveal_type(test.setdefault(good_keys, AAndB())) # N: Revealed type is "Union[__main__.A, __main__.B]"
2021- reveal_type(test.get(bad_keys)) # N: Revealed type is "builtins.object "
2022- reveal_type(test.get(bad_keys, 3)) # N: Revealed type is "builtins.object "
2024+ reveal_type(test.get(bad_keys)) # N: Revealed type is "Union[__main__.A, None] "
2025+ reveal_type(test.get(bad_keys, 3)) # N: Revealed type is "Union[__main__.A, Literal[3]?] "
20232026del test[optional_keys]
20242027
20252028
@@ -2039,6 +2042,7 @@ del test[bad_keys] # E: Key "a" of TypedDict "Test" cannot be delet
20392042[out]
20402043
20412044[case testLiteralIntelligentIndexingMultiTypedDict]
2045+ # flags: --strict-optional
20422046from typing import Union
20432047from typing_extensions import Literal
20442048from mypy_extensions import TypedDict
@@ -2067,9 +2071,9 @@ x[bad_keys] # E: TypedDict "D1" has no key "d" \
20672071
20682072reveal_type(x[good_keys]) # N: Revealed type is "Union[__main__.B, __main__.C]"
20692073reveal_type(x.get(good_keys)) # N: Revealed type is "Union[__main__.B, __main__.C]"
2070- reveal_type(x.get(good_keys, 3)) # N: Revealed type is "Union[__main__.B, Literal[3]?, __main__.C]"
2071- reveal_type(x.get(bad_keys)) # N: Revealed type is "builtins.object "
2072- reveal_type(x.get(bad_keys, 3)) # N: Revealed type is "builtins.object "
2074+ reveal_type(x.get(good_keys, 3)) # N: Revealed type is "Union[__main__.B, __main__.C]"
2075+ reveal_type(x.get(bad_keys)) # N: Revealed type is "Union[__main__.A, __main__.B, __main__.C, None, __main__.D] "
2076+ reveal_type(x.get(bad_keys, 3)) # N: Revealed type is "Union[__main__.A, __main__.B, __main__.C, Literal[3]?, __main__.D] "
20732077
20742078[builtins fixtures/dict.pyi]
20752079[typing fixtures/typing-typeddict.pyi]
0 commit comments