Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow nesting of Annotated with TypedDict special forms inside TypedDicts #18165

Merged

Conversation

brianschubert
Copy link
Collaborator

This is allowed per the typing spec.

Updates the TypeAnalyzer to remember whether TypedDict special forms are allowed when visiting Annotated types.

@brianschubert
Copy link
Collaborator Author

With this, mypy passes the typeddicts_readonly and typeddicts_required conformance tests:

diff --git a/conformance/results/mypy/typeddicts_readonly.toml b/conformance/results/mypy/typeddicts_readonly.toml
index 6dc58bb..ccc3d4b 100644
--- a/conformance/results/mypy/typeddicts_readonly.toml
+++ b/conformance/results/mypy/typeddicts_readonly.toml
@@ -7,11 +7,9 @@ typeddicts_readonly.py:24: error: ReadOnly TypedDict key "members" TypedDict is
 typeddicts_readonly.py:36: error: ReadOnly TypedDict key "members" TypedDict is mutated  [typeddict-readonly-mutated]
 typeddicts_readonly.py:50: error: ReadOnly TypedDict key "title" TypedDict is mutated  [typeddict-readonly-mutated]
 typeddicts_readonly.py:51: error: ReadOnly TypedDict key "year" TypedDict is mutated  [typeddict-readonly-mutated]
-typeddicts_readonly.py:56: error: NotRequired[] can be only used in a TypedDict definition  [valid-type]
 typeddicts_readonly.py:60: error: ReadOnly TypedDict key "title" TypedDict is mutated  [typeddict-readonly-mutated]
+typeddicts_readonly.py:61: error: ReadOnly TypedDict key "year" TypedDict is mutated  [typeddict-readonly-mutated]
 """
-conformance_automated = "Fail"
+conformance_automated = "Pass"
 errors_diff = """
-Line 61: Expected 1 errors
-Line 56: Unexpected errors ['typeddicts_readonly.py:56: error: NotRequired[] can be only used in a TypedDict definition  [valid-type]']
 """
diff --git a/conformance/results/mypy/typeddicts_required.toml b/conformance/results/mypy/typeddicts_required.toml
index 7cf6994..acc0431 100644
--- a/conformance/results/mypy/typeddicts_required.toml
+++ b/conformance/results/mypy/typeddicts_required.toml
@@ -7,11 +7,7 @@ typeddicts_required.py:12: error: Required[] can be only used in a TypedDict def
 typeddicts_required.py:19: error: NotRequired[] can be only used in a TypedDict definition  [valid-type]
 typeddicts_required.py:62: error: "Required[]" type cannot be nested  [valid-type]
 typeddicts_required.py:63: error: "NotRequired[]" type cannot be nested  [valid-type]
-typeddicts_required.py:68: error: Required[] can be only used in a TypedDict definition  [valid-type]
-typeddicts_required.py:70: error: Required[] can be only used in a TypedDict definition  [valid-type]
 """
-conformance_automated = "Fail"
+conformance_automated = "Pass"
 errors_diff = """
-Line 68: Unexpected errors ['typeddicts_required.py:68: error: Required[] can be only used in a TypedDict definition  [valid-type]']
-Line 70: Unexpected errors ['typeddicts_required.py:70: error: Required[] can be only used in a TypedDict definition  [valid-type]']
 """
diff --git a/conformance/results/mypy/version.toml b/conformance/results/mypy/version.toml
index bdefc8c..842fec5 100644
--- a/conformance/results/mypy/version.toml
+++ b/conformance/results/mypy/version.toml
@@ -1,2 +1,2 @@
-version = "mypy 1.13.0"
-test_duration = 2.7
+version = "mypy 1.14.0+dev.ec6dc1bc20da15dc0d8dd916d487dd3cbb7f6b69"
+test_duration = 7.0

This comment has been minimized.

Copy link
Contributor

According to mypy_primer, this change doesn't affect type check results on a corpus of open source code. ✅

@hauntsaninja hauntsaninja merged commit 11c58a7 into python:master Nov 19, 2024
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants