Open brianschubert opened 6 days ago
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.toml
index 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.toml
index 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
Diff from mypy_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]
Diff from mypy_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]
The psycopg hits are true positives from aliases of the form _GQueue: TypeAlias = queue.Queue
inside if 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]
.
Diff from mypy_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]
Per the type system conformance tests, this is ok:
While this is not:
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 referencing
TypeAliasExpr.no_args
, which was removed in #15924)