Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Disallow no-args generic aliases when using PEP 613 explicit aliases#18173

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged

Conversation

@brianschubert
Copy link
Collaborator

@brianschubertbrianschubert commentedNov 19, 2024
edited
Loading

Per the type system conformance tests,this is ok:

ListAlias=listx=ListAlias[int]()# OK

Whilethis is not:

ListAlias:TypeAlias=listx:ListAlias[int]# E: already specialized

Mypy currently permits both. This PR makes mypy reject the latter case, improving conformance.

As part of this, no-args PEP 613 explicit aliases are no longer eagerly expanded.

(Also removed a stale comment referencingTypeAliasExpr.no_args, which was removed in#15924)

@brianschubert
Copy link
CollaboratorAuthor

Conformance results diff for this PR (aliases_explicit now passes):

diff --git a/conformance/results/mypy/aliases_explicit.toml b/conformance/results/mypy/aliases_explicit.tomlindex ee05762..f07e7ad 100644--- a/conformance/results/mypy/aliases_explicit.toml+++ b/conformance/results/mypy/aliases_explicit.toml@@ -24,11 +24,11 @@ aliases_explicit.py:89: error: Invalid type: try using Literal[1] instead?  [val aliases_explicit.py:90: error: Invalid type alias: expression is not a valid type  [valid-type] aliases_explicit.py:90: error: Function "list" could always be true in boolean context  [truthy-function] aliases_explicit.py:91: error: Invalid type alias: expression is not a valid type  [valid-type]+aliases_explicit.py:100: error: Bad number of arguments for type alias, expected 0, given 1  [type-arg] aliases_explicit.py:101: error: "UnionType[list[Any], set[Any]]" not callable  [operator] aliases_explicit.py:102: error: Bad number of arguments for type alias, expected 0, given 1  [type-arg] """-conformance_automated = "Fail"+conformance_automated = "Pass" errors_diff = """-Line 100: Expected 1 errors """ ignore_errors = ["Function \"list\" could always be true in boolean context"]diff --git a/conformance/results/mypy/version.toml b/conformance/results/mypy/version.tomlindex 699a899..1d9b711 100644--- a/conformance/results/mypy/version.toml+++ b/conformance/results/mypy/version.toml@@ -1,2 +1,2 @@-version = "mypy 1.14.0+dev.21587f01045246a9ecb54a054a5ba03e20cbbd19"-test_duration = 4.5+version = "mypy 1.14.0+dev.6563c362fd5ee8e1fbf17775eab5dcad5a0a7459"+test_duration = 5.1

@github-actions

This comment has been minimized.

This is expected, now that the below branch is no longer taken forPEP 613 aliases. Implicit aliases are now the only case with eagerexpansion.https://github.com/python/mypy/blob/21587f01045246a9ecb54a054a5ba03e20cbbd19/mypy/typeanal.py#L2147-L2151
@github-actions

This comment has been minimized.

@brianschubert
Copy link
CollaboratorAuthor

The psycopg hits are true positives from aliases of the form_GQueue: TypeAlias = queue.Queue insideif TYPE_CHECKING blocks. Pyright already rejects these. It should be simple for them to migrate these to explicit generic aliases a la_GQueue: TypeAlias = queue.Queue[T].

@github-actions
Copy link
Contributor

Diff frommypy_primer, showing the effect of this PR on open source code:

psycopg (https://github.com/psycopg/psycopg)+ psycopg/psycopg/_acompat.py:43: error: Bad number of arguments for type alias, expected 0, given 1  [type-arg]+ psycopg/psycopg/_acompat.py:52: error: Returning Any from function declared to return "T"  [no-any-return]+ psycopg/psycopg/_acompat.py:55: error: Bad number of arguments for type alias, expected 0, given 1  [type-arg]+ psycopg_pool/psycopg_pool/_acompat.py:63: error: Bad number of arguments for type alias, expected 0, given 1  [type-arg]+ psycopg_pool/psycopg_pool/_acompat.py:72: error: Returning Any from function declared to return "T"  [no-any-return]+ psycopg_pool/psycopg_pool/_acompat.py:105: error: Bad number of arguments for type alias, expected 0, given 1  [type-arg]

@JukkaLJukkaL merged commitc859cb1 intopython:masterDec 20, 2024
19 checks passed
hauntsaninja added a commit to hauntsaninja/mypy that referenced this pull requestJan 23, 2025
This is a partial revert ofpython#18173 to unblock the 1.15 releaseFixespython#18488
hauntsaninja added a commit that referenced this pull requestJan 23, 2025
This is a partial revert of#18173 to unblock the 1.15 releaseFixes#18488
wesleywright pushed a commit that referenced this pull requestJan 23, 2025
This is a partial revert of#18173 to unblock the 1.15 releaseFixes#18488
x612skm pushed a commit to x612skm/mypy-dev that referenced this pull requestFeb 24, 2025
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@JukkaLJukkaLJukkaL approved these changes

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

2 participants

@brianschubert@JukkaL

[8]ページ先頭

©2009-2025 Movatter.jp