From ae7fbdfa60ae28c142b6a8a2669d966a41b22f02 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Tue, 20 Oct 2026 12:45:48 -0700 Subject: [PATCH 1/3] conformance: do not require error for Final + ClassVar And remove the test case in the ClassVar file; it's redundant as qualifiers_final_annotation already tests it in a more isolated way. Fixes #2371. --- .../results/mypy/classes_classvar.toml | 35 ++++++++-------- .../mypy/qualifiers_final_annotation.toml | 38 +++++++++--------- .../results/pycroscope/classes_classvar.toml | 23 +++++------ .../qualifiers_final_annotation.toml | 34 ++++++++-------- .../results/pyrefly/classes_classvar.toml | 31 +++++++------- .../pyrefly/qualifiers_final_annotation.toml | 40 +++++++++---------- .../results/pyright/classes_classvar.toml | 21 +++++----- .../pyright/qualifiers_final_annotation.toml | 40 +++++++++---------- conformance/results/ty/classes_classvar.toml | 23 +++++------ .../ty/qualifiers_final_annotation.toml | 36 ++++++++--------- .../results/zuban/classes_classvar.toml | 27 ++++++------- .../zuban/qualifiers_final_annotation.toml | 32 +++++++-------- conformance/tests/classes_classvar.py | 1 - .../tests/qualifiers_final_annotation.py | 6 ++- 14 files changed, 191 insertions(+), 196 deletions(-) diff --git a/conformance/results/mypy/classes_classvar.toml b/conformance/results/mypy/classes_classvar.toml index 238b36032..4ffec75ae 100644 --- a/conformance/results/mypy/classes_classvar.toml +++ b/conformance/results/mypy/classes_classvar.toml @@ -10,30 +10,29 @@ classes_classvar.py:40: error: ClassVar[...] must have at most one type argument classes_classvar.py:41: error: Invalid type: try using Literal[3] instead? [valid-type] classes_classvar.py:42: error: Name "var" is not defined; did you mean "var1" or "vars"? [name-defined] classes_classvar.py:54: error: Incompatible types in assignment (expression has type "dict[Never, Never]", variable has type "list[str]") [assignment] -classes_classvar.py:56: error: Variable should not be annotated with both ClassVar and Final [misc] -classes_classvar.py:57: error: Invalid type: ClassVar nested inside other type [valid-type] -classes_classvar.py:69: error: Invalid type: ClassVar nested inside other type [valid-type] +classes_classvar.py:56: error: Invalid type: ClassVar nested inside other type [valid-type] +classes_classvar.py:68: error: Invalid type: ClassVar nested inside other type [valid-type] +classes_classvar.py:70: error: ClassVar can only be used for assignments in class body [misc] classes_classvar.py:71: error: ClassVar can only be used for assignments in class body [misc] classes_classvar.py:72: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:73: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:75: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:79: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:80: error: ClassVar[...] can't be used inside a type alias [valid-type] -classes_classvar.py:89: error: ClassVar[...] can't be used inside a TypedDict [valid-type] -classes_classvar.py:94: error: ClassVar[...] can't be used inside a NamedTuple [valid-type] -classes_classvar.py:127: error: Cannot assign to class variable "stats" via instance [misc] -classes_classvar.py:146: error: All protocol members must have explicitly declared types [misc] -classes_classvar.py:156: error: Incompatible types in assignment (expression has type "ProtoAImpl", variable has type "ProtoA") [assignment] -classes_classvar.py:156: note: "ProtoAImpl" is missing following "ProtoA" protocol member: -classes_classvar.py:156: note: z -classes_classvar.py:156: note: Protocol member ProtoA.x expected class variable, got instance variable -classes_classvar.py:156: note: Protocol member ProtoA.y expected class variable, got instance variable +classes_classvar.py:74: error: ClassVar can only be used for assignments in class body [misc] +classes_classvar.py:78: error: ClassVar can only be used for assignments in class body [misc] +classes_classvar.py:79: error: ClassVar[...] can't be used inside a type alias [valid-type] +classes_classvar.py:88: error: ClassVar[...] can't be used inside a TypedDict [valid-type] +classes_classvar.py:93: error: ClassVar[...] can't be used inside a NamedTuple [valid-type] +classes_classvar.py:126: error: Cannot assign to class variable "stats" via instance [misc] +classes_classvar.py:145: error: All protocol members must have explicitly declared types [misc] +classes_classvar.py:155: error: Incompatible types in assignment (expression has type "ProtoAImpl", variable has type "ProtoA") [assignment] +classes_classvar.py:155: note: "ProtoAImpl" is missing following "ProtoA" protocol member: +classes_classvar.py:155: note: z +classes_classvar.py:155: note: Protocol member ProtoA.x expected class variable, got instance variable +classes_classvar.py:155: note: Protocol member ProtoA.y expected class variable, got instance variable """ conformance_automated = "Fail" errors_diff = """ Line 47: Expected 1 errors Line 48: Expected 1 errors Line 49: Expected 1 errors -Line 69: Unexpected errors ['classes_classvar.py:69: error: Invalid type: ClassVar nested inside other type [valid-type]'] -Line 146: Unexpected errors ['classes_classvar.py:146: error: All protocol members must have explicitly declared types [misc]'] +Line 68: Unexpected errors ['classes_classvar.py:68: error: Invalid type: ClassVar nested inside other type [valid-type]'] +Line 145: Unexpected errors ['classes_classvar.py:145: error: All protocol members must have explicitly declared types [misc]'] """ diff --git a/conformance/results/mypy/qualifiers_final_annotation.toml b/conformance/results/mypy/qualifiers_final_annotation.toml index 099d55b0c..bcf8edc7e 100644 --- a/conformance/results/mypy/qualifiers_final_annotation.toml +++ b/conformance/results/mypy/qualifiers_final_annotation.toml @@ -20,31 +20,31 @@ qualifiers_final_annotation.py:71: error: Cannot assign to final name "RATE" [m qualifiers_final_annotation.py:81: error: Cannot assign to final attribute "DEFAULT_ID" [misc] qualifiers_final_annotation.py:94: error: Cannot assign to final name "BORDER_WIDTH" [misc] qualifiers_final_annotation.py:96: error: Cannot assign to final name "__private" [misc] -qualifiers_final_annotation.py:107: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type] -qualifiers_final_annotation.py:108: error: Variable should not be annotated with both ClassVar and Final [misc] -qualifiers_final_annotation.py:118: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type] -qualifiers_final_annotation.py:121: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type] -qualifiers_final_annotation.py:131: error: Final[...] can't be used inside a TypedDict [valid-type] -qualifiers_final_annotation.py:136: error: Final[...] can't be used inside a NamedTuple [valid-type] -qualifiers_final_annotation.py:145: error: Invalid "NamedTuple()" field name [misc] -qualifiers_final_annotation.py:147: error: Unexpected keyword argument "x" for "N" [call-arg] -qualifiers_final_annotation.py:147: error: Unexpected keyword argument "y" for "N" [call-arg] -qualifiers_final_annotation.py:148: error: Unexpected keyword argument "a" for "N" [call-arg] +qualifiers_final_annotation.py:109: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type] +qualifiers_final_annotation.py:110: error: Variable should not be annotated with both ClassVar and Final [misc] +qualifiers_final_annotation.py:120: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type] +qualifiers_final_annotation.py:123: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type] +qualifiers_final_annotation.py:133: error: Final[...] can't be used inside a TypedDict [valid-type] +qualifiers_final_annotation.py:138: error: Final[...] can't be used inside a NamedTuple [valid-type] +qualifiers_final_annotation.py:147: error: Invalid "NamedTuple()" field name [misc] qualifiers_final_annotation.py:149: error: Unexpected keyword argument "x" for "N" [call-arg] qualifiers_final_annotation.py:149: error: Unexpected keyword argument "y" for "N" [call-arg] -qualifiers_final_annotation.py:155: error: Cannot assign to final name "ID1" [misc] -qualifiers_final_annotation.py:159: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:150: error: Unexpected keyword argument "a" for "N" [call-arg] +qualifiers_final_annotation.py:151: error: Unexpected keyword argument "x" for "N" [call-arg] +qualifiers_final_annotation.py:151: error: Unexpected keyword argument "y" for "N" [call-arg] +qualifiers_final_annotation.py:157: error: Cannot assign to final name "ID1" [misc] qualifiers_final_annotation.py:161: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:166: error: Incompatible types in assignment (expression has type "TextIOWrapper[_WrappedBuffer]", variable has type "int") [assignment] -qualifiers_final_annotation.py:169: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:180: error: Cannot assign to final name "TEN" [misc] -qualifiers_final_annotation.py:184: error: Cannot assign to final name "PI" [misc] +qualifiers_final_annotation.py:163: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:168: error: Incompatible types in assignment (expression has type "TextIOWrapper[_WrappedBuffer]", variable has type "int") [assignment] +qualifiers_final_annotation.py:171: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:182: error: Cannot assign to final name "TEN" [misc] +qualifiers_final_annotation.py:186: error: Cannot assign to final name "PI" [misc] """ conformance_automated = "Fail" errors_diff = """ -Line 163: Expected 1 errors +Line 165: Expected 1 errors Line 59: Unexpected errors ['qualifiers_final_annotation.py:59: error: Cannot assign to final attribute "ID6" [misc]'] Line 96: Unexpected errors ['qualifiers_final_annotation.py:96: error: Cannot assign to final name "__private" [misc]'] -Line 145: Unexpected errors ['qualifiers_final_annotation.py:145: error: Invalid "NamedTuple()" field name [misc]'] -Line 147: Unexpected errors ['qualifiers_final_annotation.py:147: error: Unexpected keyword argument "x" for "N" [call-arg]', 'qualifiers_final_annotation.py:147: error: Unexpected keyword argument "y" for "N" [call-arg]'] +Line 147: Unexpected errors ['qualifiers_final_annotation.py:147: error: Invalid "NamedTuple()" field name [misc]'] +Line 149: Unexpected errors ['qualifiers_final_annotation.py:149: error: Unexpected keyword argument "x" for "N" [call-arg]', 'qualifiers_final_annotation.py:149: error: Unexpected keyword argument "y" for "N" [call-arg]'] """ diff --git a/conformance/results/pycroscope/classes_classvar.toml b/conformance/results/pycroscope/classes_classvar.toml index 4d3f0e1dd..05a0c55e1 100644 --- a/conformance/results/pycroscope/classes_classvar.toml +++ b/conformance/results/pycroscope/classes_classvar.toml @@ -9,16 +9,15 @@ output = """ ./classes_classvar.py:48:10: ClassVar type cannot include type parameters [classvar_type_parameters] ./classes_classvar.py:49:10: ClassVar type cannot include type parameters [classvar_type_parameters] ./classes_classvar.py:54:4: Incompatible assignment: expected list[str], got Literal[{}] [incompatible_assignment] -./classes_classvar.py:56:10: Final cannot be combined with ClassVar [invalid_qualifier] -./classes_classvar.py:57:11: Unrecognized annotation typing.ClassVar[] [invalid_annotation] -./classes_classvar.py:71:25: Unexpected ClassVar annotation [invalid_qualifier] -./classes_classvar.py:72:11: ClassVar can only be used for assignments in class body [invalid_qualifier] -./classes_classvar.py:73:17: ClassVar can only be used for assignments in class body [invalid_qualifier] -./classes_classvar.py:75:25: Unexpected ClassVar annotation [invalid_qualifier] -./classes_classvar.py:79:7: ClassVar can only be used for assignments in class body [invalid_qualifier] -./classes_classvar.py:80:19: ClassVar cannot be used in type aliases [invalid_qualifier] -./classes_classvar.py:89:7: Unexpected ClassVar annotation [invalid_qualifier] -./classes_classvar.py:94:7: ClassVar cannot be used for NamedTuple fields [invalid_qualifier] -./classes_classvar.py:127:0: Cannot assign to class variable 'stats' via instance [incompatible_assignment] -./classes_classvar.py:156:0: Incompatible assignment: expected ./classes_classvar.py.ProtoA, got ./classes_classvar.py.ProtoAImpl [incompatible_assignment] +./classes_classvar.py:56:11: Unrecognized annotation typing.ClassVar[] [invalid_annotation] +./classes_classvar.py:70:25: Unexpected ClassVar annotation [invalid_qualifier] +./classes_classvar.py:71:11: ClassVar can only be used for assignments in class body [invalid_qualifier] +./classes_classvar.py:72:17: ClassVar can only be used for assignments in class body [invalid_qualifier] +./classes_classvar.py:74:25: Unexpected ClassVar annotation [invalid_qualifier] +./classes_classvar.py:78:7: ClassVar can only be used for assignments in class body [invalid_qualifier] +./classes_classvar.py:79:19: ClassVar cannot be used in type aliases [invalid_qualifier] +./classes_classvar.py:88:7: Unexpected ClassVar annotation [invalid_qualifier] +./classes_classvar.py:93:7: ClassVar cannot be used for NamedTuple fields [invalid_qualifier] +./classes_classvar.py:126:0: Cannot assign to class variable 'stats' via instance [incompatible_assignment] +./classes_classvar.py:155:0: Incompatible assignment: expected ./classes_classvar.py.ProtoA, got ./classes_classvar.py.ProtoAImpl [incompatible_assignment] """ diff --git a/conformance/results/pycroscope/qualifiers_final_annotation.toml b/conformance/results/pycroscope/qualifiers_final_annotation.toml index 0784a273e..7a3ad21aa 100644 --- a/conformance/results/pycroscope/qualifiers_final_annotation.toml +++ b/conformance/results/pycroscope/qualifiers_final_annotation.toml @@ -15,21 +15,21 @@ output = """ ./qualifiers_final_annotation.py:71:0: Cannot assign to final name RATE [incompatible_assignment] ./qualifiers_final_annotation.py:81:0: Cannot assign to final name DEFAULT_ID [incompatible_assignment] ./qualifiers_final_annotation.py:94:4: Cannot override final attribute BORDER_WIDTH [incompatible_override] -./qualifiers_final_annotation.py:107:12: Final cannot be combined with ClassVar [invalid_qualifier] -./qualifiers_final_annotation.py:108:12: Final cannot be combined with ClassVar [invalid_qualifier] -./qualifiers_final_annotation.py:118:3: Unrecognized annotation typing.Final[] [invalid_annotation] -./qualifiers_final_annotation.py:121:13: Unexpected Final annotation [invalid_qualifier] -./qualifiers_final_annotation.py:131:7: Unexpected Final annotation [invalid_qualifier] -./qualifiers_final_annotation.py:136:4: Final class attributes without initializers must be assigned in __init__ [invalid_qualifier] -./qualifiers_final_annotation.py:148:0: In call to pycroscope.signature.N: Missing required argument 'x' [incompatible_call] -./qualifiers_final_annotation.py:149:4: Incompatible argument type for x: expected int but got Literal[''] [incompatible_argument] -./qualifiers_final_annotation.py:149:10: Incompatible argument type for y: expected int but got Literal[''] [incompatible_argument] -./qualifiers_final_annotation.py:155:4: Cannot assign to final name ID1 [incompatible_assignment] -./qualifiers_final_annotation.py:159:4: Cannot assign to final name x [incompatible_assignment] -./qualifiers_final_annotation.py:161:9: Cannot assign to final name x [incompatible_assignment] -./qualifiers_final_annotation.py:163:8: Cannot assign to final name x [incompatible_assignment] -./qualifiers_final_annotation.py:166:29: Cannot assign to final name x [incompatible_assignment] -./qualifiers_final_annotation.py:169:8: Cannot assign to final name x [incompatible_assignment] -./qualifiers_final_annotation.py:180:0: Cannot assign to final name TEN [incompatible_assignment] -./qualifiers_final_annotation.py:184:0: Cannot assign to final name PI [incompatible_assignment] +./qualifiers_final_annotation.py:109:12: Final cannot be combined with ClassVar [invalid_qualifier] +./qualifiers_final_annotation.py:110:12: Final cannot be combined with ClassVar [invalid_qualifier] +./qualifiers_final_annotation.py:120:3: Unrecognized annotation typing.Final[] [invalid_annotation] +./qualifiers_final_annotation.py:123:13: Unexpected Final annotation [invalid_qualifier] +./qualifiers_final_annotation.py:133:7: Unexpected Final annotation [invalid_qualifier] +./qualifiers_final_annotation.py:138:4: Final class attributes without initializers must be assigned in __init__ [invalid_qualifier] +./qualifiers_final_annotation.py:150:0: In call to pycroscope.signature.N: Missing required argument 'x' [incompatible_call] +./qualifiers_final_annotation.py:151:4: Incompatible argument type for x: expected int but got Literal[''] [incompatible_argument] +./qualifiers_final_annotation.py:151:10: Incompatible argument type for y: expected int but got Literal[''] [incompatible_argument] +./qualifiers_final_annotation.py:157:4: Cannot assign to final name ID1 [incompatible_assignment] +./qualifiers_final_annotation.py:161:4: Cannot assign to final name x [incompatible_assignment] +./qualifiers_final_annotation.py:163:9: Cannot assign to final name x [incompatible_assignment] +./qualifiers_final_annotation.py:165:8: Cannot assign to final name x [incompatible_assignment] +./qualifiers_final_annotation.py:168:29: Cannot assign to final name x [incompatible_assignment] +./qualifiers_final_annotation.py:171:8: Cannot assign to final name x [incompatible_assignment] +./qualifiers_final_annotation.py:182:0: Cannot assign to final name TEN [incompatible_assignment] +./qualifiers_final_annotation.py:186:0: Cannot assign to final name PI [incompatible_assignment] """ diff --git a/conformance/results/pyrefly/classes_classvar.toml b/conformance/results/pyrefly/classes_classvar.toml index 92c5a5257..cefd65531 100644 --- a/conformance/results/pyrefly/classes_classvar.toml +++ b/conformance/results/pyrefly/classes_classvar.toml @@ -10,20 +10,19 @@ ERROR classes_classvar.py:47:20-21: `ClassVar` arguments may not contain any typ ERROR classes_classvar.py:48:20-27: `ClassVar` arguments may not contain any type variables [invalid-annotation] ERROR classes_classvar.py:49:20-36: `ClassVar` arguments may not contain any type variables [invalid-annotation] ERROR classes_classvar.py:54:33-35: `dict[@_, @_]` is not assignable to `list[str]` [bad-assignment] -ERROR classes_classvar.py:56:17-30: `ClassVar` may not be nested inside `Final` [invalid-annotation] -ERROR classes_classvar.py:57:17-30: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR classes_classvar.py:71:26-34: `ClassVar` is only allowed inside a class body [invalid-annotation] -ERROR classes_classvar.py:71:26-39: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR classes_classvar.py:72:12-20: `ClassVar` is only allowed inside a class body [invalid-annotation] -ERROR classes_classvar.py:72:12-25: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR classes_classvar.py:73:9-16: Cannot set field `xx` [read-only] -ERROR classes_classvar.py:75:26-34: `ClassVar` is only allowed inside a class body [invalid-annotation] -ERROR classes_classvar.py:75:26-39: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR classes_classvar.py:79:8-16: `ClassVar` is only allowed inside a class body [invalid-annotation] -ERROR classes_classvar.py:79:8-21: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR classes_classvar.py:80:20-33: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR classes_classvar.py:89:5-6: `ClassVar` may not be used for TypedDict members [invalid-annotation] -ERROR classes_classvar.py:94:5-6: `ClassVar` may not be used for NamedTuple members [invalid-annotation] -ERROR classes_classvar.py:127:1-19: Cannot set field `stats` [read-only] -ERROR classes_classvar.py:156:13-25: `ProtoAImpl` is not assignable to `ProtoA` [bad-assignment] +ERROR classes_classvar.py:56:17-30: `ClassVar` is not allowed in this context [invalid-annotation] +ERROR classes_classvar.py:70:26-34: `ClassVar` is only allowed inside a class body [invalid-annotation] +ERROR classes_classvar.py:70:26-39: `ClassVar` is not allowed in this context [invalid-annotation] +ERROR classes_classvar.py:71:12-20: `ClassVar` is only allowed inside a class body [invalid-annotation] +ERROR classes_classvar.py:71:12-25: `ClassVar` is not allowed in this context [invalid-annotation] +ERROR classes_classvar.py:72:9-16: Cannot set field `xx` [read-only] +ERROR classes_classvar.py:74:26-34: `ClassVar` is only allowed inside a class body [invalid-annotation] +ERROR classes_classvar.py:74:26-39: `ClassVar` is not allowed in this context [invalid-annotation] +ERROR classes_classvar.py:78:8-16: `ClassVar` is only allowed inside a class body [invalid-annotation] +ERROR classes_classvar.py:78:8-21: `ClassVar` is not allowed in this context [invalid-annotation] +ERROR classes_classvar.py:79:20-33: `ClassVar` is not allowed in this context [invalid-annotation] +ERROR classes_classvar.py:88:5-6: `ClassVar` may not be used for TypedDict members [invalid-annotation] +ERROR classes_classvar.py:93:5-6: `ClassVar` may not be used for NamedTuple members [invalid-annotation] +ERROR classes_classvar.py:126:1-19: Cannot set field `stats` [read-only] +ERROR classes_classvar.py:155:13-25: `ProtoAImpl` is not assignable to `ProtoA` [bad-assignment] """ diff --git a/conformance/results/pyrefly/qualifiers_final_annotation.toml b/conformance/results/pyrefly/qualifiers_final_annotation.toml index 4da0650c7..902c4f8ef 100644 --- a/conformance/results/pyrefly/qualifiers_final_annotation.toml +++ b/conformance/results/pyrefly/qualifiers_final_annotation.toml @@ -14,24 +14,24 @@ ERROR qualifiers_final_annotation.py:67:9-17: Cannot set field `ID7` [read-only] ERROR qualifiers_final_annotation.py:71:8-11: Cannot assign to variable `RATE` because it is marked final [bad-assignment] ERROR qualifiers_final_annotation.py:81:1-18: Cannot set field `DEFAULT_ID` [read-only] ERROR qualifiers_final_annotation.py:94:5-17: `BORDER_WIDTH` is declared as final in parent class `ClassC` [bad-override] -ERROR qualifiers_final_annotation.py:107:5-11: `Final` may not be nested inside `ClassVar` [invalid-annotation] -ERROR qualifiers_final_annotation.py:108:19-27: `ClassVar` may not be nested inside `Final` [invalid-annotation] -ERROR qualifiers_final_annotation.py:118:9-19: `Final` is not allowed in this context [invalid-annotation] -ERROR qualifiers_final_annotation.py:121:14-19: `Final` is only allowed on a class or local variable annotation [invalid-annotation] -ERROR qualifiers_final_annotation.py:121:14-30: `Final` is not allowed in this context [invalid-annotation] -ERROR qualifiers_final_annotation.py:131:5-6: `Final` may not be used for TypedDict members [invalid-annotation] -ERROR qualifiers_final_annotation.py:136:5-6: `Final` may not be used for NamedTuple members [invalid-annotation] -ERROR qualifiers_final_annotation.py:148:2-7: Missing argument `x` in function `N.__new__` [missing-argument] -ERROR qualifiers_final_annotation.py:148:2-7: Missing argument `y` in function `N.__new__` [missing-argument] -ERROR qualifiers_final_annotation.py:148:3-4: Unexpected keyword argument `a` in function `N.__new__` [unexpected-keyword] -ERROR qualifiers_final_annotation.py:149:5-7: Argument `Literal['']` is not assignable to parameter `x` with type `int` in function `N.__new__` [bad-argument-type] -ERROR qualifiers_final_annotation.py:149:11-13: Argument `Literal['']` is not assignable to parameter `y` with type `int` in function `N.__new__` [bad-argument-type] -ERROR qualifiers_final_annotation.py:155:11-12: Cannot assign to variable `ID1` because it is marked final [bad-assignment] -ERROR qualifiers_final_annotation.py:159:5-11: Cannot assign to variable `x` because it is marked final [bad-assignment] -ERROR qualifiers_final_annotation.py:161:15-16: Cannot assign to variable `x` because it is marked final [bad-assignment] -ERROR qualifiers_final_annotation.py:163:14-23: Cannot assign to variable `x` because it is marked final [bad-assignment] -ERROR qualifiers_final_annotation.py:166:10-26: Cannot assign to variable `x` because it is marked final [bad-assignment] -ERROR qualifiers_final_annotation.py:169:5-11: Cannot assign to variable `x` because it is marked final [bad-assignment] -ERROR qualifiers_final_annotation.py:180:1-4: Cannot assign to `TEN` because it is imported as final [bad-assignment] -ERROR qualifiers_final_annotation.py:184:1-3: Cannot assign to `PI` because it is imported as final [bad-assignment] +ERROR qualifiers_final_annotation.py:109:5-11: `Final` may not be nested inside `ClassVar` [invalid-annotation] +ERROR qualifiers_final_annotation.py:110:19-27: `ClassVar` may not be nested inside `Final` [invalid-annotation] +ERROR qualifiers_final_annotation.py:120:9-19: `Final` is not allowed in this context [invalid-annotation] +ERROR qualifiers_final_annotation.py:123:14-19: `Final` is only allowed on a class or local variable annotation [invalid-annotation] +ERROR qualifiers_final_annotation.py:123:14-30: `Final` is not allowed in this context [invalid-annotation] +ERROR qualifiers_final_annotation.py:133:5-6: `Final` may not be used for TypedDict members [invalid-annotation] +ERROR qualifiers_final_annotation.py:138:5-6: `Final` may not be used for NamedTuple members [invalid-annotation] +ERROR qualifiers_final_annotation.py:150:2-7: Missing argument `x` in function `N.__new__` [missing-argument] +ERROR qualifiers_final_annotation.py:150:2-7: Missing argument `y` in function `N.__new__` [missing-argument] +ERROR qualifiers_final_annotation.py:150:3-4: Unexpected keyword argument `a` in function `N.__new__` [unexpected-keyword] +ERROR qualifiers_final_annotation.py:151:5-7: Argument `Literal['']` is not assignable to parameter `x` with type `int` in function `N.__new__` [bad-argument-type] +ERROR qualifiers_final_annotation.py:151:11-13: Argument `Literal['']` is not assignable to parameter `y` with type `int` in function `N.__new__` [bad-argument-type] +ERROR qualifiers_final_annotation.py:157:11-12: Cannot assign to variable `ID1` because it is marked final [bad-assignment] +ERROR qualifiers_final_annotation.py:161:5-11: Cannot assign to variable `x` because it is marked final [bad-assignment] +ERROR qualifiers_final_annotation.py:163:15-16: Cannot assign to variable `x` because it is marked final [bad-assignment] +ERROR qualifiers_final_annotation.py:165:14-23: Cannot assign to variable `x` because it is marked final [bad-assignment] +ERROR qualifiers_final_annotation.py:168:10-26: Cannot assign to variable `x` because it is marked final [bad-assignment] +ERROR qualifiers_final_annotation.py:171:5-11: Cannot assign to variable `x` because it is marked final [bad-assignment] +ERROR qualifiers_final_annotation.py:182:1-4: Cannot assign to `TEN` because it is imported as final [bad-assignment] +ERROR qualifiers_final_annotation.py:186:1-3: Cannot assign to `PI` because it is imported as final [bad-assignment] """ diff --git a/conformance/results/pyright/classes_classvar.toml b/conformance/results/pyright/classes_classvar.toml index 19026e6f9..883dacfe2 100644 --- a/conformance/results/pyright/classes_classvar.toml +++ b/conformance/results/pyright/classes_classvar.toml @@ -8,18 +8,17 @@ classes_classvar.py:48:20 - error: "ClassVar" type cannot include type variables classes_classvar.py:49:20 - error: "ClassVar" type cannot include type variables (reportGeneralTypeIssues) classes_classvar.py:54:33 - error: Type "dict[Any, Any]" is not assignable to declared type "list[str]" (reportAssignmentType) classes_classvar.py:56:17 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:57:17 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:71:26 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:72:12 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:73:18 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:75:26 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:79:8 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:80:20 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:89:8 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:94:8 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:127:14 - error: Cannot assign to attribute "stats" for class "Starship" +classes_classvar.py:70:26 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:71:12 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:72:18 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:74:26 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:78:8 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:79:20 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:88:8 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:93:8 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:126:14 - error: Cannot assign to attribute "stats" for class "Starship"   Attribute "stats" cannot be assigned through a class instance because it is a ClassVar (reportAttributeAccessIssue) -classes_classvar.py:156:13 - error: Type "ProtoAImpl" is not assignable to declared type "ProtoA" +classes_classvar.py:155:13 - error: Type "ProtoAImpl" is not assignable to declared type "ProtoA"   "ProtoAImpl" is incompatible with protocol "ProtoA"     "x" is defined as a ClassVar in protocol     "y" is defined as a ClassVar in protocol (reportAssignmentType) diff --git a/conformance/results/pyright/qualifiers_final_annotation.toml b/conformance/results/pyright/qualifiers_final_annotation.toml index 0fb73bda6..96feb09b8 100644 --- a/conformance/results/pyright/qualifiers_final_annotation.toml +++ b/conformance/results/pyright/qualifiers_final_annotation.toml @@ -21,28 +21,28 @@ qualifiers_final_annotation.py:71:1 - error: "RATE" is declared as Final and can qualifiers_final_annotation.py:81:8 - error: Cannot assign to attribute "DEFAULT_ID" for class "type[ClassB]"   "DEFAULT_ID" is declared as Final and cannot be reassigned (reportAttributeAccessIssue) qualifiers_final_annotation.py:94:5 - error: "BORDER_WIDTH" cannot be redeclared because parent class "ClassC" declares it as Final (reportGeneralTypeIssues) -qualifiers_final_annotation.py:107:22 - error: "Final" is not allowed in this context (reportInvalidTypeForm) -qualifiers_final_annotation.py:108:19 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -qualifiers_final_annotation.py:118:9 - error: "Final" is not allowed in this context (reportInvalidTypeForm) -qualifiers_final_annotation.py:121:14 - error: "Final" is not allowed in this context (reportInvalidTypeForm) -qualifiers_final_annotation.py:131:5 - error: "b" is declared Final, but value is not assigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:131:8 - error: "Final" is not allowed in this context (reportInvalidTypeForm) -qualifiers_final_annotation.py:136:5 - error: "b" is declared Final, but value is not assigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:136:8 - error: "Final" is not allowed in this context (reportInvalidTypeForm) -qualifiers_final_annotation.py:148:1 - error: Arguments missing for parameters "x", "y" (reportCallIssue) -qualifiers_final_annotation.py:148:3 - error: No parameter named "a" (reportCallIssue) -qualifiers_final_annotation.py:149:5 - error: Argument of type "Literal['']" cannot be assigned to parameter "x" of type "int" in function "__new__" +qualifiers_final_annotation.py:109:22 - error: "Final" is not allowed in this context (reportInvalidTypeForm) +qualifiers_final_annotation.py:110:19 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +qualifiers_final_annotation.py:120:9 - error: "Final" is not allowed in this context (reportInvalidTypeForm) +qualifiers_final_annotation.py:123:14 - error: "Final" is not allowed in this context (reportInvalidTypeForm) +qualifiers_final_annotation.py:133:5 - error: "b" is declared Final, but value is not assigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:133:8 - error: "Final" is not allowed in this context (reportInvalidTypeForm) +qualifiers_final_annotation.py:138:5 - error: "b" is declared Final, but value is not assigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:138:8 - error: "Final" is not allowed in this context (reportInvalidTypeForm) +qualifiers_final_annotation.py:150:1 - error: Arguments missing for parameters "x", "y" (reportCallIssue) +qualifiers_final_annotation.py:150:3 - error: No parameter named "a" (reportCallIssue) +qualifiers_final_annotation.py:151:5 - error: Argument of type "Literal['']" cannot be assigned to parameter "x" of type "int" in function "__new__"   "Literal['']" is not assignable to "int" (reportArgumentType) -qualifiers_final_annotation.py:149:11 - error: Argument of type "Literal['']" cannot be assigned to parameter "y" of type "int" in function "__new__" +qualifiers_final_annotation.py:151:11 - error: Argument of type "Literal['']" cannot be assigned to parameter "y" of type "int" in function "__new__"   "Literal['']" is not assignable to "int" (reportArgumentType) -qualifiers_final_annotation.py:155:5 - error: "ID1" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:159:5 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:161:10 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:163:9 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:166:30 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:169:9 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:180:1 - error: "TEN" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:184:1 - error: "PI" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:157:5 - error: "ID1" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:161:5 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:163:10 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:165:9 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:168:30 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:171:9 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:182:1 - error: "TEN" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:186:1 - error: "PI" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) """ conformance_automated = "Pass" errors_diff = """ diff --git a/conformance/results/ty/classes_classvar.toml b/conformance/results/ty/classes_classvar.toml index ff909e64b..b1846215c 100644 --- a/conformance/results/ty/classes_classvar.toml +++ b/conformance/results/ty/classes_classvar.toml @@ -9,16 +9,15 @@ classes_classvar.py:47:11: error[invalid-type-form] `ClassVar` cannot contain ty classes_classvar.py:48:11: error[invalid-type-form] `ClassVar` cannot contain type variables classes_classvar.py:49:11: error[invalid-type-form] `ClassVar` cannot contain type variables classes_classvar.py:54:33: error[invalid-assignment] Object of type `dict[Unknown, Unknown]` is not assignable to `list[str]` -classes_classvar.py:56:11: error[redundant-final-classvar] `Combining `ClassVar` and `Final` is redundant -classes_classvar.py:57:17: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in type expressions (only in annotation expressions) -classes_classvar.py:71:26: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in parameter annotations -classes_classvar.py:72:12: error[invalid-type-form] `ClassVar` is only allowed in class bodies -classes_classvar.py:73:18: error[invalid-type-form] `ClassVar` annotations are not allowed for non-name targets -classes_classvar.py:75:26: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in return type annotations -classes_classvar.py:79:8: error[invalid-type-form] `ClassVar` is only allowed in class bodies -classes_classvar.py:80:20: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in type alias values -classes_classvar.py:89:8: error[invalid-type-form] `ClassVar` is not allowed in TypedDict fields -classes_classvar.py:94:5: error[invalid-named-tuple] Type qualifier `ClassVar` is not allowed on NamedTuple field `b` -classes_classvar.py:127:1: error[invalid-attribute-access] Cannot assign to ClassVar `stats` from an instance of type `Starship` -classes_classvar.py:156:13: error[invalid-assignment] Object of type `ProtoAImpl` is not assignable to `ProtoA` +classes_classvar.py:56:17: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in type expressions (only in annotation expressions) +classes_classvar.py:70:26: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in parameter annotations +classes_classvar.py:71:12: error[invalid-type-form] `ClassVar` is only allowed in class bodies +classes_classvar.py:72:18: error[invalid-type-form] `ClassVar` annotations are not allowed for non-name targets +classes_classvar.py:74:26: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in return type annotations +classes_classvar.py:78:8: error[invalid-type-form] `ClassVar` is only allowed in class bodies +classes_classvar.py:79:20: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in type alias values +classes_classvar.py:88:8: error[invalid-type-form] `ClassVar` is not allowed in TypedDict fields +classes_classvar.py:93:5: error[invalid-named-tuple] Type qualifier `ClassVar` is not allowed on NamedTuple field `b` +classes_classvar.py:126:1: error[invalid-attribute-access] Cannot assign to ClassVar `stats` from an instance of type `Starship` +classes_classvar.py:155:13: error[invalid-assignment] Object of type `ProtoAImpl` is not assignable to `ProtoA` """ diff --git a/conformance/results/ty/qualifiers_final_annotation.toml b/conformance/results/ty/qualifiers_final_annotation.toml index ba871f898..e4f48c332 100644 --- a/conformance/results/ty/qualifiers_final_annotation.toml +++ b/conformance/results/ty/qualifiers_final_annotation.toml @@ -14,22 +14,22 @@ qualifiers_final_annotation.py:67:9: error[invalid-assignment] Cannot assign to qualifiers_final_annotation.py:71:1: error[invalid-assignment] Reassignment of `Final` symbol `RATE` is not allowed: Symbol later reassigned here qualifiers_final_annotation.py:81:1: error[invalid-assignment] Cannot assign to final attribute `DEFAULT_ID` on type ``: `Final` attributes can only be assigned in the class body or `__init__` qualifiers_final_annotation.py:94:5: error[override-of-final-variable] Cannot override final variable `BORDER_WIDTH` from superclass `ClassC` -qualifiers_final_annotation.py:107:13: error[redundant-final-classvar] `Combining `ClassVar` and `Final` is redundant -qualifiers_final_annotation.py:108:13: error[redundant-final-classvar] `Combining `ClassVar` and `Final` is redundant -qualifiers_final_annotation.py:118:9: error[invalid-type-form] Type qualifier `typing.Final` is not allowed in type expressions (only in annotation expressions) -qualifiers_final_annotation.py:121:14: error[invalid-type-form] Type qualifier `typing.Final` is not allowed in parameter annotations -qualifiers_final_annotation.py:131:8: error[invalid-type-form] `Final` is not allowed in TypedDict fields -qualifiers_final_annotation.py:136:5: error[invalid-named-tuple] Type qualifier `Final` is not allowed on NamedTuple field `b` -qualifiers_final_annotation.py:148:1: error[missing-argument] No arguments provided for required parameters `x`, `y` -qualifiers_final_annotation.py:148:3: error[unknown-argument] Argument `a` does not match any known parameter -qualifiers_final_annotation.py:149:3: error[invalid-argument-type] Argument is incorrect: Expected `int`, found `Literal[""]` -qualifiers_final_annotation.py:149:9: error[invalid-argument-type] Argument is incorrect: Expected `int`, found `Literal[""]` -qualifiers_final_annotation.py:155:5: error[invalid-assignment] Reassignment of `Final` symbol `ID1` is not allowed: Reassignment of `Final` symbol -qualifiers_final_annotation.py:159:5: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here -qualifiers_final_annotation.py:161:10: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here -qualifiers_final_annotation.py:163:9: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here -qualifiers_final_annotation.py:166:30: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here -qualifiers_final_annotation.py:169:9: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here -qualifiers_final_annotation.py:180:1: error[invalid-assignment] Reassignment of `Final` symbol `TEN` is not allowed: Reassignment of `Final` symbol -qualifiers_final_annotation.py:184:1: error[invalid-assignment] Reassignment of `Final` symbol `PI` is not allowed: Reassignment of `Final` symbol +qualifiers_final_annotation.py:109:13: error[redundant-final-classvar] `Combining `ClassVar` and `Final` is redundant +qualifiers_final_annotation.py:110:13: error[redundant-final-classvar] `Combining `ClassVar` and `Final` is redundant +qualifiers_final_annotation.py:120:9: error[invalid-type-form] Type qualifier `typing.Final` is not allowed in type expressions (only in annotation expressions) +qualifiers_final_annotation.py:123:14: error[invalid-type-form] Type qualifier `typing.Final` is not allowed in parameter annotations +qualifiers_final_annotation.py:133:8: error[invalid-type-form] `Final` is not allowed in TypedDict fields +qualifiers_final_annotation.py:138:5: error[invalid-named-tuple] Type qualifier `Final` is not allowed on NamedTuple field `b` +qualifiers_final_annotation.py:150:1: error[missing-argument] No arguments provided for required parameters `x`, `y` +qualifiers_final_annotation.py:150:3: error[unknown-argument] Argument `a` does not match any known parameter +qualifiers_final_annotation.py:151:3: error[invalid-argument-type] Argument is incorrect: Expected `int`, found `Literal[""]` +qualifiers_final_annotation.py:151:9: error[invalid-argument-type] Argument is incorrect: Expected `int`, found `Literal[""]` +qualifiers_final_annotation.py:157:5: error[invalid-assignment] Reassignment of `Final` symbol `ID1` is not allowed: Reassignment of `Final` symbol +qualifiers_final_annotation.py:161:5: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here +qualifiers_final_annotation.py:163:10: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here +qualifiers_final_annotation.py:165:9: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here +qualifiers_final_annotation.py:168:30: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here +qualifiers_final_annotation.py:171:9: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here +qualifiers_final_annotation.py:182:1: error[invalid-assignment] Reassignment of `Final` symbol `TEN` is not allowed: Reassignment of `Final` symbol +qualifiers_final_annotation.py:186:1: error[invalid-assignment] Reassignment of `Final` symbol `PI` is not allowed: Reassignment of `Final` symbol """ diff --git a/conformance/results/zuban/classes_classvar.toml b/conformance/results/zuban/classes_classvar.toml index afb724d07..66b8d16c9 100644 --- a/conformance/results/zuban/classes_classvar.toml +++ b/conformance/results/zuban/classes_classvar.toml @@ -9,21 +9,20 @@ classes_classvar.py:47: error: ClassVar cannot contain type variables [misc] classes_classvar.py:48: error: ClassVar cannot contain type variables [misc] classes_classvar.py:49: error: ClassVar cannot contain type variables [misc] classes_classvar.py:54: error: Incompatible types in assignment (expression has type "dict[Any, Any]", variable has type "list[str]") [assignment] -classes_classvar.py:56: error: Variable should not be annotated with both ClassVar and Final [misc] -classes_classvar.py:57: error: Invalid Type: ClassVar nested inside other type [misc] -classes_classvar.py:68: error: Type in ClassVar[...] can only be omitted if there is an initializer [misc] +classes_classvar.py:56: error: Invalid Type: ClassVar nested inside other type [misc] +classes_classvar.py:67: error: Type in ClassVar[...] can only be omitted if there is an initializer [misc] +classes_classvar.py:70: error: ClassVar can only be used for assignments in class body [misc] classes_classvar.py:71: error: ClassVar can only be used for assignments in class body [misc] classes_classvar.py:72: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:73: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:75: error: ClassVar can only be used for assignments in class body [misc] +classes_classvar.py:74: error: ClassVar can only be used for assignments in class body [misc] +classes_classvar.py:78: error: ClassVar can only be used for assignments in class body [misc] classes_classvar.py:79: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:80: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:89: error: Invalid Type: ClassVar nested inside other type [misc] -classes_classvar.py:94: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:127: error: Cannot assign to class variable "stats" via instance [misc] -classes_classvar.py:156: error: Incompatible types in assignment (expression has type "ProtoAImpl", variable has type "ProtoA") [assignment] -classes_classvar.py:156: note: Protocol member ProtoA.x expected class variable, got instance variable -classes_classvar.py:156: note: Protocol member ProtoA.y expected class variable, got instance variable -classes_classvar.py:156: note: "ProtoAImpl" is missing following "ProtoA" protocol member: -classes_classvar.py:156: note: z +classes_classvar.py:88: error: Invalid Type: ClassVar nested inside other type [misc] +classes_classvar.py:93: error: ClassVar can only be used for assignments in class body [misc] +classes_classvar.py:126: error: Cannot assign to class variable "stats" via instance [misc] +classes_classvar.py:155: error: Incompatible types in assignment (expression has type "ProtoAImpl", variable has type "ProtoA") [assignment] +classes_classvar.py:155: note: Protocol member ProtoA.x expected class variable, got instance variable +classes_classvar.py:155: note: Protocol member ProtoA.y expected class variable, got instance variable +classes_classvar.py:155: note: "ProtoAImpl" is missing following "ProtoA" protocol member: +classes_classvar.py:155: note: z """ diff --git a/conformance/results/zuban/qualifiers_final_annotation.toml b/conformance/results/zuban/qualifiers_final_annotation.toml index 1101ba386..0ce9ac53e 100644 --- a/conformance/results/zuban/qualifiers_final_annotation.toml +++ b/conformance/results/zuban/qualifiers_final_annotation.toml @@ -14,22 +14,22 @@ qualifiers_final_annotation.py:67: error: Cannot assign to final attribute "ID7" qualifiers_final_annotation.py:71: error: Cannot assign to final name "RATE" [misc] qualifiers_final_annotation.py:81: error: Cannot assign to final attribute "DEFAULT_ID" [misc] qualifiers_final_annotation.py:94: error: Cannot assign to final name "BORDER_WIDTH" [misc] -qualifiers_final_annotation.py:107: error: Final can be only used as an outermost qualifier in a variable annotation [misc] -qualifiers_final_annotation.py:108: error: Invalid Type: ClassVar nested inside other type [misc] -qualifiers_final_annotation.py:118: error: Final can be only used as an outermost qualifier in a variable annotation [misc] -qualifiers_final_annotation.py:121: error: Final can be only used as an outermost qualifier in a variable annotation [misc] -qualifiers_final_annotation.py:131: error: Final can be only used as an outermost qualifier in a variable annotation [misc] -qualifiers_final_annotation.py:136: error: Final can be only used as an outermost qualifier in a variable annotation [misc] -qualifiers_final_annotation.py:148: error: Unexpected keyword argument "a" for "N" [call-arg] -qualifiers_final_annotation.py:149: error: Argument "x" to "N" has incompatible type "str"; expected "int" [arg-type] -qualifiers_final_annotation.py:149: error: Argument "y" to "N" has incompatible type "str"; expected "int" [arg-type] -qualifiers_final_annotation.py:155: error: Cannot assign to final name "ID1" [misc] -qualifiers_final_annotation.py:159: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:109: error: Final can be only used as an outermost qualifier in a variable annotation [misc] +qualifiers_final_annotation.py:110: error: Invalid Type: ClassVar nested inside other type [misc] +qualifiers_final_annotation.py:120: error: Final can be only used as an outermost qualifier in a variable annotation [misc] +qualifiers_final_annotation.py:123: error: Final can be only used as an outermost qualifier in a variable annotation [misc] +qualifiers_final_annotation.py:133: error: Final can be only used as an outermost qualifier in a variable annotation [misc] +qualifiers_final_annotation.py:138: error: Final can be only used as an outermost qualifier in a variable annotation [misc] +qualifiers_final_annotation.py:150: error: Unexpected keyword argument "a" for "N" [call-arg] +qualifiers_final_annotation.py:151: error: Argument "x" to "N" has incompatible type "str"; expected "int" [arg-type] +qualifiers_final_annotation.py:151: error: Argument "y" to "N" has incompatible type "str"; expected "int" [arg-type] +qualifiers_final_annotation.py:157: error: Cannot assign to final name "ID1" [misc] qualifiers_final_annotation.py:161: error: Cannot assign to final name "x" [misc] qualifiers_final_annotation.py:163: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:166: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:166: error: Incompatible types in assignment (expression has type "TextIOWrapper[_WrappedBuffer]", variable has type "int") [assignment] -qualifiers_final_annotation.py:169: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:180: error: Cannot assign to final name "TEN" [misc] -qualifiers_final_annotation.py:184: error: Cannot assign to final name "PI" [misc] +qualifiers_final_annotation.py:165: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:168: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:168: error: Incompatible types in assignment (expression has type "TextIOWrapper[_WrappedBuffer]", variable has type "int") [assignment] +qualifiers_final_annotation.py:171: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:182: error: Cannot assign to final name "TEN" [misc] +qualifiers_final_annotation.py:186: error: Cannot assign to final name "PI" [misc] """ diff --git a/conformance/tests/classes_classvar.py b/conformance/tests/classes_classvar.py index 5f0ca9241..03633e920 100644 --- a/conformance/tests/classes_classvar.py +++ b/conformance/tests/classes_classvar.py @@ -53,7 +53,6 @@ class ClassA(Generic[T, P]): bad8: ClassVar[list[str]] = {} # E: type violation in initialization - bad9: Final[ClassVar[int]] = 3 # E: ClassVar cannot be nested with Final bad10: list[ClassVar[int]] = [] # E: ClassVar cannot be nested good1: CV[int] = 1 diff --git a/conformance/tests/qualifiers_final_annotation.py b/conformance/tests/qualifiers_final_annotation.py index 0dc611211..5500814c8 100644 --- a/conformance/tests/qualifiers_final_annotation.py +++ b/conformance/tests/qualifiers_final_annotation.py @@ -104,8 +104,10 @@ class ClassCChild(ClassC): class ClassD: VALUE1: Final = 1 - VALUE2: ClassVar[Final] = 1 # E: Final cannot be used with ClassVar - VALUE3: Final[ClassVar] = 1 # E: Final cannot be used with ClassVar + # > In non-dataclasses, combining ``ClassVar`` and ``Final`` is redundant, + # > and type checkers may choose to warn or error on the redundancy. + VALUE2: ClassVar[Final] = 1 # E?: Final cannot be used with ClassVar + VALUE3: Final[ClassVar] = 1 # E?: Final cannot be used with ClassVar ClassD.VALUE1 # OK From 6d3595a2793d6b1782825d965e918fe45a6744e8 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Tue, 20 Oct 2026 14:16:24 -0700 Subject: [PATCH 2/3] feedback --- conformance/tests/classes_classvar.py | 1 - conformance/tests/qualifiers_final_annotation.py | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/conformance/tests/classes_classvar.py b/conformance/tests/classes_classvar.py index 03633e920..8fe748c02 100644 --- a/conformance/tests/classes_classvar.py +++ b/conformance/tests/classes_classvar.py @@ -9,7 +9,6 @@ Any, Callable, ClassVar, - Final, Generic, NamedTuple, ParamSpec, diff --git a/conformance/tests/qualifiers_final_annotation.py b/conformance/tests/qualifiers_final_annotation.py index 5500814c8..8ca958313 100644 --- a/conformance/tests/qualifiers_final_annotation.py +++ b/conformance/tests/qualifiers_final_annotation.py @@ -97,8 +97,7 @@ class ClassCChild(ClassC): # > Type checkers should infer a final attribute that is initialized in a class -# > body as being a class variable. Variables should not be annotated with both -# > ClassVar and Final. (Except in a dataclass; see dataclasses_final.py.) +# > body as being a class variable. class ClassD: @@ -106,8 +105,8 @@ class ClassD: # > In non-dataclasses, combining ``ClassVar`` and ``Final`` is redundant, # > and type checkers may choose to warn or error on the redundancy. - VALUE2: ClassVar[Final] = 1 # E?: Final cannot be used with ClassVar - VALUE3: Final[ClassVar] = 1 # E?: Final cannot be used with ClassVar + VALUE2: ClassVar[Final] = 1 # E? + VALUE3: Final[ClassVar] = 1 # E? ClassD.VALUE1 # OK From bc8250ad3f09eff695e01609ecaae178e95f51b5 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Tue, 20 Oct 2026 14:17:53 -0700 Subject: [PATCH 3/3] regen --- .../results/mypy/classes_classvar.toml | 44 +++++++++---------- .../mypy/qualifiers_final_annotation.toml | 44 +++++++++---------- .../results/pycroscope/classes_classvar.toml | 32 +++++++------- .../qualifiers_final_annotation.toml | 32 +++++++------- .../results/pyrefly/classes_classvar.toml | 44 +++++++++---------- .../pyrefly/qualifiers_final_annotation.toml | 40 ++++++++--------- .../results/pyright/classes_classvar.toml | 32 +++++++------- .../pyright/qualifiers_final_annotation.toml | 40 ++++++++--------- conformance/results/ty/classes_classvar.toml | 32 +++++++------- .../ty/qualifiers_final_annotation.toml | 34 +++++++------- .../results/zuban/classes_classvar.toml | 36 +++++++-------- .../zuban/qualifiers_final_annotation.toml | 36 +++++++-------- 12 files changed, 223 insertions(+), 223 deletions(-) diff --git a/conformance/results/mypy/classes_classvar.toml b/conformance/results/mypy/classes_classvar.toml index 4ffec75ae..1ae1804b1 100644 --- a/conformance/results/mypy/classes_classvar.toml +++ b/conformance/results/mypy/classes_classvar.toml @@ -6,33 +6,33 @@ Rejects `ClassVar` nested in `Annotated`. Does not reject use of `ClassVar` in `TypeAlias` definition. """ output = """ -classes_classvar.py:40: error: ClassVar[...] must have at most one type argument [valid-type] -classes_classvar.py:41: error: Invalid type: try using Literal[3] instead? [valid-type] -classes_classvar.py:42: error: Name "var" is not defined; did you mean "var1" or "vars"? [name-defined] -classes_classvar.py:54: error: Incompatible types in assignment (expression has type "dict[Never, Never]", variable has type "list[str]") [assignment] -classes_classvar.py:56: error: Invalid type: ClassVar nested inside other type [valid-type] -classes_classvar.py:68: error: Invalid type: ClassVar nested inside other type [valid-type] +classes_classvar.py:39: error: ClassVar[...] must have at most one type argument [valid-type] +classes_classvar.py:40: error: Invalid type: try using Literal[3] instead? [valid-type] +classes_classvar.py:41: error: Name "var" is not defined; did you mean "var1" or "vars"? [name-defined] +classes_classvar.py:53: error: Incompatible types in assignment (expression has type "dict[Never, Never]", variable has type "list[str]") [assignment] +classes_classvar.py:55: error: Invalid type: ClassVar nested inside other type [valid-type] +classes_classvar.py:67: error: Invalid type: ClassVar nested inside other type [valid-type] +classes_classvar.py:69: error: ClassVar can only be used for assignments in class body [misc] classes_classvar.py:70: error: ClassVar can only be used for assignments in class body [misc] classes_classvar.py:71: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:72: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:74: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:78: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:79: error: ClassVar[...] can't be used inside a type alias [valid-type] -classes_classvar.py:88: error: ClassVar[...] can't be used inside a TypedDict [valid-type] -classes_classvar.py:93: error: ClassVar[...] can't be used inside a NamedTuple [valid-type] -classes_classvar.py:126: error: Cannot assign to class variable "stats" via instance [misc] -classes_classvar.py:145: error: All protocol members must have explicitly declared types [misc] -classes_classvar.py:155: error: Incompatible types in assignment (expression has type "ProtoAImpl", variable has type "ProtoA") [assignment] -classes_classvar.py:155: note: "ProtoAImpl" is missing following "ProtoA" protocol member: -classes_classvar.py:155: note: z -classes_classvar.py:155: note: Protocol member ProtoA.x expected class variable, got instance variable -classes_classvar.py:155: note: Protocol member ProtoA.y expected class variable, got instance variable +classes_classvar.py:73: error: ClassVar can only be used for assignments in class body [misc] +classes_classvar.py:77: error: ClassVar can only be used for assignments in class body [misc] +classes_classvar.py:78: error: ClassVar[...] can't be used inside a type alias [valid-type] +classes_classvar.py:87: error: ClassVar[...] can't be used inside a TypedDict [valid-type] +classes_classvar.py:92: error: ClassVar[...] can't be used inside a NamedTuple [valid-type] +classes_classvar.py:125: error: Cannot assign to class variable "stats" via instance [misc] +classes_classvar.py:144: error: All protocol members must have explicitly declared types [misc] +classes_classvar.py:154: error: Incompatible types in assignment (expression has type "ProtoAImpl", variable has type "ProtoA") [assignment] +classes_classvar.py:154: note: "ProtoAImpl" is missing following "ProtoA" protocol member: +classes_classvar.py:154: note: z +classes_classvar.py:154: note: Protocol member ProtoA.x expected class variable, got instance variable +classes_classvar.py:154: note: Protocol member ProtoA.y expected class variable, got instance variable """ conformance_automated = "Fail" errors_diff = """ +Line 46: Expected 1 errors Line 47: Expected 1 errors Line 48: Expected 1 errors -Line 49: Expected 1 errors -Line 68: Unexpected errors ['classes_classvar.py:68: error: Invalid type: ClassVar nested inside other type [valid-type]'] -Line 145: Unexpected errors ['classes_classvar.py:145: error: All protocol members must have explicitly declared types [misc]'] +Line 67: Unexpected errors ['classes_classvar.py:67: error: Invalid type: ClassVar nested inside other type [valid-type]'] +Line 144: Unexpected errors ['classes_classvar.py:144: error: All protocol members must have explicitly declared types [misc]'] """ diff --git a/conformance/results/mypy/qualifiers_final_annotation.toml b/conformance/results/mypy/qualifiers_final_annotation.toml index bcf8edc7e..e07ab6b11 100644 --- a/conformance/results/mypy/qualifiers_final_annotation.toml +++ b/conformance/results/mypy/qualifiers_final_annotation.toml @@ -20,31 +20,31 @@ qualifiers_final_annotation.py:71: error: Cannot assign to final name "RATE" [m qualifiers_final_annotation.py:81: error: Cannot assign to final attribute "DEFAULT_ID" [misc] qualifiers_final_annotation.py:94: error: Cannot assign to final name "BORDER_WIDTH" [misc] qualifiers_final_annotation.py:96: error: Cannot assign to final name "__private" [misc] -qualifiers_final_annotation.py:109: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type] -qualifiers_final_annotation.py:110: error: Variable should not be annotated with both ClassVar and Final [misc] -qualifiers_final_annotation.py:120: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type] -qualifiers_final_annotation.py:123: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type] -qualifiers_final_annotation.py:133: error: Final[...] can't be used inside a TypedDict [valid-type] -qualifiers_final_annotation.py:138: error: Final[...] can't be used inside a NamedTuple [valid-type] -qualifiers_final_annotation.py:147: error: Invalid "NamedTuple()" field name [misc] -qualifiers_final_annotation.py:149: error: Unexpected keyword argument "x" for "N" [call-arg] -qualifiers_final_annotation.py:149: error: Unexpected keyword argument "y" for "N" [call-arg] -qualifiers_final_annotation.py:150: error: Unexpected keyword argument "a" for "N" [call-arg] -qualifiers_final_annotation.py:151: error: Unexpected keyword argument "x" for "N" [call-arg] -qualifiers_final_annotation.py:151: error: Unexpected keyword argument "y" for "N" [call-arg] -qualifiers_final_annotation.py:157: error: Cannot assign to final name "ID1" [misc] -qualifiers_final_annotation.py:161: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:163: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:168: error: Incompatible types in assignment (expression has type "TextIOWrapper[_WrappedBuffer]", variable has type "int") [assignment] -qualifiers_final_annotation.py:171: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:182: error: Cannot assign to final name "TEN" [misc] -qualifiers_final_annotation.py:186: error: Cannot assign to final name "PI" [misc] +qualifiers_final_annotation.py:108: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type] +qualifiers_final_annotation.py:109: error: Variable should not be annotated with both ClassVar and Final [misc] +qualifiers_final_annotation.py:119: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type] +qualifiers_final_annotation.py:122: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type] +qualifiers_final_annotation.py:132: error: Final[...] can't be used inside a TypedDict [valid-type] +qualifiers_final_annotation.py:137: error: Final[...] can't be used inside a NamedTuple [valid-type] +qualifiers_final_annotation.py:146: error: Invalid "NamedTuple()" field name [misc] +qualifiers_final_annotation.py:148: error: Unexpected keyword argument "x" for "N" [call-arg] +qualifiers_final_annotation.py:148: error: Unexpected keyword argument "y" for "N" [call-arg] +qualifiers_final_annotation.py:149: error: Unexpected keyword argument "a" for "N" [call-arg] +qualifiers_final_annotation.py:150: error: Unexpected keyword argument "x" for "N" [call-arg] +qualifiers_final_annotation.py:150: error: Unexpected keyword argument "y" for "N" [call-arg] +qualifiers_final_annotation.py:156: error: Cannot assign to final name "ID1" [misc] +qualifiers_final_annotation.py:160: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:162: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:167: error: Incompatible types in assignment (expression has type "TextIOWrapper[_WrappedBuffer]", variable has type "int") [assignment] +qualifiers_final_annotation.py:170: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:181: error: Cannot assign to final name "TEN" [misc] +qualifiers_final_annotation.py:185: error: Cannot assign to final name "PI" [misc] """ conformance_automated = "Fail" errors_diff = """ -Line 165: Expected 1 errors +Line 164: Expected 1 errors Line 59: Unexpected errors ['qualifiers_final_annotation.py:59: error: Cannot assign to final attribute "ID6" [misc]'] Line 96: Unexpected errors ['qualifiers_final_annotation.py:96: error: Cannot assign to final name "__private" [misc]'] -Line 147: Unexpected errors ['qualifiers_final_annotation.py:147: error: Invalid "NamedTuple()" field name [misc]'] -Line 149: Unexpected errors ['qualifiers_final_annotation.py:149: error: Unexpected keyword argument "x" for "N" [call-arg]', 'qualifiers_final_annotation.py:149: error: Unexpected keyword argument "y" for "N" [call-arg]'] +Line 146: Unexpected errors ['qualifiers_final_annotation.py:146: error: Invalid "NamedTuple()" field name [misc]'] +Line 148: Unexpected errors ['qualifiers_final_annotation.py:148: error: Unexpected keyword argument "x" for "N" [call-arg]', 'qualifiers_final_annotation.py:148: error: Unexpected keyword argument "y" for "N" [call-arg]'] """ diff --git a/conformance/results/pycroscope/classes_classvar.toml b/conformance/results/pycroscope/classes_classvar.toml index 05a0c55e1..b136a7e6d 100644 --- a/conformance/results/pycroscope/classes_classvar.toml +++ b/conformance/results/pycroscope/classes_classvar.toml @@ -2,22 +2,22 @@ conformance_automated = "Pass" errors_diff = """ """ output = """ -./classes_classvar.py:40:10: Invalid type annotation (, ) [invalid_annotation] -./classes_classvar.py:41:10: Invalid type annotation 3 [invalid_annotation] -./classes_classvar.py:42:13: Undefined name: var [undefined_name] +./classes_classvar.py:39:10: Invalid type annotation (, ) [invalid_annotation] +./classes_classvar.py:40:10: Invalid type annotation 3 [invalid_annotation] +./classes_classvar.py:41:13: Undefined name: var [undefined_name] +./classes_classvar.py:46:10: ClassVar type cannot include type parameters [classvar_type_parameters] ./classes_classvar.py:47:10: ClassVar type cannot include type parameters [classvar_type_parameters] ./classes_classvar.py:48:10: ClassVar type cannot include type parameters [classvar_type_parameters] -./classes_classvar.py:49:10: ClassVar type cannot include type parameters [classvar_type_parameters] -./classes_classvar.py:54:4: Incompatible assignment: expected list[str], got Literal[{}] [incompatible_assignment] -./classes_classvar.py:56:11: Unrecognized annotation typing.ClassVar[] [invalid_annotation] -./classes_classvar.py:70:25: Unexpected ClassVar annotation [invalid_qualifier] -./classes_classvar.py:71:11: ClassVar can only be used for assignments in class body [invalid_qualifier] -./classes_classvar.py:72:17: ClassVar can only be used for assignments in class body [invalid_qualifier] -./classes_classvar.py:74:25: Unexpected ClassVar annotation [invalid_qualifier] -./classes_classvar.py:78:7: ClassVar can only be used for assignments in class body [invalid_qualifier] -./classes_classvar.py:79:19: ClassVar cannot be used in type aliases [invalid_qualifier] -./classes_classvar.py:88:7: Unexpected ClassVar annotation [invalid_qualifier] -./classes_classvar.py:93:7: ClassVar cannot be used for NamedTuple fields [invalid_qualifier] -./classes_classvar.py:126:0: Cannot assign to class variable 'stats' via instance [incompatible_assignment] -./classes_classvar.py:155:0: Incompatible assignment: expected ./classes_classvar.py.ProtoA, got ./classes_classvar.py.ProtoAImpl [incompatible_assignment] +./classes_classvar.py:53:4: Incompatible assignment: expected list[str], got Literal[{}] [incompatible_assignment] +./classes_classvar.py:55:11: Unrecognized annotation typing.ClassVar[] [invalid_annotation] +./classes_classvar.py:69:25: Unexpected ClassVar annotation [invalid_qualifier] +./classes_classvar.py:70:11: ClassVar can only be used for assignments in class body [invalid_qualifier] +./classes_classvar.py:71:17: ClassVar can only be used for assignments in class body [invalid_qualifier] +./classes_classvar.py:73:25: Unexpected ClassVar annotation [invalid_qualifier] +./classes_classvar.py:77:7: ClassVar can only be used for assignments in class body [invalid_qualifier] +./classes_classvar.py:78:19: ClassVar cannot be used in type aliases [invalid_qualifier] +./classes_classvar.py:87:7: Unexpected ClassVar annotation [invalid_qualifier] +./classes_classvar.py:92:7: ClassVar cannot be used for NamedTuple fields [invalid_qualifier] +./classes_classvar.py:125:0: Cannot assign to class variable 'stats' via instance [incompatible_assignment] +./classes_classvar.py:154:0: Incompatible assignment: expected ./classes_classvar.py.ProtoA, got ./classes_classvar.py.ProtoAImpl [incompatible_assignment] """ diff --git a/conformance/results/pycroscope/qualifiers_final_annotation.toml b/conformance/results/pycroscope/qualifiers_final_annotation.toml index 7a3ad21aa..c3e8697b6 100644 --- a/conformance/results/pycroscope/qualifiers_final_annotation.toml +++ b/conformance/results/pycroscope/qualifiers_final_annotation.toml @@ -15,21 +15,21 @@ output = """ ./qualifiers_final_annotation.py:71:0: Cannot assign to final name RATE [incompatible_assignment] ./qualifiers_final_annotation.py:81:0: Cannot assign to final name DEFAULT_ID [incompatible_assignment] ./qualifiers_final_annotation.py:94:4: Cannot override final attribute BORDER_WIDTH [incompatible_override] +./qualifiers_final_annotation.py:108:12: Final cannot be combined with ClassVar [invalid_qualifier] ./qualifiers_final_annotation.py:109:12: Final cannot be combined with ClassVar [invalid_qualifier] -./qualifiers_final_annotation.py:110:12: Final cannot be combined with ClassVar [invalid_qualifier] -./qualifiers_final_annotation.py:120:3: Unrecognized annotation typing.Final[] [invalid_annotation] -./qualifiers_final_annotation.py:123:13: Unexpected Final annotation [invalid_qualifier] -./qualifiers_final_annotation.py:133:7: Unexpected Final annotation [invalid_qualifier] -./qualifiers_final_annotation.py:138:4: Final class attributes without initializers must be assigned in __init__ [invalid_qualifier] -./qualifiers_final_annotation.py:150:0: In call to pycroscope.signature.N: Missing required argument 'x' [incompatible_call] -./qualifiers_final_annotation.py:151:4: Incompatible argument type for x: expected int but got Literal[''] [incompatible_argument] -./qualifiers_final_annotation.py:151:10: Incompatible argument type for y: expected int but got Literal[''] [incompatible_argument] -./qualifiers_final_annotation.py:157:4: Cannot assign to final name ID1 [incompatible_assignment] -./qualifiers_final_annotation.py:161:4: Cannot assign to final name x [incompatible_assignment] -./qualifiers_final_annotation.py:163:9: Cannot assign to final name x [incompatible_assignment] -./qualifiers_final_annotation.py:165:8: Cannot assign to final name x [incompatible_assignment] -./qualifiers_final_annotation.py:168:29: Cannot assign to final name x [incompatible_assignment] -./qualifiers_final_annotation.py:171:8: Cannot assign to final name x [incompatible_assignment] -./qualifiers_final_annotation.py:182:0: Cannot assign to final name TEN [incompatible_assignment] -./qualifiers_final_annotation.py:186:0: Cannot assign to final name PI [incompatible_assignment] +./qualifiers_final_annotation.py:119:3: Unrecognized annotation typing.Final[] [invalid_annotation] +./qualifiers_final_annotation.py:122:13: Unexpected Final annotation [invalid_qualifier] +./qualifiers_final_annotation.py:132:7: Unexpected Final annotation [invalid_qualifier] +./qualifiers_final_annotation.py:137:4: Final class attributes without initializers must be assigned in __init__ [invalid_qualifier] +./qualifiers_final_annotation.py:149:0: In call to pycroscope.signature.N: Missing required argument 'x' [incompatible_call] +./qualifiers_final_annotation.py:150:4: Incompatible argument type for x: expected int but got Literal[''] [incompatible_argument] +./qualifiers_final_annotation.py:150:10: Incompatible argument type for y: expected int but got Literal[''] [incompatible_argument] +./qualifiers_final_annotation.py:156:4: Cannot assign to final name ID1 [incompatible_assignment] +./qualifiers_final_annotation.py:160:4: Cannot assign to final name x [incompatible_assignment] +./qualifiers_final_annotation.py:162:9: Cannot assign to final name x [incompatible_assignment] +./qualifiers_final_annotation.py:164:8: Cannot assign to final name x [incompatible_assignment] +./qualifiers_final_annotation.py:167:29: Cannot assign to final name x [incompatible_assignment] +./qualifiers_final_annotation.py:170:8: Cannot assign to final name x [incompatible_assignment] +./qualifiers_final_annotation.py:181:0: Cannot assign to final name TEN [incompatible_assignment] +./qualifiers_final_annotation.py:185:0: Cannot assign to final name PI [incompatible_assignment] """ diff --git a/conformance/results/pyrefly/classes_classvar.toml b/conformance/results/pyrefly/classes_classvar.toml index cefd65531..f66bb3590 100644 --- a/conformance/results/pyrefly/classes_classvar.toml +++ b/conformance/results/pyrefly/classes_classvar.toml @@ -3,26 +3,26 @@ conformance_automated = "Pass" errors_diff = """ """ output = """ -ERROR classes_classvar.py:40:11-29: Expected 1 type argument for `ClassVar`, got 2 [invalid-annotation] -ERROR classes_classvar.py:41:14-15: Number literal cannot be used in annotations [invalid-annotation] -ERROR classes_classvar.py:42:14-17: Could not find name `var` [unknown-name] -ERROR classes_classvar.py:47:20-21: `ClassVar` arguments may not contain any type variables [invalid-annotation] -ERROR classes_classvar.py:48:20-27: `ClassVar` arguments may not contain any type variables [invalid-annotation] -ERROR classes_classvar.py:49:20-36: `ClassVar` arguments may not contain any type variables [invalid-annotation] -ERROR classes_classvar.py:54:33-35: `dict[@_, @_]` is not assignable to `list[str]` [bad-assignment] -ERROR classes_classvar.py:56:17-30: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR classes_classvar.py:70:26-34: `ClassVar` is only allowed inside a class body [invalid-annotation] -ERROR classes_classvar.py:70:26-39: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR classes_classvar.py:71:12-20: `ClassVar` is only allowed inside a class body [invalid-annotation] -ERROR classes_classvar.py:71:12-25: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR classes_classvar.py:72:9-16: Cannot set field `xx` [read-only] -ERROR classes_classvar.py:74:26-34: `ClassVar` is only allowed inside a class body [invalid-annotation] -ERROR classes_classvar.py:74:26-39: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR classes_classvar.py:78:8-16: `ClassVar` is only allowed inside a class body [invalid-annotation] -ERROR classes_classvar.py:78:8-21: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR classes_classvar.py:79:20-33: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR classes_classvar.py:88:5-6: `ClassVar` may not be used for TypedDict members [invalid-annotation] -ERROR classes_classvar.py:93:5-6: `ClassVar` may not be used for NamedTuple members [invalid-annotation] -ERROR classes_classvar.py:126:1-19: Cannot set field `stats` [read-only] -ERROR classes_classvar.py:155:13-25: `ProtoAImpl` is not assignable to `ProtoA` [bad-assignment] +ERROR classes_classvar.py:39:11-29: Expected 1 type argument for `ClassVar`, got 2 [invalid-annotation] +ERROR classes_classvar.py:40:14-15: Number literal cannot be used in annotations [invalid-annotation] +ERROR classes_classvar.py:41:14-17: Could not find name `var` [unknown-name] +ERROR classes_classvar.py:46:20-21: `ClassVar` arguments may not contain any type variables [invalid-annotation] +ERROR classes_classvar.py:47:20-27: `ClassVar` arguments may not contain any type variables [invalid-annotation] +ERROR classes_classvar.py:48:20-36: `ClassVar` arguments may not contain any type variables [invalid-annotation] +ERROR classes_classvar.py:53:33-35: `dict[@_, @_]` is not assignable to `list[str]` [bad-assignment] +ERROR classes_classvar.py:55:17-30: `ClassVar` is not allowed in this context [invalid-annotation] +ERROR classes_classvar.py:69:26-34: `ClassVar` is only allowed inside a class body [invalid-annotation] +ERROR classes_classvar.py:69:26-39: `ClassVar` is not allowed in this context [invalid-annotation] +ERROR classes_classvar.py:70:12-20: `ClassVar` is only allowed inside a class body [invalid-annotation] +ERROR classes_classvar.py:70:12-25: `ClassVar` is not allowed in this context [invalid-annotation] +ERROR classes_classvar.py:71:9-16: Cannot set field `xx` [read-only] +ERROR classes_classvar.py:73:26-34: `ClassVar` is only allowed inside a class body [invalid-annotation] +ERROR classes_classvar.py:73:26-39: `ClassVar` is not allowed in this context [invalid-annotation] +ERROR classes_classvar.py:77:8-16: `ClassVar` is only allowed inside a class body [invalid-annotation] +ERROR classes_classvar.py:77:8-21: `ClassVar` is not allowed in this context [invalid-annotation] +ERROR classes_classvar.py:78:20-33: `ClassVar` is not allowed in this context [invalid-annotation] +ERROR classes_classvar.py:87:5-6: `ClassVar` may not be used for TypedDict members [invalid-annotation] +ERROR classes_classvar.py:92:5-6: `ClassVar` may not be used for NamedTuple members [invalid-annotation] +ERROR classes_classvar.py:125:1-19: Cannot set field `stats` [read-only] +ERROR classes_classvar.py:154:13-25: `ProtoAImpl` is not assignable to `ProtoA` [bad-assignment] """ diff --git a/conformance/results/pyrefly/qualifiers_final_annotation.toml b/conformance/results/pyrefly/qualifiers_final_annotation.toml index 902c4f8ef..6c1bbfa00 100644 --- a/conformance/results/pyrefly/qualifiers_final_annotation.toml +++ b/conformance/results/pyrefly/qualifiers_final_annotation.toml @@ -14,24 +14,24 @@ ERROR qualifiers_final_annotation.py:67:9-17: Cannot set field `ID7` [read-only] ERROR qualifiers_final_annotation.py:71:8-11: Cannot assign to variable `RATE` because it is marked final [bad-assignment] ERROR qualifiers_final_annotation.py:81:1-18: Cannot set field `DEFAULT_ID` [read-only] ERROR qualifiers_final_annotation.py:94:5-17: `BORDER_WIDTH` is declared as final in parent class `ClassC` [bad-override] -ERROR qualifiers_final_annotation.py:109:5-11: `Final` may not be nested inside `ClassVar` [invalid-annotation] -ERROR qualifiers_final_annotation.py:110:19-27: `ClassVar` may not be nested inside `Final` [invalid-annotation] -ERROR qualifiers_final_annotation.py:120:9-19: `Final` is not allowed in this context [invalid-annotation] -ERROR qualifiers_final_annotation.py:123:14-19: `Final` is only allowed on a class or local variable annotation [invalid-annotation] -ERROR qualifiers_final_annotation.py:123:14-30: `Final` is not allowed in this context [invalid-annotation] -ERROR qualifiers_final_annotation.py:133:5-6: `Final` may not be used for TypedDict members [invalid-annotation] -ERROR qualifiers_final_annotation.py:138:5-6: `Final` may not be used for NamedTuple members [invalid-annotation] -ERROR qualifiers_final_annotation.py:150:2-7: Missing argument `x` in function `N.__new__` [missing-argument] -ERROR qualifiers_final_annotation.py:150:2-7: Missing argument `y` in function `N.__new__` [missing-argument] -ERROR qualifiers_final_annotation.py:150:3-4: Unexpected keyword argument `a` in function `N.__new__` [unexpected-keyword] -ERROR qualifiers_final_annotation.py:151:5-7: Argument `Literal['']` is not assignable to parameter `x` with type `int` in function `N.__new__` [bad-argument-type] -ERROR qualifiers_final_annotation.py:151:11-13: Argument `Literal['']` is not assignable to parameter `y` with type `int` in function `N.__new__` [bad-argument-type] -ERROR qualifiers_final_annotation.py:157:11-12: Cannot assign to variable `ID1` because it is marked final [bad-assignment] -ERROR qualifiers_final_annotation.py:161:5-11: Cannot assign to variable `x` because it is marked final [bad-assignment] -ERROR qualifiers_final_annotation.py:163:15-16: Cannot assign to variable `x` because it is marked final [bad-assignment] -ERROR qualifiers_final_annotation.py:165:14-23: Cannot assign to variable `x` because it is marked final [bad-assignment] -ERROR qualifiers_final_annotation.py:168:10-26: Cannot assign to variable `x` because it is marked final [bad-assignment] -ERROR qualifiers_final_annotation.py:171:5-11: Cannot assign to variable `x` because it is marked final [bad-assignment] -ERROR qualifiers_final_annotation.py:182:1-4: Cannot assign to `TEN` because it is imported as final [bad-assignment] -ERROR qualifiers_final_annotation.py:186:1-3: Cannot assign to `PI` because it is imported as final [bad-assignment] +ERROR qualifiers_final_annotation.py:108:5-11: `Final` may not be nested inside `ClassVar` [invalid-annotation] +ERROR qualifiers_final_annotation.py:109:19-27: `ClassVar` may not be nested inside `Final` [invalid-annotation] +ERROR qualifiers_final_annotation.py:119:9-19: `Final` is not allowed in this context [invalid-annotation] +ERROR qualifiers_final_annotation.py:122:14-19: `Final` is only allowed on a class or local variable annotation [invalid-annotation] +ERROR qualifiers_final_annotation.py:122:14-30: `Final` is not allowed in this context [invalid-annotation] +ERROR qualifiers_final_annotation.py:132:5-6: `Final` may not be used for TypedDict members [invalid-annotation] +ERROR qualifiers_final_annotation.py:137:5-6: `Final` may not be used for NamedTuple members [invalid-annotation] +ERROR qualifiers_final_annotation.py:149:2-7: Missing argument `x` in function `N.__new__` [missing-argument] +ERROR qualifiers_final_annotation.py:149:2-7: Missing argument `y` in function `N.__new__` [missing-argument] +ERROR qualifiers_final_annotation.py:149:3-4: Unexpected keyword argument `a` in function `N.__new__` [unexpected-keyword] +ERROR qualifiers_final_annotation.py:150:5-7: Argument `Literal['']` is not assignable to parameter `x` with type `int` in function `N.__new__` [bad-argument-type] +ERROR qualifiers_final_annotation.py:150:11-13: Argument `Literal['']` is not assignable to parameter `y` with type `int` in function `N.__new__` [bad-argument-type] +ERROR qualifiers_final_annotation.py:156:11-12: Cannot assign to variable `ID1` because it is marked final [bad-assignment] +ERROR qualifiers_final_annotation.py:160:5-11: Cannot assign to variable `x` because it is marked final [bad-assignment] +ERROR qualifiers_final_annotation.py:162:15-16: Cannot assign to variable `x` because it is marked final [bad-assignment] +ERROR qualifiers_final_annotation.py:164:14-23: Cannot assign to variable `x` because it is marked final [bad-assignment] +ERROR qualifiers_final_annotation.py:167:10-26: Cannot assign to variable `x` because it is marked final [bad-assignment] +ERROR qualifiers_final_annotation.py:170:5-11: Cannot assign to variable `x` because it is marked final [bad-assignment] +ERROR qualifiers_final_annotation.py:181:1-4: Cannot assign to `TEN` because it is imported as final [bad-assignment] +ERROR qualifiers_final_annotation.py:185:1-3: Cannot assign to `PI` because it is imported as final [bad-assignment] """ diff --git a/conformance/results/pyright/classes_classvar.toml b/conformance/results/pyright/classes_classvar.toml index 883dacfe2..e47d1401e 100644 --- a/conformance/results/pyright/classes_classvar.toml +++ b/conformance/results/pyright/classes_classvar.toml @@ -1,24 +1,24 @@ conformant = "Pass" output = """ -classes_classvar.py:40:25 - error: Expected only one type argument after "ClassVar" (reportInvalidTypeForm) -classes_classvar.py:41:14 - error: Expected class but received "Literal[3]" (reportGeneralTypeIssues) -classes_classvar.py:42:14 - error: "var" is not defined (reportUndefinedVariable) +classes_classvar.py:39:25 - error: Expected only one type argument after "ClassVar" (reportInvalidTypeForm) +classes_classvar.py:40:14 - error: Expected class but received "Literal[3]" (reportGeneralTypeIssues) +classes_classvar.py:41:14 - error: "var" is not defined (reportUndefinedVariable) +classes_classvar.py:46:20 - error: "ClassVar" type cannot include type variables (reportGeneralTypeIssues) classes_classvar.py:47:20 - error: "ClassVar" type cannot include type variables (reportGeneralTypeIssues) classes_classvar.py:48:20 - error: "ClassVar" type cannot include type variables (reportGeneralTypeIssues) -classes_classvar.py:49:20 - error: "ClassVar" type cannot include type variables (reportGeneralTypeIssues) -classes_classvar.py:54:33 - error: Type "dict[Any, Any]" is not assignable to declared type "list[str]" (reportAssignmentType) -classes_classvar.py:56:17 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:70:26 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:71:12 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:72:18 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:74:26 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:78:8 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:79:20 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:88:8 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:93:8 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -classes_classvar.py:126:14 - error: Cannot assign to attribute "stats" for class "Starship" +classes_classvar.py:53:33 - error: Type "dict[Any, Any]" is not assignable to declared type "list[str]" (reportAssignmentType) +classes_classvar.py:55:17 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:69:26 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:70:12 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:71:18 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:73:26 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:77:8 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:78:20 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:87:8 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:92:8 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +classes_classvar.py:125:14 - error: Cannot assign to attribute "stats" for class "Starship"   Attribute "stats" cannot be assigned through a class instance because it is a ClassVar (reportAttributeAccessIssue) -classes_classvar.py:155:13 - error: Type "ProtoAImpl" is not assignable to declared type "ProtoA" +classes_classvar.py:154:13 - error: Type "ProtoAImpl" is not assignable to declared type "ProtoA"   "ProtoAImpl" is incompatible with protocol "ProtoA"     "x" is defined as a ClassVar in protocol     "y" is defined as a ClassVar in protocol (reportAssignmentType) diff --git a/conformance/results/pyright/qualifiers_final_annotation.toml b/conformance/results/pyright/qualifiers_final_annotation.toml index 96feb09b8..93b6625e8 100644 --- a/conformance/results/pyright/qualifiers_final_annotation.toml +++ b/conformance/results/pyright/qualifiers_final_annotation.toml @@ -21,28 +21,28 @@ qualifiers_final_annotation.py:71:1 - error: "RATE" is declared as Final and can qualifiers_final_annotation.py:81:8 - error: Cannot assign to attribute "DEFAULT_ID" for class "type[ClassB]"   "DEFAULT_ID" is declared as Final and cannot be reassigned (reportAttributeAccessIssue) qualifiers_final_annotation.py:94:5 - error: "BORDER_WIDTH" cannot be redeclared because parent class "ClassC" declares it as Final (reportGeneralTypeIssues) -qualifiers_final_annotation.py:109:22 - error: "Final" is not allowed in this context (reportInvalidTypeForm) -qualifiers_final_annotation.py:110:19 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) -qualifiers_final_annotation.py:120:9 - error: "Final" is not allowed in this context (reportInvalidTypeForm) -qualifiers_final_annotation.py:123:14 - error: "Final" is not allowed in this context (reportInvalidTypeForm) -qualifiers_final_annotation.py:133:5 - error: "b" is declared Final, but value is not assigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:133:8 - error: "Final" is not allowed in this context (reportInvalidTypeForm) -qualifiers_final_annotation.py:138:5 - error: "b" is declared Final, but value is not assigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:138:8 - error: "Final" is not allowed in this context (reportInvalidTypeForm) -qualifiers_final_annotation.py:150:1 - error: Arguments missing for parameters "x", "y" (reportCallIssue) -qualifiers_final_annotation.py:150:3 - error: No parameter named "a" (reportCallIssue) -qualifiers_final_annotation.py:151:5 - error: Argument of type "Literal['']" cannot be assigned to parameter "x" of type "int" in function "__new__" +qualifiers_final_annotation.py:108:22 - error: "Final" is not allowed in this context (reportInvalidTypeForm) +qualifiers_final_annotation.py:109:19 - error: "ClassVar" is not allowed in this context (reportInvalidTypeForm) +qualifiers_final_annotation.py:119:9 - error: "Final" is not allowed in this context (reportInvalidTypeForm) +qualifiers_final_annotation.py:122:14 - error: "Final" is not allowed in this context (reportInvalidTypeForm) +qualifiers_final_annotation.py:132:5 - error: "b" is declared Final, but value is not assigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:132:8 - error: "Final" is not allowed in this context (reportInvalidTypeForm) +qualifiers_final_annotation.py:137:5 - error: "b" is declared Final, but value is not assigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:137:8 - error: "Final" is not allowed in this context (reportInvalidTypeForm) +qualifiers_final_annotation.py:149:1 - error: Arguments missing for parameters "x", "y" (reportCallIssue) +qualifiers_final_annotation.py:149:3 - error: No parameter named "a" (reportCallIssue) +qualifiers_final_annotation.py:150:5 - error: Argument of type "Literal['']" cannot be assigned to parameter "x" of type "int" in function "__new__"   "Literal['']" is not assignable to "int" (reportArgumentType) -qualifiers_final_annotation.py:151:11 - error: Argument of type "Literal['']" cannot be assigned to parameter "y" of type "int" in function "__new__" +qualifiers_final_annotation.py:150:11 - error: Argument of type "Literal['']" cannot be assigned to parameter "y" of type "int" in function "__new__"   "Literal['']" is not assignable to "int" (reportArgumentType) -qualifiers_final_annotation.py:157:5 - error: "ID1" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:161:5 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:163:10 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:165:9 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:168:30 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:171:9 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:182:1 - error: "TEN" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) -qualifiers_final_annotation.py:186:1 - error: "PI" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:156:5 - error: "ID1" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:160:5 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:162:10 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:164:9 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:167:30 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:170:9 - error: "x" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:181:1 - error: "TEN" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) +qualifiers_final_annotation.py:185:1 - error: "PI" is declared as Final and cannot be reassigned (reportGeneralTypeIssues) """ conformance_automated = "Pass" errors_diff = """ diff --git a/conformance/results/ty/classes_classvar.toml b/conformance/results/ty/classes_classvar.toml index b1846215c..dd00bd537 100644 --- a/conformance/results/ty/classes_classvar.toml +++ b/conformance/results/ty/classes_classvar.toml @@ -2,22 +2,22 @@ conformance_automated = "Pass" errors_diff = """ """ output = """ -classes_classvar.py:40:11: error[invalid-type-form] Type qualifier `typing.ClassVar` expected exactly 1 argument, got 2 -classes_classvar.py:41:14: error[invalid-type-form] Int literals are not allowed in this context in a type expression: Did you mean `typing.Literal[3]`? -classes_classvar.py:42:14: error[unresolved-reference] Name `var` used when not defined +classes_classvar.py:39:11: error[invalid-type-form] Type qualifier `typing.ClassVar` expected exactly 1 argument, got 2 +classes_classvar.py:40:14: error[invalid-type-form] Int literals are not allowed in this context in a type expression: Did you mean `typing.Literal[3]`? +classes_classvar.py:41:14: error[unresolved-reference] Name `var` used when not defined +classes_classvar.py:46:11: error[invalid-type-form] `ClassVar` cannot contain type variables classes_classvar.py:47:11: error[invalid-type-form] `ClassVar` cannot contain type variables classes_classvar.py:48:11: error[invalid-type-form] `ClassVar` cannot contain type variables -classes_classvar.py:49:11: error[invalid-type-form] `ClassVar` cannot contain type variables -classes_classvar.py:54:33: error[invalid-assignment] Object of type `dict[Unknown, Unknown]` is not assignable to `list[str]` -classes_classvar.py:56:17: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in type expressions (only in annotation expressions) -classes_classvar.py:70:26: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in parameter annotations -classes_classvar.py:71:12: error[invalid-type-form] `ClassVar` is only allowed in class bodies -classes_classvar.py:72:18: error[invalid-type-form] `ClassVar` annotations are not allowed for non-name targets -classes_classvar.py:74:26: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in return type annotations -classes_classvar.py:78:8: error[invalid-type-form] `ClassVar` is only allowed in class bodies -classes_classvar.py:79:20: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in type alias values -classes_classvar.py:88:8: error[invalid-type-form] `ClassVar` is not allowed in TypedDict fields -classes_classvar.py:93:5: error[invalid-named-tuple] Type qualifier `ClassVar` is not allowed on NamedTuple field `b` -classes_classvar.py:126:1: error[invalid-attribute-access] Cannot assign to ClassVar `stats` from an instance of type `Starship` -classes_classvar.py:155:13: error[invalid-assignment] Object of type `ProtoAImpl` is not assignable to `ProtoA` +classes_classvar.py:53:33: error[invalid-assignment] Object of type `dict[Unknown, Unknown]` is not assignable to `list[str]` +classes_classvar.py:55:17: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in type expressions (only in annotation expressions) +classes_classvar.py:69:26: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in parameter annotations +classes_classvar.py:70:12: error[invalid-type-form] `ClassVar` is only allowed in class bodies +classes_classvar.py:71:18: error[invalid-type-form] `ClassVar` annotations are not allowed for non-name targets +classes_classvar.py:73:26: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in return type annotations +classes_classvar.py:77:8: error[invalid-type-form] `ClassVar` is only allowed in class bodies +classes_classvar.py:78:20: error[invalid-type-form] Type qualifier `typing.ClassVar` is not allowed in type alias values +classes_classvar.py:87:8: error[invalid-type-form] `ClassVar` is not allowed in TypedDict fields +classes_classvar.py:92:5: error[invalid-named-tuple] Type qualifier `ClassVar` is not allowed on NamedTuple field `b` +classes_classvar.py:125:1: error[invalid-attribute-access] Cannot assign to ClassVar `stats` from an instance of type `Starship` +classes_classvar.py:154:13: error[invalid-assignment] Object of type `ProtoAImpl` is not assignable to `ProtoA` """ diff --git a/conformance/results/ty/qualifiers_final_annotation.toml b/conformance/results/ty/qualifiers_final_annotation.toml index e4f48c332..90dff7b33 100644 --- a/conformance/results/ty/qualifiers_final_annotation.toml +++ b/conformance/results/ty/qualifiers_final_annotation.toml @@ -14,22 +14,22 @@ qualifiers_final_annotation.py:67:9: error[invalid-assignment] Cannot assign to qualifiers_final_annotation.py:71:1: error[invalid-assignment] Reassignment of `Final` symbol `RATE` is not allowed: Symbol later reassigned here qualifiers_final_annotation.py:81:1: error[invalid-assignment] Cannot assign to final attribute `DEFAULT_ID` on type ``: `Final` attributes can only be assigned in the class body or `__init__` qualifiers_final_annotation.py:94:5: error[override-of-final-variable] Cannot override final variable `BORDER_WIDTH` from superclass `ClassC` +qualifiers_final_annotation.py:108:13: error[redundant-final-classvar] `Combining `ClassVar` and `Final` is redundant qualifiers_final_annotation.py:109:13: error[redundant-final-classvar] `Combining `ClassVar` and `Final` is redundant -qualifiers_final_annotation.py:110:13: error[redundant-final-classvar] `Combining `ClassVar` and `Final` is redundant -qualifiers_final_annotation.py:120:9: error[invalid-type-form] Type qualifier `typing.Final` is not allowed in type expressions (only in annotation expressions) -qualifiers_final_annotation.py:123:14: error[invalid-type-form] Type qualifier `typing.Final` is not allowed in parameter annotations -qualifiers_final_annotation.py:133:8: error[invalid-type-form] `Final` is not allowed in TypedDict fields -qualifiers_final_annotation.py:138:5: error[invalid-named-tuple] Type qualifier `Final` is not allowed on NamedTuple field `b` -qualifiers_final_annotation.py:150:1: error[missing-argument] No arguments provided for required parameters `x`, `y` -qualifiers_final_annotation.py:150:3: error[unknown-argument] Argument `a` does not match any known parameter -qualifiers_final_annotation.py:151:3: error[invalid-argument-type] Argument is incorrect: Expected `int`, found `Literal[""]` -qualifiers_final_annotation.py:151:9: error[invalid-argument-type] Argument is incorrect: Expected `int`, found `Literal[""]` -qualifiers_final_annotation.py:157:5: error[invalid-assignment] Reassignment of `Final` symbol `ID1` is not allowed: Reassignment of `Final` symbol -qualifiers_final_annotation.py:161:5: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here -qualifiers_final_annotation.py:163:10: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here -qualifiers_final_annotation.py:165:9: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here -qualifiers_final_annotation.py:168:30: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here -qualifiers_final_annotation.py:171:9: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here -qualifiers_final_annotation.py:182:1: error[invalid-assignment] Reassignment of `Final` symbol `TEN` is not allowed: Reassignment of `Final` symbol -qualifiers_final_annotation.py:186:1: error[invalid-assignment] Reassignment of `Final` symbol `PI` is not allowed: Reassignment of `Final` symbol +qualifiers_final_annotation.py:119:9: error[invalid-type-form] Type qualifier `typing.Final` is not allowed in type expressions (only in annotation expressions) +qualifiers_final_annotation.py:122:14: error[invalid-type-form] Type qualifier `typing.Final` is not allowed in parameter annotations +qualifiers_final_annotation.py:132:8: error[invalid-type-form] `Final` is not allowed in TypedDict fields +qualifiers_final_annotation.py:137:5: error[invalid-named-tuple] Type qualifier `Final` is not allowed on NamedTuple field `b` +qualifiers_final_annotation.py:149:1: error[missing-argument] No arguments provided for required parameters `x`, `y` +qualifiers_final_annotation.py:149:3: error[unknown-argument] Argument `a` does not match any known parameter +qualifiers_final_annotation.py:150:3: error[invalid-argument-type] Argument is incorrect: Expected `int`, found `Literal[""]` +qualifiers_final_annotation.py:150:9: error[invalid-argument-type] Argument is incorrect: Expected `int`, found `Literal[""]` +qualifiers_final_annotation.py:156:5: error[invalid-assignment] Reassignment of `Final` symbol `ID1` is not allowed: Reassignment of `Final` symbol +qualifiers_final_annotation.py:160:5: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here +qualifiers_final_annotation.py:162:10: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here +qualifiers_final_annotation.py:164:9: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here +qualifiers_final_annotation.py:167:30: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here +qualifiers_final_annotation.py:170:9: error[invalid-assignment] Reassignment of `Final` symbol `x` is not allowed: Symbol later reassigned here +qualifiers_final_annotation.py:181:1: error[invalid-assignment] Reassignment of `Final` symbol `TEN` is not allowed: Reassignment of `Final` symbol +qualifiers_final_annotation.py:185:1: error[invalid-assignment] Reassignment of `Final` symbol `PI` is not allowed: Reassignment of `Final` symbol """ diff --git a/conformance/results/zuban/classes_classvar.toml b/conformance/results/zuban/classes_classvar.toml index 66b8d16c9..0c1672a81 100644 --- a/conformance/results/zuban/classes_classvar.toml +++ b/conformance/results/zuban/classes_classvar.toml @@ -2,27 +2,27 @@ conformance_automated = "Pass" errors_diff = """ """ output = """ -classes_classvar.py:40: error: ClassVar[...] must have at most one type argument [misc] -classes_classvar.py:41: error: Invalid type: try using Literal[3] instead? [valid-type] -classes_classvar.py:42: error: Name "var" is not defined [name-defined] +classes_classvar.py:39: error: ClassVar[...] must have at most one type argument [misc] +classes_classvar.py:40: error: Invalid type: try using Literal[3] instead? [valid-type] +classes_classvar.py:41: error: Name "var" is not defined [name-defined] +classes_classvar.py:46: error: ClassVar cannot contain type variables [misc] classes_classvar.py:47: error: ClassVar cannot contain type variables [misc] classes_classvar.py:48: error: ClassVar cannot contain type variables [misc] -classes_classvar.py:49: error: ClassVar cannot contain type variables [misc] -classes_classvar.py:54: error: Incompatible types in assignment (expression has type "dict[Any, Any]", variable has type "list[str]") [assignment] -classes_classvar.py:56: error: Invalid Type: ClassVar nested inside other type [misc] -classes_classvar.py:67: error: Type in ClassVar[...] can only be omitted if there is an initializer [misc] +classes_classvar.py:53: error: Incompatible types in assignment (expression has type "dict[Any, Any]", variable has type "list[str]") [assignment] +classes_classvar.py:55: error: Invalid Type: ClassVar nested inside other type [misc] +classes_classvar.py:66: error: Type in ClassVar[...] can only be omitted if there is an initializer [misc] +classes_classvar.py:69: error: ClassVar can only be used for assignments in class body [misc] classes_classvar.py:70: error: ClassVar can only be used for assignments in class body [misc] classes_classvar.py:71: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:72: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:74: error: ClassVar can only be used for assignments in class body [misc] +classes_classvar.py:73: error: ClassVar can only be used for assignments in class body [misc] +classes_classvar.py:77: error: ClassVar can only be used for assignments in class body [misc] classes_classvar.py:78: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:79: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:88: error: Invalid Type: ClassVar nested inside other type [misc] -classes_classvar.py:93: error: ClassVar can only be used for assignments in class body [misc] -classes_classvar.py:126: error: Cannot assign to class variable "stats" via instance [misc] -classes_classvar.py:155: error: Incompatible types in assignment (expression has type "ProtoAImpl", variable has type "ProtoA") [assignment] -classes_classvar.py:155: note: Protocol member ProtoA.x expected class variable, got instance variable -classes_classvar.py:155: note: Protocol member ProtoA.y expected class variable, got instance variable -classes_classvar.py:155: note: "ProtoAImpl" is missing following "ProtoA" protocol member: -classes_classvar.py:155: note: z +classes_classvar.py:87: error: Invalid Type: ClassVar nested inside other type [misc] +classes_classvar.py:92: error: ClassVar can only be used for assignments in class body [misc] +classes_classvar.py:125: error: Cannot assign to class variable "stats" via instance [misc] +classes_classvar.py:154: error: Incompatible types in assignment (expression has type "ProtoAImpl", variable has type "ProtoA") [assignment] +classes_classvar.py:154: note: Protocol member ProtoA.x expected class variable, got instance variable +classes_classvar.py:154: note: Protocol member ProtoA.y expected class variable, got instance variable +classes_classvar.py:154: note: "ProtoAImpl" is missing following "ProtoA" protocol member: +classes_classvar.py:154: note: z """ diff --git a/conformance/results/zuban/qualifiers_final_annotation.toml b/conformance/results/zuban/qualifiers_final_annotation.toml index 0ce9ac53e..fcb04f8d6 100644 --- a/conformance/results/zuban/qualifiers_final_annotation.toml +++ b/conformance/results/zuban/qualifiers_final_annotation.toml @@ -14,22 +14,22 @@ qualifiers_final_annotation.py:67: error: Cannot assign to final attribute "ID7" qualifiers_final_annotation.py:71: error: Cannot assign to final name "RATE" [misc] qualifiers_final_annotation.py:81: error: Cannot assign to final attribute "DEFAULT_ID" [misc] qualifiers_final_annotation.py:94: error: Cannot assign to final name "BORDER_WIDTH" [misc] -qualifiers_final_annotation.py:109: error: Final can be only used as an outermost qualifier in a variable annotation [misc] -qualifiers_final_annotation.py:110: error: Invalid Type: ClassVar nested inside other type [misc] -qualifiers_final_annotation.py:120: error: Final can be only used as an outermost qualifier in a variable annotation [misc] -qualifiers_final_annotation.py:123: error: Final can be only used as an outermost qualifier in a variable annotation [misc] -qualifiers_final_annotation.py:133: error: Final can be only used as an outermost qualifier in a variable annotation [misc] -qualifiers_final_annotation.py:138: error: Final can be only used as an outermost qualifier in a variable annotation [misc] -qualifiers_final_annotation.py:150: error: Unexpected keyword argument "a" for "N" [call-arg] -qualifiers_final_annotation.py:151: error: Argument "x" to "N" has incompatible type "str"; expected "int" [arg-type] -qualifiers_final_annotation.py:151: error: Argument "y" to "N" has incompatible type "str"; expected "int" [arg-type] -qualifiers_final_annotation.py:157: error: Cannot assign to final name "ID1" [misc] -qualifiers_final_annotation.py:161: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:163: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:165: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:168: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:168: error: Incompatible types in assignment (expression has type "TextIOWrapper[_WrappedBuffer]", variable has type "int") [assignment] -qualifiers_final_annotation.py:171: error: Cannot assign to final name "x" [misc] -qualifiers_final_annotation.py:182: error: Cannot assign to final name "TEN" [misc] -qualifiers_final_annotation.py:186: error: Cannot assign to final name "PI" [misc] +qualifiers_final_annotation.py:108: error: Final can be only used as an outermost qualifier in a variable annotation [misc] +qualifiers_final_annotation.py:109: error: Invalid Type: ClassVar nested inside other type [misc] +qualifiers_final_annotation.py:119: error: Final can be only used as an outermost qualifier in a variable annotation [misc] +qualifiers_final_annotation.py:122: error: Final can be only used as an outermost qualifier in a variable annotation [misc] +qualifiers_final_annotation.py:132: error: Final can be only used as an outermost qualifier in a variable annotation [misc] +qualifiers_final_annotation.py:137: error: Final can be only used as an outermost qualifier in a variable annotation [misc] +qualifiers_final_annotation.py:149: error: Unexpected keyword argument "a" for "N" [call-arg] +qualifiers_final_annotation.py:150: error: Argument "x" to "N" has incompatible type "str"; expected "int" [arg-type] +qualifiers_final_annotation.py:150: error: Argument "y" to "N" has incompatible type "str"; expected "int" [arg-type] +qualifiers_final_annotation.py:156: error: Cannot assign to final name "ID1" [misc] +qualifiers_final_annotation.py:160: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:162: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:164: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:167: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:167: error: Incompatible types in assignment (expression has type "TextIOWrapper[_WrappedBuffer]", variable has type "int") [assignment] +qualifiers_final_annotation.py:170: error: Cannot assign to final name "x" [misc] +qualifiers_final_annotation.py:181: error: Cannot assign to final name "TEN" [misc] +qualifiers_final_annotation.py:185: error: Cannot assign to final name "PI" [misc] """