diff --git a/conformance/results/mypy/callables_kwargs.toml b/conformance/results/mypy/callables_kwargs.toml index f22038601..571931b13 100644 --- a/conformance/results/mypy/callables_kwargs.toml +++ b/conformance/results/mypy/callables_kwargs.toml @@ -3,7 +3,6 @@ notes = """ Allows callable without kwargs to be assigned to callable with unpacked kwargs """ output = """ -callables_kwargs.py:22: note: "func1" defined here callables_kwargs.py:46: error: Missing named argument "v1" for "func1" [call-arg] callables_kwargs.py:46: error: Missing named argument "v3" for "func1" [call-arg] callables_kwargs.py:51: error: Unexpected keyword argument "v4" for "func1" [call-arg] @@ -15,14 +14,14 @@ callables_kwargs.py:63: error: "func1" gets multiple values for keyword argument callables_kwargs.py:64: error: "func2" gets multiple values for keyword argument "v3" [misc] callables_kwargs.py:64: error: Argument 1 to "func2" has incompatible type "int"; expected "str" [arg-type] callables_kwargs.py:65: error: "func2" gets multiple values for keyword argument "v1" [misc] -callables_kwargs.py:101: error: Incompatible types in assignment (expression has type "def func1(**kwargs: Unpack[TD2]) -> None", variable has type "TDProtocol3") [assignment] +callables_kwargs.py:101: error: Incompatible types in assignment (expression has type "def func1(**kwargs: **TD2) -> None", variable has type "TDProtocol3") [assignment] callables_kwargs.py:101: note: "TDProtocol3.__call__" has type "def __call__(self, *, v1: int, v2: int, v3: str) -> None" -callables_kwargs.py:102: error: Incompatible types in assignment (expression has type "def func1(**kwargs: Unpack[TD2]) -> None", variable has type "TDProtocol4") [assignment] +callables_kwargs.py:102: error: Incompatible types in assignment (expression has type "def func1(**kwargs: **TD2) -> None", variable has type "TDProtocol4") [assignment] callables_kwargs.py:102: note: "TDProtocol4.__call__" has type "def __call__(self, *, v1: int) -> None" -callables_kwargs.py:103: error: Incompatible types in assignment (expression has type "def func1(**kwargs: Unpack[TD2]) -> None", variable has type "TDProtocol5") [assignment] +callables_kwargs.py:103: error: Incompatible types in assignment (expression has type "def func1(**kwargs: **TD2) -> None", variable has type "TDProtocol5") [assignment] callables_kwargs.py:103: note: "TDProtocol5.__call__" has type "def __call__(self, v1: int, v3: str) -> None" -callables_kwargs.py:111: error: Overlap between argument names and ** TypedDict items: "v1" [misc] -callables_kwargs.py:122: error: Unpack item in ** argument must be a TypedDict [misc] +callables_kwargs.py:111: error: Overlap between parameter names and ** TypedDict items: "v1" [misc] +callables_kwargs.py:122: error: Unpack item in ** parameter must be a TypedDict [misc] """ conformance_automated = "Fail" errors_diff = """ diff --git a/conformance/results/mypy/constructors_callable.toml b/conformance/results/mypy/constructors_callable.toml index 0a73c46b8..2d788f335 100644 --- a/conformance/results/mypy/constructors_callable.toml +++ b/conformance/results/mypy/constructors_callable.toml @@ -17,17 +17,17 @@ Line 128: Unexpected errors ['constructors_callable.py:128: error: Expression is Line 145: Unexpected errors ['constructors_callable.py:145: error: Expression is of type "Class6Any", not "Any" [assert-type]', 'constructors_callable.py:145: error: Too few arguments [call-arg]'] """ output = """ -constructors_callable.py:36: note: Revealed type is "def (x: builtins.int) -> constructors_callable.Class1" +constructors_callable.py:36: note: Revealed type is "def (x: int) -> constructors_callable.Class1" constructors_callable.py:38: error: Too few arguments [call-arg] constructors_callable.py:39: error: Unexpected keyword argument "y" [call-arg] constructors_callable.py:49: note: Revealed type is "def () -> constructors_callable.Class2" constructors_callable.py:51: error: Too many arguments [call-arg] -constructors_callable.py:64: note: Revealed type is "def (x: builtins.int) -> constructors_callable.Class3" +constructors_callable.py:64: note: Revealed type is "def (x: int) -> constructors_callable.Class3" constructors_callable.py:66: error: Too few arguments [call-arg] constructors_callable.py:67: error: Unexpected keyword argument "y" [call-arg] constructors_callable.py:68: error: Too many arguments [call-arg] constructors_callable.py:74: error: Incompatible return type for "__new__" (returns "int", but must return a subtype of "Class4") [misc] -constructors_callable.py:79: note: Revealed type is "def (x: builtins.int) -> constructors_callable.Class4" +constructors_callable.py:79: note: Revealed type is "def (x: int) -> constructors_callable.Class4" constructors_callable.py:80: error: Expression is of type "Class4", not "int" [assert-type] constructors_callable.py:81: error: Too few arguments [call-arg] constructors_callable.py:82: error: Unexpected keyword argument "y" [call-arg] @@ -35,15 +35,15 @@ constructors_callable.py:99: note: Revealed type is "def (*args: Any, **kwargs: constructors_callable.py:102: error: Expression is of type "Class5", not "Never" [assert-type] constructors_callable.py:107: error: Expression is of type "Class5", not "Never" [assert-type] constructors_callable.py:118: error: Incompatible return type for "__new__" (returns "Class6Proxy", but must return a subtype of "Class6") [misc] -constructors_callable.py:127: note: Revealed type is "def (x: builtins.int) -> constructors_callable.Class6" +constructors_callable.py:127: note: Revealed type is "def (x: int) -> constructors_callable.Class6" constructors_callable.py:128: error: Expression is of type "Class6", not "Class6Proxy" [assert-type] constructors_callable.py:128: error: Too few arguments [call-arg] -constructors_callable.py:144: note: Revealed type is "def (x: builtins.int) -> constructors_callable.Class6Any" +constructors_callable.py:144: note: Revealed type is "def (x: int) -> constructors_callable.Class6Any" constructors_callable.py:145: error: Expression is of type "Class6Any", not "Any" [assert-type] constructors_callable.py:145: error: Too few arguments [call-arg] -constructors_callable.py:164: note: Revealed type is "Overload(def (x: builtins.int) -> constructors_callable.Class7[builtins.int], def (x: builtins.str) -> constructors_callable.Class7[builtins.str])" -constructors_callable.py:184: note: Revealed type is "def [T] (x: builtins.list[T`1], y: builtins.list[T`1]) -> constructors_callable.Class8[T`1]" +constructors_callable.py:164: note: Revealed type is "Overload(def (x: int) -> constructors_callable.Class7[int], def (x: str) -> constructors_callable.Class7[str])" +constructors_callable.py:184: note: Revealed type is "def [T] (x: list[T], y: list[T]) -> constructors_callable.Class8[T]" constructors_callable.py:186: error: Cannot infer function type argument [misc] -constructors_callable.py:195: note: Revealed type is "def [T] (x: builtins.list[T`-1], y: builtins.list[T`-1]) -> constructors_callable.Class9" +constructors_callable.py:195: note: Revealed type is "def [T] (x: list[T], y: list[T]) -> constructors_callable.Class9" constructors_callable.py:197: error: Cannot infer function type argument [misc] """ diff --git a/conformance/results/mypy/dataclasses_descriptors.toml b/conformance/results/mypy/dataclasses_descriptors.toml index 6e02a182d..e0c1e1426 100644 --- a/conformance/results/mypy/dataclasses_descriptors.toml +++ b/conformance/results/mypy/dataclasses_descriptors.toml @@ -3,11 +3,15 @@ notes = """ Does not correctly evaluate type of descriptor access. """ output = """ +dataclasses_descriptors.py:61: error: Cannot access instance-only attribute "x" on class object [misc] +dataclasses_descriptors.py:62: error: Cannot access instance-only attribute "y" on class object [misc] dataclasses_descriptors.py:66: error: Expression is of type "Desc2[int]", not "int" [assert-type] dataclasses_descriptors.py:67: error: Expression is of type "Desc2[str]", not "str" [assert-type] """ conformance_automated = "Fail" errors_diff = """ +Line 61: Unexpected errors ['dataclasses_descriptors.py:61: error: Cannot access instance-only attribute "x" on class object [misc]'] +Line 62: Unexpected errors ['dataclasses_descriptors.py:62: error: Cannot access instance-only attribute "y" on class object [misc]'] Line 66: Unexpected errors ['dataclasses_descriptors.py:66: error: Expression is of type "Desc2[int]", not "int" [assert-type]'] Line 67: Unexpected errors ['dataclasses_descriptors.py:67: error: Expression is of type "Desc2[str]", not "str" [assert-type]'] """ diff --git a/conformance/results/mypy/directives_deprecated.toml b/conformance/results/mypy/directives_deprecated.toml index 153d58c5b..e7bec6ab7 100644 --- a/conformance/results/mypy/directives_deprecated.toml +++ b/conformance/results/mypy/directives_deprecated.toml @@ -6,7 +6,7 @@ output = """ directives_deprecated.py:18: error: class _directives_deprecated_library.Ham is deprecated: Use Spam instead [deprecated] directives_deprecated.py:24: error: function _directives_deprecated_library.norwegian_blue is deprecated: It is pining for the fjords [deprecated] directives_deprecated.py:25: error: function _directives_deprecated_library.norwegian_blue is deprecated: It is pining for the fjords [deprecated] -directives_deprecated.py:30: error: overload def (x: builtins.int) -> builtins.str of function _directives_deprecated_library.foo is deprecated: Only str will be allowed [deprecated] +directives_deprecated.py:30: error: overload def (x: int) -> str of function _directives_deprecated_library.foo is deprecated: Only str will be allowed [deprecated] directives_deprecated.py:41: error: function _directives_deprecated_library.Spam.__add__ is deprecated: There is enough spam in the world [deprecated] directives_deprecated.py:42: error: function _directives_deprecated_library.Spam.__add__ is deprecated: There is enough spam in the world [deprecated] directives_deprecated.py:44: error: function _directives_deprecated_library.Spam.greasy is deprecated: All spam will be equally greasy [deprecated] diff --git a/conformance/results/mypy/directives_reveal_type.toml b/conformance/results/mypy/directives_reveal_type.toml index c5853ba33..41a8c8720 100644 --- a/conformance/results/mypy/directives_reveal_type.toml +++ b/conformance/results/mypy/directives_reveal_type.toml @@ -1,7 +1,7 @@ conformant = "Pass" output = """ -directives_reveal_type.py:14: note: Revealed type is "builtins.int | builtins.str" -directives_reveal_type.py:15: note: Revealed type is "builtins.list[builtins.int]" +directives_reveal_type.py:14: note: Revealed type is "int | str" +directives_reveal_type.py:15: note: Revealed type is "list[int]" directives_reveal_type.py:16: note: Revealed type is "Any" directives_reveal_type.py:17: note: Revealed type is "directives_reveal_type.ForwardReference" directives_reveal_type.py:19: error: "reveal_type" expects 1 argument [misc] diff --git a/conformance/results/mypy/generics_defaults_referential.toml b/conformance/results/mypy/generics_defaults_referential.toml index ea09457d9..e8484dc7d 100644 --- a/conformance/results/mypy/generics_defaults_referential.toml +++ b/conformance/results/mypy/generics_defaults_referential.toml @@ -6,6 +6,7 @@ output = """ generics_defaults_referential.py:23: error: Expression is of type "type[slice[StartT, StopT, StepT]]", not "type[slice[int, int, int | None]]" [assert-type] generics_defaults_referential.py:38: error: Argument 1 to "Foo" has incompatible type "str"; expected "int" [arg-type] generics_defaults_referential.py:54: error: Type parameter "Start2T" has a default type that refers to one or more type variables that are out of scope [misc] +generics_defaults_referential.py:61: error: Type variable S1 referenced in the default of S2 is unbound [misc] generics_defaults_referential.py:75: error: TypeVar default must be one of the constraint types [misc] generics_defaults_referential.py:78: error: TypeVar default must be one of the constraint types [misc] generics_defaults_referential.py:79: error: TypeVar default must be one of the constraint types [misc] @@ -14,7 +15,6 @@ generics_defaults_referential.py:104: error: Expression is of type "Bar[int, lis conformance_automated = "Fail" errors_diff = """ Line 37: Expected 1 errors -Line 61: Expected 1 errors Line 69: Expected 1 errors Line 23: Unexpected errors ['generics_defaults_referential.py:23: error: Expression is of type "type[slice[StartT, StopT, StepT]]", not "type[slice[int, int, int | None]]" [assert-type]'] Line 78: Unexpected errors ['generics_defaults_referential.py:78: error: TypeVar default must be one of the constraint types [misc]'] diff --git a/conformance/results/mypy/historical_positional.toml b/conformance/results/mypy/historical_positional.toml index e3dec35e3..1338644ef 100644 --- a/conformance/results/mypy/historical_positional.toml +++ b/conformance/results/mypy/historical_positional.toml @@ -5,13 +5,9 @@ Treats keyword-only parameter as positional-only. Applies legacy positional-only rules when PEP 570 syntax is used. """ output = """ -historical_positional.py:13: note: "f1" defined here historical_positional.py:18: error: Unexpected keyword argument "__x" for "f1" [call-arg] -historical_positional.py:45: note: "f3" defined here historical_positional.py:48: error: Unexpected keyword argument "__y" for "f3" [call-arg] -historical_positional.py:52: note: "m1" of "A" defined here historical_positional.py:59: error: Unexpected keyword argument "__x" for "m1" of "A" [call-arg] -historical_positional.py:66: note: "f4" defined here historical_positional.py:69: error: Unexpected keyword argument "__y" for "f4" [call-arg] """ conformance_automated = "Fail" diff --git a/conformance/results/mypy/overloads_consistency.toml b/conformance/results/mypy/overloads_consistency.toml index 26cb4d916..1010582c5 100644 --- a/conformance/results/mypy/overloads_consistency.toml +++ b/conformance/results/mypy/overloads_consistency.toml @@ -4,5 +4,5 @@ errors_diff = """ """ output = """ overloads_consistency.py:28: error: Overloaded function implementation cannot produce return type of signature 2 [misc] -overloads_consistency.py:44: error: Overloaded function implementation does not accept all possible arguments of signature 2 [misc] +overloads_consistency.py:44: error: Overloaded function implementation does not accept all possible parameters of signature 2 [misc] """ diff --git a/conformance/results/mypy/tuples_type_compat.toml b/conformance/results/mypy/tuples_type_compat.toml index da7c5e84f..602e6cd5d 100644 --- a/conformance/results/mypy/tuples_type_compat.toml +++ b/conformance/results/mypy/tuples_type_compat.toml @@ -12,9 +12,8 @@ tuples_type_compat.py:62: error: Incompatible types in assignment (expression ha tuples_type_compat.py:76: error: Expression is of type "tuple[int]", not "tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]" [assert-type] tuples_type_compat.py:81: error: Expression is of type "tuple[str, str] | tuple[int, int]", not "tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]" [assert-type] tuples_type_compat.py:86: error: Expression is of type "tuple[int, str, int]", not "tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]" [assert-type] -tuples_type_compat.py:101: error: Expression is of type "tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]", not "tuple[int]" [assert-type] -tuples_type_compat.py:106: error: Expression is of type "tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]", not "tuple[str, str] | tuple[int, int]" [assert-type] -tuples_type_compat.py:111: error: Expression is of type "tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]", not "tuple[int, str, int]" [assert-type] +tuples_type_compat.py:102: error: Expression is of type "tuple[int]", not "tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]" [assert-type] +tuples_type_compat.py:107: error: Expression is of type "tuple[str, str] | tuple[int, int]", not "tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]" [assert-type] tuples_type_compat.py:127: error: Expression is of type "tuple[int | str, str]", not "tuple[int | str, int | str]" [assert-type] tuples_type_compat.py:130: error: Expression is of type "tuple[int | str, int]", not "tuple[int | str, int | str]" [assert-type] tuples_type_compat.py:149: error: Expression is of type "Sequence[object]", not "Sequence[complex | list[int]]" [assert-type] @@ -32,6 +31,7 @@ tuples_type_compat.py:188: error: Incompatible types in assignment (expression h """ conformance_automated = "Fail" errors_diff = """ +Lines 111, 112: Expected error (tag 'func6_3') Line 149: Unexpected errors ['tuples_type_compat.py:149: error: Expression is of type "Sequence[object]", not "Sequence[complex | list[int]]" [assert-type]'] Line 152: Unexpected errors ['tuples_type_compat.py:152: error: Expression is of type "Sequence[object]", not "Sequence[int | str]" [assert-type]'] """ diff --git a/conformance/results/mypy/typeddicts_extra_items.toml b/conformance/results/mypy/typeddicts_extra_items.toml index 1fdda3d4d..e7c58f8bc 100644 --- a/conformance/results/mypy/typeddicts_extra_items.toml +++ b/conformance/results/mypy/typeddicts_extra_items.toml @@ -99,8 +99,6 @@ typeddicts_extra_items.py:124: error: Unexpected keyword argument "extra_items" typeddicts_extra_items.py:128: error: Key "name" of TypedDict "MovieEI" cannot be deleted [misc] typeddicts_extra_items.py:129: error: TypedDict "MovieEI" has no key "year" [typeddict-item] typeddicts_extra_items.py:137: error: Unexpected keyword argument "extra_items" for "__init_subclass__" of "TypedDict" [call-arg] -typeddicts_extra_items.py:140: note: "unpack_no_extra" defined here -typeddicts_extra_items.py:141: note: "unpack_extra" defined here typeddicts_extra_items.py:143: error: Unexpected keyword argument "year" for "unpack_no_extra" [call-arg] typeddicts_extra_items.py:144: error: Unexpected keyword argument "year" for "unpack_extra" [call-arg] typeddicts_extra_items.py:149: error: Unexpected keyword argument "extra_items" for "__init_subclass__" of "TypedDict" [call-arg] diff --git a/conformance/results/mypy/version.toml b/conformance/results/mypy/version.toml index 6356188e2..4b6d1d608 100644 --- a/conformance/results/mypy/version.toml +++ b/conformance/results/mypy/version.toml @@ -1 +1 @@ -version = "mypy 1.19.1" +version = "mypy 1.20.0" diff --git a/conformance/results/pyrefly/callables_annotation.toml b/conformance/results/pyrefly/callables_annotation.toml index 7ddb09654..efbdf98e8 100644 --- a/conformance/results/pyrefly/callables_annotation.toml +++ b/conformance/results/pyrefly/callables_annotation.toml @@ -14,10 +14,10 @@ ERROR callables_annotation.py:29:8-9: Unexpected keyword argument `a` [unexpecte ERROR callables_annotation.py:29:8-11: Expected 2 more positional arguments [bad-argument-count] ERROR callables_annotation.py:29:13-14: Unexpected keyword argument `b` [unexpected-keyword] ERROR callables_annotation.py:35:8-9: Expected 0 positional arguments, got 1 [bad-argument-count] -ERROR callables_annotation.py:55:5-18: `Callable` requires exactly two arguments but 1 was found [bad-specialization] +ERROR callables_annotation.py:55:5-18: Expected 2 arguments for `Callable`, got 1 [bad-specialization] ERROR callables_annotation.py:56:14-17: Callable types can only have `ParamSpec` in this position, got `int` [bad-specialization] ERROR callables_annotation.py:57:18-23: Expected a type form, got instance of `list[type[int]]` [not-a-type] -ERROR callables_annotation.py:58:5-28: `Callable` requires exactly two arguments but 3 was found [bad-specialization] +ERROR callables_annotation.py:58:5-28: Expected 2 arguments for `Callable`, got 3 [bad-specialization] ERROR callables_annotation.py:59:15-18: Invalid position for `...` [invalid-argument] ERROR callables_annotation.py:91:7-15: `() -> str` is not assignable to variable `cb3` with type `(int, ...) -> str` [bad-assignment] ERROR callables_annotation.py:93:7-15: `(*, a: int) -> str` is not assignable to variable `cb3` with type `(int, ...) -> str` [bad-assignment] diff --git a/conformance/results/pyrefly/directives_no_type_check.toml b/conformance/results/pyrefly/directives_no_type_check.toml index e3669041a..52623ac35 100644 --- a/conformance/results/pyrefly/directives_no_type_check.toml +++ b/conformance/results/pyrefly/directives_no_type_check.toml @@ -4,8 +4,6 @@ errors_diff = """ """ output = """ ERROR directives_no_type_check.py:15:14-16: `Literal['']` is not assignable to `int` [bad-assignment] -ERROR directives_no_type_check.py:29:7-17: Argument `Literal[b'invalid']` is not assignable to parameter `a` with type `int` in function `func1` [bad-argument-type] -ERROR directives_no_type_check.py:29:19-31: Argument `Literal[b'arguments']` is not assignable to parameter `b` with type `str` in function `func1` [bad-argument-type] ERROR directives_no_type_check.py:32:6-8: Missing argument `a` in function `func1` [missing-argument] ERROR directives_no_type_check.py:32:6-8: Missing argument `b` in function `func1` [missing-argument] """ diff --git a/conformance/results/pyrefly/enums_member_values.toml b/conformance/results/pyrefly/enums_member_values.toml index e90c4678c..5ac05b3dd 100644 --- a/conformance/results/pyrefly/enums_member_values.toml +++ b/conformance/results/pyrefly/enums_member_values.toml @@ -3,12 +3,9 @@ conformance_automated = "Pass" errors_diff = """ """ output = """ -ERROR enums_member_values.py:21:12-43: assert_type(int, Literal[1]) failed [assert-type] -ERROR enums_member_values.py:22:12-41: assert_type(int, Literal[1]) failed [assert-type] -ERROR enums_member_values.py:26:16-50: assert_type(int, Literal[1, 3]) failed [assert-type] ERROR enums_member_values.py:30:16-51: assert_type(int, Literal[1, 2, 3]) failed [assert-type] ERROR enums_member_values.py:54:12-46: assert_type(Any, Literal[1]) failed [assert-type] ERROR enums_member_values.py:68:12-42: assert_type(int, Literal[1]) failed [assert-type] -ERROR enums_member_values.py:78:5-10: Enum member `GREEN` has type `str`, must match the `_value_` attribute annotation of `int` [bad-assignment] +ERROR enums_member_values.py:78:5-10: Enum member `GREEN` has type `Literal['green']`, must match the `_value_` attribute annotation of `int` [bad-assignment] ERROR enums_member_values.py:85:24-29: `int` is not assignable to attribute `_value_` with type `str` [bad-assignment] """ diff --git a/conformance/results/pyrefly/generics_paramspec_components.toml b/conformance/results/pyrefly/generics_paramspec_components.toml index 1dbe5ff1e..03d98dbde 100644 --- a/conformance/results/pyrefly/generics_paramspec_components.toml +++ b/conformance/results/pyrefly/generics_paramspec_components.toml @@ -1,10 +1,5 @@ -conformant = "Partial" -notes = """ -Does not reject usage of args/kwargs for out-of-scope ParamSpec -""" -conformance_automated = "Fail" +conformance_automated = "Pass" errors_diff = """ -Line 30: Expected 1 errors """ output = """ ERROR generics_paramspec_components.py:17:25-33: `ParamSpec` **kwargs is only allowed in a **kwargs annotation [invalid-annotation] @@ -13,6 +8,8 @@ ERROR generics_paramspec_components.py:20:23-29: `ParamSpec` *args is only allow ERROR generics_paramspec_components.py:23:5-24:13: `ParamSpec` *args and **kwargs must be used together [invalid-param-spec] ERROR generics_paramspec_components.py:23:46-52: `ParamSpec` *args is only allowed in an *args annotation [invalid-annotation] ERROR generics_paramspec_components.py:26:5-27:13: `ParamSpec` *args and **kwargs must be used together [invalid-param-spec] +ERROR generics_paramspec_components.py:30:25-31: Expected a type form, got instance of `ParamSpecArgs` [not-a-type] +ERROR generics_paramspec_components.py:30:43-51: Expected a type form, got instance of `ParamSpecKwargs` [not-a-type] ERROR generics_paramspec_components.py:35:18-24: `ParamSpec` *args is only allowed in an *args annotation [invalid-annotation] ERROR generics_paramspec_components.py:36:20-28: `ParamSpec` **kwargs is only allowed in a **kwargs annotation [invalid-annotation] ERROR generics_paramspec_components.py:38:5-39:13: `ParamSpec` *args and **kwargs must be used together [invalid-param-spec] @@ -22,8 +19,7 @@ ERROR generics_paramspec_components.py:51:11-12: Expected 0 positional arguments ERROR generics_paramspec_components.py:60:28-34: Keyword-only parameter `s` may not appear after ParamSpec args parameter [bad-function-definition] ERROR generics_paramspec_components.py:70:10-30: Expected *-unpacked P.args and **-unpacked P.kwargs [invalid-param-spec] ERROR generics_paramspec_components.py:72:10-27: Expected 1 more positional argument [bad-argument-count] -ERROR generics_paramspec_components.py:83:13-14: Unexpected keyword argument `x` in function `foo` [unexpected-keyword] -ERROR generics_paramspec_components.py:83:13-16: Expected 1 more positional argument in function `foo` [bad-argument-count] +ERROR generics_paramspec_components.py:83:13-14: Expected argument `x` to be positional in function `foo` [unexpected-keyword] ERROR generics_paramspec_components.py:98:20-23: Argument `Literal['A']` is not assignable to parameter `a` with type `int` in function `twice` [bad-argument-type] ERROR generics_paramspec_components.py:98:25-26: Argument `Literal[1]` is not assignable to parameter `b` with type `str` in function `twice` [bad-argument-type] """ diff --git a/conformance/results/pyrefly/generics_self_usage.toml b/conformance/results/pyrefly/generics_self_usage.toml index 7505dd888..8d26f2592 100644 --- a/conformance/results/pyrefly/generics_self_usage.toml +++ b/conformance/results/pyrefly/generics_self_usage.toml @@ -4,13 +4,13 @@ Does not implement some restrictions on where Self can be used """ conformance_automated = "Fail" errors_diff = """ -Line 82: Expected 1 errors Line 87: Expected 1 errors """ output = """ ERROR generics_self_usage.py:73:14-18: `Self` must appear within a class [invalid-annotation] ERROR generics_self_usage.py:73:23-27: `Self` must appear within a class [invalid-annotation] ERROR generics_self_usage.py:76:6-10: `Self` must appear within a class [invalid-annotation] +ERROR generics_self_usage.py:82:9-37: `Self` cannot be used when `self` has an explicit TypeVar annotation [invalid-annotation] ERROR generics_self_usage.py:103:15-19: `Self` must appear within a class [invalid-annotation] ERROR generics_self_usage.py:105:12-16: `Self` must appear within a class [invalid-annotation] ERROR generics_self_usage.py:105:12-16: Invalid base class: `Self` [invalid-inheritance] diff --git a/conformance/results/pyrefly/protocols_modules.toml b/conformance/results/pyrefly/protocols_modules.toml index 88eae7936..08e55a351 100644 --- a/conformance/results/pyrefly/protocols_modules.toml +++ b/conformance/results/pyrefly/protocols_modules.toml @@ -1,13 +1,7 @@ -conformant = "Partial" -notes = """ -Fails one subtyping example of protocol modules -""" -conformance_automated = "Fail" +conformance_automated = "Pass" errors_diff = """ -Line 25: Unexpected errors ['`Module[_protocols_modules1]` is not assignable to `Options1` [bad-assignment]'] """ output = """ -ERROR protocols_modules.py:25:17-36: `Module[_protocols_modules1]` is not assignable to `Options1` [bad-assignment] ERROR protocols_modules.py:26:17-36: `Module[_protocols_modules1]` is not assignable to `Options2` [bad-assignment] ERROR protocols_modules.py:48:18-37: `Module[_protocols_modules2]` is not assignable to `Reporter2` [bad-assignment] ERROR protocols_modules.py:49:18-37: `Module[_protocols_modules2]` is not assignable to `Reporter3` [bad-assignment] diff --git a/conformance/results/pyrefly/qualifiers_final_annotation.toml b/conformance/results/pyrefly/qualifiers_final_annotation.toml index 10c83546a..eda91ff00 100644 --- a/conformance/results/pyrefly/qualifiers_final_annotation.toml +++ b/conformance/results/pyrefly/qualifiers_final_annotation.toml @@ -1,13 +1,5 @@ -conformant = "Partial" -notes = """ -Does not reject Final inside ClassVar. -Issues with NamedTuple interaction. -""" -conformance_automated = "Fail" +conformance_automated = "Pass" errors_diff = """ -Line 107: Expected 1 errors -Line 131: Unexpected errors ['Expected first item to be a string literal [invalid-argument]', 'Expected first item to be a string literal [invalid-argument]'] -Line 133: Unexpected errors ['Unexpected keyword argument `x` in function `N.__new__` [unexpected-keyword]', 'Unexpected keyword argument `y` in function `N.__new__` [unexpected-keyword]'] """ output = """ ERROR qualifiers_final_annotation.py:16:7-12: Expected a type argument for `Final` [invalid-annotation] @@ -22,17 +14,16 @@ 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:23-24: Expected first item to be a string literal [invalid-argument] -ERROR qualifiers_final_annotation.py:131:33-34: Expected first item to be a string literal [invalid-argument] -ERROR qualifiers_final_annotation.py:133:3-4: Unexpected keyword argument `x` in function `N.__new__` [unexpected-keyword] -ERROR qualifiers_final_annotation.py:133:8-9: Unexpected keyword argument `y` in function `N.__new__` [unexpected-keyword] +ERROR qualifiers_final_annotation.py:134:2-7: Missing argument `x` in function `N.__new__` [missing-argument] +ERROR qualifiers_final_annotation.py:134:2-7: Missing argument `y` in function `N.__new__` [missing-argument] ERROR qualifiers_final_annotation.py:134:3-4: Unexpected keyword argument `a` in function `N.__new__` [unexpected-keyword] -ERROR qualifiers_final_annotation.py:135:3-4: Unexpected keyword argument `x` in function `N.__new__` [unexpected-keyword] -ERROR qualifiers_final_annotation.py:135:9-10: Unexpected keyword argument `y` in function `N.__new__` [unexpected-keyword] +ERROR qualifiers_final_annotation.py:135: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:135: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:141:11-12: Cannot assign to variable `ID1` because it is marked final [bad-assignment] ERROR qualifiers_final_annotation.py:145:5-11: Cannot assign to variable `x` because it is marked final [bad-assignment] ERROR qualifiers_final_annotation.py:147:15-16: Cannot assign to variable `x` because it is marked final [bad-assignment] diff --git a/conformance/results/pyrefly/qualifiers_final_decorator.toml b/conformance/results/pyrefly/qualifiers_final_decorator.toml index aba68da0a..381d74150 100644 --- a/conformance/results/pyrefly/qualifiers_final_decorator.toml +++ b/conformance/results/pyrefly/qualifiers_final_decorator.toml @@ -12,5 +12,5 @@ ERROR qualifiers_final_decorator.py:81:9-15: `method` is declared as final in pa ERROR qualifiers_final_decorator.py:86:9-15: `@final` should only be applied to the implementation of an overloaded function. [invalid-overload] ERROR qualifiers_final_decorator.py:95:9-15: `method` is declared as final in parent class `Base4` [bad-override] ERROR qualifiers_final_decorator.py:118:9-15: `method` is declared as final in parent class `Base5_2` [bad-override] -ERROR qualifiers_final_decorator.py:125:1-7: Decorator `@final` can only be used on methods. [invalid-decorator] + WARN qualifiers_final_decorator.py:125:1-7: Decorator `@final` can only be used on methods. [invalid-decorator] """ diff --git a/conformance/results/pyrefly/typeddicts_alt_syntax.toml b/conformance/results/pyrefly/typeddicts_alt_syntax.toml index 6781d8452..ab8a7e821 100644 --- a/conformance/results/pyrefly/typeddicts_alt_syntax.toml +++ b/conformance/results/pyrefly/typeddicts_alt_syntax.toml @@ -5,7 +5,7 @@ errors_diff = """ output = """ ERROR typeddicts_alt_syntax.py:23:1-14: Expected valid functional typed dictionary definition [invalid-argument] ERROR typeddicts_alt_syntax.py:27:45-46: Expected first item to be a string literal [invalid-argument] -ERROR typeddicts_alt_syntax.py:31:27-38: Expected string literal "BadTypedDict3" [invalid-argument] + WARN typeddicts_alt_syntax.py:31:27-38: Expected string literal "BadTypedDict3" [name-mismatch] ERROR typeddicts_alt_syntax.py:35:72-83: Unrecognized keyword argument `other` in typed dictionary definition [invalid-argument] ERROR typeddicts_alt_syntax.py:41:1-7: Expected valid functional typed dictionary definition [invalid-argument] ERROR typeddicts_alt_syntax.py:41:30-38: Unrecognized keyword argument `name` in typed dictionary definition [invalid-argument] diff --git a/conformance/results/pyrefly/typeforms_typeform.toml b/conformance/results/pyrefly/typeforms_typeform.toml index 5a6215d4f..0b882d7fa 100644 --- a/conformance/results/pyrefly/typeforms_typeform.toml +++ b/conformance/results/pyrefly/typeforms_typeform.toml @@ -1,78 +1,32 @@ -conformant = "Unsupported" +conformant = "Partial" +notes = """ +Does not allow assigning a TypeForm to types.GenericAlias. +Does not allow passing a forward reference to a function accepting a TypeForm. +""" conformance_automated = "Fail" errors_diff = """ -Line 59: Expected 1 errors -Line 15: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 16: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 17: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 18: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 19: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 20: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 21: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 29: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 30: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 31: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 32: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 40: Unexpected errors ['Expected a type form, got instance of `_SpecialForm` [not-a-type]'] -Line 41: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 46: Unexpected errors ['`type[str | None]` is not assignable to `UnionType` [bad-assignment]'] -Line 47: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] Line 49: Unexpected errors ['`type[list[int]]` is not assignable to `GenericAlias` [bad-assignment]', 'Expected `v2_actual` to be a type alias, got `GenericAlias` [invalid-type-alias]'] -Line 50: Unexpected errors ['Expected a type form, got instance of `_SpecialForm` [not-a-type]'] -Line 52: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 53: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 80: Unexpected errors ['Expected a callable, got `_SpecialForm` [not-callable]'] -Line 81: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 83: Unexpected errors ['Expected a callable, got `_SpecialForm` [not-callable]'] -Line 84: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 93: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 97: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] -Line 107: Unexpected errors ['Expected a type form, got instance of `object` [not-a-type]'] +Line 58: Unexpected errors ["Argument `Literal['int']` is not assignable to parameter `x` with type `TypeForm[Any]` in function `func1` [bad-argument-type]"] """ output = """ -ERROR typeforms_typeform.py:15:6-26: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:16:6-26: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:17:6-26: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:18:6-26: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:19:6-26: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:20:6-26: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:21:6-26: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:23:7-27: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:24:7-27: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:29:8-21: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:30:8-21: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:31:20-33: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:32:20-33: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:40:14-22: Expected a type form, got instance of `_SpecialForm` [not-a-type] -ERROR typeforms_typeform.py:41:20-33: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:46:30-40: `type[str | None]` is not assignable to `UnionType` [bad-assignment] -ERROR typeforms_typeform.py:47:15-35: Expected a type form, got instance of `object` [not-a-type] +ERROR typeforms_typeform.py:23:30-39: `type[int | str]` is not assignable to `TypeForm[str | None]` [bad-assignment] +ERROR typeforms_typeform.py:24:30-46: `type[list[str | None]]` is not assignable to `TypeForm[str | None]` [bad-assignment] ERROR typeforms_typeform.py:49:33-42: `type[list[int]]` is not assignable to `GenericAlias` [bad-assignment] ERROR typeforms_typeform.py:49:33-42: Expected `v2_actual` to be a type alias, got `GenericAlias` [invalid-type-alias] -ERROR typeforms_typeform.py:50:15-23: Expected a type form, got instance of `_SpecialForm` [not-a-type] -ERROR typeforms_typeform.py:52:5-24: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:53:5-23: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:67:7-15: Expected a type form, got instance of `_SpecialForm` [not-a-type] -ERROR typeforms_typeform.py:68:7-15: Expected a type form, got instance of `_SpecialForm` [not-a-type] -ERROR typeforms_typeform.py:69:7-15: Expected a type form, got instance of `_SpecialForm` [not-a-type] -ERROR typeforms_typeform.py:70:7-15: Expected a type form, got instance of `_SpecialForm` [not-a-type] +ERROR typeforms_typeform.py:58:7-12: Argument `Literal['int']` is not assignable to parameter `x` with type `TypeForm[Any]` in function `func1` [bad-argument-type] +ERROR typeforms_typeform.py:59:7-19: Argument `Literal['not a type']` is not assignable to parameter `x` with type `TypeForm[Any]` in function `func1` [bad-argument-type] +ERROR typeforms_typeform.py:67:18-25: `tuple[@_, ...]` is not assignable to `TypeForm[Any]` [bad-assignment] +ERROR typeforms_typeform.py:68:18-24: `tuple[Literal[1], Literal[2]]` is not assignable to `TypeForm[Any]` [bad-assignment] +ERROR typeforms_typeform.py:69:18-19: `Literal[1]` is not assignable to `TypeForm[Any]` [bad-assignment] ERROR typeforms_typeform.py:70:18-22: `Self` must appear within a class [invalid-annotation] -ERROR typeforms_typeform.py:71:7-15: Expected a type form, got instance of `_SpecialForm` [not-a-type] +ERROR typeforms_typeform.py:70:18-22: `type[Self]` is not assignable to `TypeForm[Any]` [bad-assignment] ERROR typeforms_typeform.py:71:18-31: `ClassVar` is not allowed in this context [invalid-annotation] -ERROR typeforms_typeform.py:72:7-15: Expected a type form, got instance of `_SpecialForm` [not-a-type] ERROR typeforms_typeform.py:72:18-28: `Final` is not allowed in this context [invalid-annotation] -ERROR typeforms_typeform.py:73:7-15: Expected a type form, got instance of `_SpecialForm` [not-a-type] -ERROR typeforms_typeform.py:74:7-15: Expected a type form, got instance of `_SpecialForm` [not-a-type] -ERROR typeforms_typeform.py:75:7-15: Expected a type form, got instance of `_SpecialForm` [not-a-type] -ERROR typeforms_typeform.py:80:6-14: Expected a callable, got `_SpecialForm` [not-callable] -ERROR typeforms_typeform.py:81:17-37: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:83:6-14: Expected a callable, got `_SpecialForm` [not-callable] -ERROR typeforms_typeform.py:84:17-36: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:86:6-14: Expected a callable, got `_SpecialForm` [not-callable] -ERROR typeforms_typeform.py:88:6-14: Expected a callable, got `_SpecialForm` [not-callable] -ERROR typeforms_typeform.py:93:24-37: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:97:5-24: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:98:5-18: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:107:5-24: Expected a type form, got instance of `object` [not-a-type] -ERROR typeforms_typeform.py:108:5-18: Expected a type form, got instance of `object` [not-a-type] +ERROR typeforms_typeform.py:73:18-28: `type[*TypeVarTuple[Ts]]` is not assignable to `TypeForm[Any]` [bad-assignment] +ERROR typeforms_typeform.py:74:18-26: `type[Optional]` is not assignable to `TypeForm[Any]` [bad-assignment] +ERROR typeforms_typeform.py:75:19-28: `+` is not supported between `type[int]` and `type[str]` [unsupported-operation] +ERROR typeforms_typeform.py:86:16-23: Function call cannot be used in annotations [invalid-annotation] +ERROR typeforms_typeform.py:88:15-22: Function call cannot be used in annotations [invalid-annotation] +ERROR typeforms_typeform.py:98:21-36: `TypeForm[int]` is not assignable to `TypeForm[str]` [bad-assignment] +ERROR typeforms_typeform.py:108:21-31: `type[int]` is not assignable to `TypeForm[str]` [bad-assignment] """ diff --git a/conformance/results/pyrefly/version.toml b/conformance/results/pyrefly/version.toml index 58851b2f1..271a6135d 100644 --- a/conformance/results/pyrefly/version.toml +++ b/conformance/results/pyrefly/version.toml @@ -1 +1 @@ -version = "pyrefly 0.58.0" +version = "pyrefly 0.60.0" diff --git a/conformance/results/results.html b/conformance/results/results.html index 051e4b900..ee117fc40 100644 --- a/conformance/results/results.html +++ b/conformance/results/results.html @@ -172,13 +172,13 @@

Python Type System Conformance Test Results

- - - @@ -228,7 +228,7 @@

Python Type System Conformance Test Results

- + - + @@ -415,14 +415,14 @@

Python Type System Conformance Test Results

- + - + @@ -496,7 +496,7 @@

Python Type System Conformance Test Results

- + @@ -648,7 +648,7 @@

Python Type System Conformance Test Results

- + diff --git a/conformance/results/zuban/aliases_explicit.toml b/conformance/results/zuban/aliases_explicit.toml index 655fb9268..0f48394fe 100644 --- a/conformance/results/zuban/aliases_explicit.toml +++ b/conformance/results/zuban/aliases_explicit.toml @@ -17,7 +17,7 @@ aliases_explicit.py:83: error: Invalid type alias: expression is not a valid typ aliases_explicit.py:84: error: Invalid type alias: expression is not a valid type [valid-type] aliases_explicit.py:85: error: Invalid type alias: expression is not a valid type [valid-type] aliases_explicit.py:86: error: Invalid type alias: expression is not a valid type [valid-type] -aliases_explicit.py:87: error: Variable "aliases_explicit.var1" is not valid as a type [valid-type] +aliases_explicit.py:87: error: Variable "tests.aliases_explicit.var1" is not valid as a type [valid-type] aliases_explicit.py:87: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases aliases_explicit.py:88: error: Invalid type alias: expression is not a valid type [valid-type] aliases_explicit.py:89: error: Invalid type: try using Literal[1] instead? [valid-type] diff --git a/conformance/results/zuban/aliases_implicit.toml b/conformance/results/zuban/aliases_implicit.toml index 39572ce2e..1ba69a041 100644 --- a/conformance/results/zuban/aliases_implicit.toml +++ b/conformance/results/zuban/aliases_implicit.toml @@ -8,33 +8,33 @@ aliases_implicit.py:78: error: Bad number of arguments for type alias, expected aliases_implicit.py:79: error: Bad number of arguments for type alias, expected 1, given 2 [misc] aliases_implicit.py:80: error: Can only replace ParamSpec with a parameter types list or another ParamSpec, got "int" [misc] aliases_implicit.py:81: error: Type argument "str" of "GoodTypeAlias12" must be a subtype of "float" [type-var] -aliases_implicit.py:106: error: Variable "aliases_implicit.BadTypeAlias1" is not valid as a type [valid-type] +aliases_implicit.py:106: error: Variable "tests.aliases_implicit.BadTypeAlias1" is not valid as a type [valid-type] aliases_implicit.py:106: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:107: error: Variable "aliases_implicit.BadTypeAlias2" is not valid as a type [valid-type] +aliases_implicit.py:107: error: Variable "tests.aliases_implicit.BadTypeAlias2" is not valid as a type [valid-type] aliases_implicit.py:107: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:108: error: Variable "aliases_implicit.BadTypeAlias3" is not valid as a type [valid-type] +aliases_implicit.py:108: error: Variable "tests.aliases_implicit.BadTypeAlias3" is not valid as a type [valid-type] aliases_implicit.py:108: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:109: error: Variable "aliases_implicit.BadTypeAlias4" is not valid as a type [valid-type] +aliases_implicit.py:109: error: Variable "tests.aliases_implicit.BadTypeAlias4" is not valid as a type [valid-type] aliases_implicit.py:109: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:110: error: Variable "aliases_implicit.BadTypeAlias5" is not valid as a type [valid-type] +aliases_implicit.py:110: error: Variable "tests.aliases_implicit.BadTypeAlias5" is not valid as a type [valid-type] aliases_implicit.py:110: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:111: error: Variable "aliases_implicit.BadTypeAlias6" is not valid as a type [valid-type] +aliases_implicit.py:111: error: Variable "tests.aliases_implicit.BadTypeAlias6" is not valid as a type [valid-type] aliases_implicit.py:111: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:112: error: Variable "aliases_implicit.BadTypeAlias7" is not valid as a type [valid-type] +aliases_implicit.py:112: error: Variable "tests.aliases_implicit.BadTypeAlias7" is not valid as a type [valid-type] aliases_implicit.py:112: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:113: error: Variable "aliases_implicit.BadTypeAlias8" is not valid as a type [valid-type] +aliases_implicit.py:113: error: Variable "tests.aliases_implicit.BadTypeAlias8" is not valid as a type [valid-type] aliases_implicit.py:113: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:114: error: Variable "aliases_implicit.var1" is not valid as a type [valid-type] +aliases_implicit.py:114: error: Variable "tests.aliases_implicit.var1" is not valid as a type [valid-type] aliases_implicit.py:114: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:115: error: Variable "aliases_implicit.BadTypeAlias10" is not valid as a type [valid-type] +aliases_implicit.py:115: error: Variable "tests.aliases_implicit.BadTypeAlias10" is not valid as a type [valid-type] aliases_implicit.py:115: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:116: error: Variable "aliases_implicit.BadTypeAlias11" is not valid as a type [valid-type] +aliases_implicit.py:116: error: Variable "tests.aliases_implicit.BadTypeAlias11" is not valid as a type [valid-type] aliases_implicit.py:116: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:117: error: Variable "aliases_implicit.BadTypeAlias12" is not valid as a type [valid-type] +aliases_implicit.py:117: error: Variable "tests.aliases_implicit.BadTypeAlias12" is not valid as a type [valid-type] aliases_implicit.py:117: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:118: error: Variable "aliases_implicit.BadTypeAlias13" is not valid as a type [valid-type] +aliases_implicit.py:118: error: Variable "tests.aliases_implicit.BadTypeAlias13" is not valid as a type [valid-type] aliases_implicit.py:118: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -aliases_implicit.py:119: error: Variable "aliases_implicit.BadTypeAlias14" is not valid as a type [valid-type] +aliases_implicit.py:119: error: Variable "tests.aliases_implicit.BadTypeAlias14" is not valid as a type [valid-type] aliases_implicit.py:119: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases aliases_implicit.py:133: error: "UnionType" not callable [operator] aliases_implicit.py:135: error: Bad number of arguments for type alias, expected 0, given 1 [misc] diff --git a/conformance/results/zuban/aliases_newtype.toml b/conformance/results/zuban/aliases_newtype.toml index 4bd918e54..840d3b002 100644 --- a/conformance/results/zuban/aliases_newtype.toml +++ b/conformance/results/zuban/aliases_newtype.toml @@ -10,7 +10,7 @@ aliases_newtype.py:26: error: Cannot subclass "NewType" [misc] aliases_newtype.py:35: error: String argument 1 "BadName" to NewType(...) does not match variable name "GoodName" [misc] aliases_newtype.py:41: error: Bad number of arguments for type alias, expected 0, given 1 [misc] aliases_newtype.py:47: error: Argument 2 to NewType(...) must be subclassable (got "int | str") [valid-newtype] -aliases_newtype.py:50: error: Type variable "aliases_newtype.T" is unbound [misc] +aliases_newtype.py:50: error: Type variable "tests.aliases_newtype.T" is unbound [misc] aliases_newtype.py:50: note: (Hint: Use "Generic[T]" or "Protocol[T]" base class to bind "T" inside a class) aliases_newtype.py:50: note: (Hint: Use "T" in function signature to bind "T" inside a function) aliases_newtype.py:52: error: NewType cannot be used with protocol classes [misc] diff --git a/conformance/results/zuban/aliases_type_statement.toml b/conformance/results/zuban/aliases_type_statement.toml index b82e24b75..1cfb553e1 100644 --- a/conformance/results/zuban/aliases_type_statement.toml +++ b/conformance/results/zuban/aliases_type_statement.toml @@ -17,7 +17,7 @@ aliases_type_statement.py:41: error: Invalid type alias: expression is not a val aliases_type_statement.py:42: error: Invalid type alias: expression is not a valid type [valid-type] aliases_type_statement.py:43: error: Invalid type alias: expression is not a valid type [valid-type] aliases_type_statement.py:44: error: Invalid type alias: expression is not a valid type [valid-type] -aliases_type_statement.py:45: error: Variable "aliases_type_statement.var1" is not valid as a type [valid-type] +aliases_type_statement.py:45: error: Variable "tests.aliases_type_statement.var1" is not valid as a type [valid-type] aliases_type_statement.py:45: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases aliases_type_statement.py:46: error: Invalid type alias: expression is not a valid type [valid-type] aliases_type_statement.py:47: error: Invalid type: try using Literal[1] instead? [valid-type] diff --git a/conformance/results/zuban/aliases_typealiastype.toml b/conformance/results/zuban/aliases_typealiastype.toml index 082a9f47b..5eb157015 100644 --- a/conformance/results/zuban/aliases_typealiastype.toml +++ b/conformance/results/zuban/aliases_typealiastype.toml @@ -9,8 +9,7 @@ aliases_typealiastype.py:44: error: All type parameters should be declared ("S" aliases_typealiastype.py:45: error: Tuple literal expected as the type_params argument to TypeAliasType [misc] aliases_typealiastype.py:46: error: Invalid recursive alias: a union item of itself [misc] aliases_typealiastype.py:47: error: Invalid recursive alias: a union item of itself [misc] -aliases_typealiastype.py:48: error: Variable "aliases_typealiastype.BadAlias7" is not valid as a type [valid-type] -aliases_typealiastype.py:48: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases +aliases_typealiastype.py:48: error: Invalid recursive alias: a union item of itself [misc] aliases_typealiastype.py:52: error: Invalid type alias: expression is not a valid type [valid-type] aliases_typealiastype.py:53: error: Bracketed expression "[...]" is not valid as a type [valid-type] aliases_typealiastype.py:53: note: Did you mean "List[...]"? @@ -21,7 +20,7 @@ aliases_typealiastype.py:56: error: Invalid type alias: expression is not a vali aliases_typealiastype.py:57: error: Invalid type alias: expression is not a valid type [valid-type] aliases_typealiastype.py:58: error: Invalid type alias: expression is not a valid type [valid-type] aliases_typealiastype.py:59: error: Invalid type alias: expression is not a valid type [valid-type] -aliases_typealiastype.py:60: error: Variable "aliases_typealiastype.var1" is not valid as a type [valid-type] +aliases_typealiastype.py:60: error: Variable "tests.aliases_typealiastype.var1" is not valid as a type [valid-type] aliases_typealiastype.py:60: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases aliases_typealiastype.py:61: error: Invalid type alias: expression is not a valid type [valid-type] aliases_typealiastype.py:62: error: Invalid type: try using Literal[1] instead? [valid-type] diff --git a/conformance/results/zuban/annotations_forward_refs.toml b/conformance/results/zuban/annotations_forward_refs.toml index 544569aad..9dce37fac 100644 --- a/conformance/results/zuban/annotations_forward_refs.toml +++ b/conformance/results/zuban/annotations_forward_refs.toml @@ -5,7 +5,7 @@ Incorrectly generates error for quoted type defined in class scope. conformance_automated = "Fail" errors_diff = """ Line 82: Unexpected errors ['annotations_forward_refs.py:82: error: Name "str" is not defined [name-defined]'] -Line 87: Unexpected errors ['annotations_forward_refs.py:87: error: Function "annotations_forward_refs.ClassD.int" is not valid as a type [valid-type]'] +Line 87: Unexpected errors ['annotations_forward_refs.py:87: error: Function "tests.annotations_forward_refs.ClassD.int" is not valid as a type [valid-type]'] Line 95: Unexpected errors ['annotations_forward_refs.py:95: error: Expression is of type "Any", not "str" [misc]'] Line 96: Unexpected errors ['annotations_forward_refs.py:96: error: Expression is of type "Any", not "int" [misc]'] """ @@ -22,7 +22,7 @@ annotations_forward_refs.py:45: error: Invalid type comment or annotation [vali annotations_forward_refs.py:46: error: Invalid type comment or annotation [valid-type] annotations_forward_refs.py:47: error: Invalid type comment or annotation [valid-type] annotations_forward_refs.py:48: error: Invalid type comment or annotation [valid-type] -annotations_forward_refs.py:49: error: Variable "annotations_forward_refs.var1" is not valid as a type [valid-type] +annotations_forward_refs.py:49: error: Variable "tests.annotations_forward_refs.var1" is not valid as a type [valid-type] annotations_forward_refs.py:49: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases annotations_forward_refs.py:50: error: Invalid type comment or annotation [valid-type] annotations_forward_refs.py:51: error: Invalid type: try using Literal[1] instead? [valid-type] @@ -33,9 +33,9 @@ annotations_forward_refs.py:55: error: Module "types" is not valid as a type [v annotations_forward_refs.py:55: note: Perhaps you meant to use a protocol matching the module structure? annotations_forward_refs.py:80: error: Name "ClassF" is not defined [name-defined] annotations_forward_refs.py:82: error: Name "str" is not defined [name-defined] -annotations_forward_refs.py:87: error: Function "annotations_forward_refs.ClassD.int" is not valid as a type [valid-type] +annotations_forward_refs.py:87: error: Function "tests.annotations_forward_refs.ClassD.int" is not valid as a type [valid-type] annotations_forward_refs.py:87: note: Perhaps you need "Callable[...]" or a callback protocol? -annotations_forward_refs.py:89: error: Function "annotations_forward_refs.ClassD.int" is not valid as a type [valid-type] +annotations_forward_refs.py:89: error: Function "tests.annotations_forward_refs.ClassD.int" is not valid as a type [valid-type] annotations_forward_refs.py:89: note: Perhaps you need "Callable[...]" or a callback protocol? annotations_forward_refs.py:95: error: Expression is of type "Any", not "str" [misc] annotations_forward_refs.py:96: error: Expression is of type "Any", not "int" [misc] diff --git a/conformance/results/zuban/annotations_typeexpr.toml b/conformance/results/zuban/annotations_typeexpr.toml index dbd9f1b55..67edaac2d 100644 --- a/conformance/results/zuban/annotations_typeexpr.toml +++ b/conformance/results/zuban/annotations_typeexpr.toml @@ -12,7 +12,7 @@ annotations_typeexpr.py:92: error: Invalid type comment or annotation [valid-ty annotations_typeexpr.py:93: error: Invalid type comment or annotation [valid-type] annotations_typeexpr.py:94: error: Invalid type comment or annotation [valid-type] annotations_typeexpr.py:95: error: Invalid type comment or annotation [valid-type] -annotations_typeexpr.py:96: error: Variable "annotations_typeexpr.var1" is not valid as a type [valid-type] +annotations_typeexpr.py:96: error: Variable "tests.annotations_typeexpr.var1" is not valid as a type [valid-type] annotations_typeexpr.py:96: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases annotations_typeexpr.py:97: error: Invalid type comment or annotation [valid-type] annotations_typeexpr.py:98: error: Invalid type: try using Literal[1] instead? [valid-type] diff --git a/conformance/results/zuban/constructors_callable.toml b/conformance/results/zuban/constructors_callable.toml index a59ffe662..09b2c88ee 100644 --- a/conformance/results/zuban/constructors_callable.toml +++ b/conformance/results/zuban/constructors_callable.toml @@ -2,12 +2,12 @@ conformance_automated = "Pass" errors_diff = """ """ output = """ -constructors_callable.py:36: note: Revealed type is "def (x: builtins.int) -> constructors_callable.Class1" +constructors_callable.py:36: note: Revealed type is "def (x: builtins.int) -> tests.constructors_callable.Class1" constructors_callable.py:38: error: Missing positional argument "x" in call [call-arg] constructors_callable.py:39: error: Unexpected keyword argument "y" [call-arg] -constructors_callable.py:49: note: Revealed type is "def () -> constructors_callable.Class2" +constructors_callable.py:49: note: Revealed type is "def () -> tests.constructors_callable.Class2" constructors_callable.py:51: error: Too many arguments [call-arg] -constructors_callable.py:64: note: Revealed type is "def (x: builtins.int) -> constructors_callable.Class3" +constructors_callable.py:64: note: Revealed type is "def (x: builtins.int) -> tests.constructors_callable.Class3" constructors_callable.py:66: error: Missing positional argument "x" in call [call-arg] constructors_callable.py:67: error: Unexpected keyword argument "y" [call-arg] constructors_callable.py:68: error: Too many arguments [call-arg] @@ -15,13 +15,13 @@ constructors_callable.py:79: note: Revealed type is "def (x: builtins.int) -> bu constructors_callable.py:81: error: Missing positional argument "x" in call [call-arg] constructors_callable.py:82: error: Unexpected keyword argument "y" [call-arg] constructors_callable.py:99: note: Revealed type is "def (*args: Any, **kwargs: Any) -> Never" -constructors_callable.py:127: note: Revealed type is "def () -> constructors_callable.Class6Proxy" +constructors_callable.py:127: note: Revealed type is "def () -> tests.constructors_callable.Class6Proxy" constructors_callable.py:129: error: Too many arguments [call-arg] constructors_callable.py:144: note: Revealed type is "def () -> Any" constructors_callable.py:146: error: Too many arguments [call-arg] -constructors_callable.py:164: note: Revealed type is "Overload(def (x: builtins.int) -> constructors_callable.Class7[builtins.int], def (x: builtins.str) -> constructors_callable.Class7[builtins.str])" -constructors_callable.py:184: note: Revealed type is "def [T] (x: builtins.list[T], y: builtins.list[T]) -> constructors_callable.Class8[T]" +constructors_callable.py:164: note: Revealed type is "Overload(def (x: builtins.int) -> tests.constructors_callable.Class7[builtins.int], def (x: builtins.str) -> tests.constructors_callable.Class7[builtins.str])" +constructors_callable.py:184: note: Revealed type is "def [T] (x: builtins.list[T], y: builtins.list[T]) -> tests.constructors_callable.Class8[T]" constructors_callable.py:186: error: List item 0 has incompatible type "str"; expected "int" [list-item] -constructors_callable.py:195: note: Revealed type is "def [T] (x: builtins.list[T], y: builtins.list[T]) -> constructors_callable.Class9" +constructors_callable.py:195: note: Revealed type is "def [T] (x: builtins.list[T], y: builtins.list[T]) -> tests.constructors_callable.Class9" constructors_callable.py:197: error: List item 0 has incompatible type "str"; expected "int" [list-item] """ diff --git a/conformance/results/zuban/dataclasses_slots.toml b/conformance/results/zuban/dataclasses_slots.toml index 6090819e6..3bd82f443 100644 --- a/conformance/results/zuban/dataclasses_slots.toml +++ b/conformance/results/zuban/dataclasses_slots.toml @@ -3,8 +3,8 @@ errors_diff = """ """ output = """ dataclasses_slots.py:11: error: "DC1" both defines "__slots__" and is used with "slots=True" [misc] -dataclasses_slots.py:25: error: Trying to assign name "y" that is not in "__slots__" of type "dataclasses_slots.DC2" [misc] -dataclasses_slots.py:38: error: Trying to assign name "y" that is not in "__slots__" of type "dataclasses_slots.DC3" [misc] +dataclasses_slots.py:25: error: Trying to assign name "y" that is not in "__slots__" of type "tests.dataclasses_slots.DC2" [misc] +dataclasses_slots.py:38: error: Trying to assign name "y" that is not in "__slots__" of type "tests.dataclasses_slots.DC3" [misc] dataclasses_slots.py:66: error: "type[DC6]" has no attribute "__slots__" [attr-defined] dataclasses_slots.py:69: error: "DC6" has no attribute "__slots__" [attr-defined] """ diff --git a/conformance/results/zuban/directives_deprecated.toml b/conformance/results/zuban/directives_deprecated.toml index 691c82a42..a980f030f 100644 --- a/conformance/results/zuban/directives_deprecated.toml +++ b/conformance/results/zuban/directives_deprecated.toml @@ -2,16 +2,16 @@ conformance_automated = "Pass" errors_diff = """ """ output = """ -directives_deprecated.py:18: error: class _directives_deprecated_library.Ham is deprecated: Use Spam instead [deprecated] -directives_deprecated.py:24: error: function _directives_deprecated_library.norwegian_blue is deprecated: It is pining for the fjords [deprecated] -directives_deprecated.py:25: error: function _directives_deprecated_library.norwegian_blue is deprecated: It is pining for the fjords [deprecated] -directives_deprecated.py:30: error: overload def (x: builtins.int) -> builtins.str of function _directives_deprecated_library.foo is deprecated: Only str will be allowed [deprecated] -directives_deprecated.py:41: error: function _directives_deprecated_library.Spam.__add__ is deprecated: There is enough spam in the world [deprecated] -directives_deprecated.py:42: error: function _directives_deprecated_library.Spam.__add__ is deprecated: There is enough spam in the world [deprecated] -directives_deprecated.py:44: error: function _directives_deprecated_library.Spam.greasy is deprecated: All spam will be equally greasy [deprecated] -directives_deprecated.py:47: error: function _directives_deprecated_library.Spam.shape is deprecated: Shapes are becoming immutable [deprecated] -directives_deprecated.py:48: error: function _directives_deprecated_library.Spam.shape is deprecated: Shapes are becoming immutable [deprecated] -directives_deprecated.py:58: error: function directives_deprecated.Invocable.__call__ is deprecated: Deprecated [deprecated] -directives_deprecated.py:69: error: function directives_deprecated.lorem is deprecated: Deprecated [deprecated] -directives_deprecated.py:98: error: function directives_deprecated.SupportsFoo1.foo is deprecated: Deprecated [deprecated] +directives_deprecated.py:18: error: class tests._directives_deprecated_library.Ham is deprecated: Use Spam instead [deprecated] +directives_deprecated.py:24: error: function tests._directives_deprecated_library.norwegian_blue is deprecated: It is pining for the fjords [deprecated] +directives_deprecated.py:25: error: function tests._directives_deprecated_library.norwegian_blue is deprecated: It is pining for the fjords [deprecated] +directives_deprecated.py:30: error: overload def (x: builtins.int) -> builtins.str of function tests._directives_deprecated_library.foo is deprecated: Only str will be allowed [deprecated] +directives_deprecated.py:41: error: function tests._directives_deprecated_library.Spam.__add__ is deprecated: There is enough spam in the world [deprecated] +directives_deprecated.py:42: error: function tests._directives_deprecated_library.Spam.__add__ is deprecated: There is enough spam in the world [deprecated] +directives_deprecated.py:44: error: function tests._directives_deprecated_library.Spam.greasy is deprecated: All spam will be equally greasy [deprecated] +directives_deprecated.py:47: error: function tests._directives_deprecated_library.Spam.shape is deprecated: Shapes are becoming immutable [deprecated] +directives_deprecated.py:48: error: function tests._directives_deprecated_library.Spam.shape is deprecated: Shapes are becoming immutable [deprecated] +directives_deprecated.py:58: error: function tests.directives_deprecated.Invocable.__call__ is deprecated: Deprecated [deprecated] +directives_deprecated.py:69: error: function tests.directives_deprecated.lorem is deprecated: Deprecated [deprecated] +directives_deprecated.py:98: error: function tests.directives_deprecated.SupportsFoo1.foo is deprecated: Deprecated [deprecated] """ diff --git a/conformance/results/zuban/directives_reveal_type.toml b/conformance/results/zuban/directives_reveal_type.toml index 753a0a2ac..76a0ed461 100644 --- a/conformance/results/zuban/directives_reveal_type.toml +++ b/conformance/results/zuban/directives_reveal_type.toml @@ -5,7 +5,7 @@ output = """ directives_reveal_type.py:14: note: Revealed type is "builtins.int | builtins.str" directives_reveal_type.py:15: note: Revealed type is "builtins.list[builtins.int]" directives_reveal_type.py:16: note: Revealed type is "Any" -directives_reveal_type.py:17: note: Revealed type is "directives_reveal_type.ForwardReference" +directives_reveal_type.py:17: note: Revealed type is "tests.directives_reveal_type.ForwardReference" directives_reveal_type.py:19: error: Too few arguments for "reveal_type" [call-arg] directives_reveal_type.py:20: error: Too many arguments for "reveal_type" [call-arg] """ diff --git a/conformance/results/zuban/generics_scoping.toml b/conformance/results/zuban/generics_scoping.toml index 54b38f2f7..000fd4f34 100644 --- a/conformance/results/zuban/generics_scoping.toml +++ b/conformance/results/zuban/generics_scoping.toml @@ -7,10 +7,10 @@ generics_scoping.py:19: error: Expression is of type "Literal['a']", not "str" generics_scoping.py:34: error: Argument 1 to "meth_2" of "MyClass" has incompatible type "str"; expected "int" [arg-type] generics_scoping.py:49: error: Expression is of type "Literal['abc']", not "str" [misc] generics_scoping.py:53: error: Expression is of type "Literal[b'abc']", not "bytes" [misc] -generics_scoping.py:61: error: Type variable "generics_scoping.S" is unbound [misc] +generics_scoping.py:61: error: Type variable "tests.generics_scoping.S" is unbound [misc] generics_scoping.py:61: note: (Hint: Use "Generic[S]" or "Protocol[S]" base class to bind "S" inside a class) generics_scoping.py:61: note: (Hint: Use "S" in function signature to bind "S" inside a function) -generics_scoping.py:65: error: Type variable "generics_scoping.S" is unbound [misc] +generics_scoping.py:65: error: Type variable "tests.generics_scoping.S" is unbound [misc] generics_scoping.py:65: note: (Hint: Use "Generic[S]" or "Protocol[S]" base class to bind "S" inside a class) generics_scoping.py:65: note: (Hint: Use "S" in function signature to bind "S" inside a function) generics_scoping.py:76: error: Free type variable expected in Generic[...] [misc] @@ -18,13 +18,13 @@ generics_scoping.py:86: error: Type variable "T" is bound by an outer class [mi generics_scoping.py:89: error: Type variable "T" is bound by an outer class [misc] generics_scoping.py:91: error: Type variable "T" is bound by an outer class [misc] generics_scoping.py:98: error: Can't use bound type variable "T" to define generic alias [misc] -generics_scoping.py:105: error: Type variable "generics_scoping.T" is unbound [misc] +generics_scoping.py:105: error: Type variable "tests.generics_scoping.T" is unbound [misc] generics_scoping.py:105: note: (Hint: Use "Generic[T]" or "Protocol[T]" base class to bind "T" inside a class) generics_scoping.py:105: note: (Hint: Use "T" in function signature to bind "T" inside a function) -generics_scoping.py:106: error: Type variable "generics_scoping.T" is unbound [misc] +generics_scoping.py:106: error: Type variable "tests.generics_scoping.T" is unbound [misc] generics_scoping.py:106: note: (Hint: Use "Generic[T]" or "Protocol[T]" base class to bind "T" inside a class) generics_scoping.py:106: note: (Hint: Use "T" in function signature to bind "T" inside a function) -generics_scoping.py:107: error: Type variable "generics_scoping.T" is unbound [misc] +generics_scoping.py:107: error: Type variable "tests.generics_scoping.T" is unbound [misc] generics_scoping.py:107: note: (Hint: Use "Generic[T]" or "Protocol[T]" base class to bind "T" inside a class) generics_scoping.py:107: note: (Hint: Use "T" in function signature to bind "T" inside a function) """ diff --git a/conformance/results/zuban/generics_syntax_declarations.toml b/conformance/results/zuban/generics_syntax_declarations.toml index f4cb79a84..6da51b54f 100644 --- a/conformance/results/zuban/generics_syntax_declarations.toml +++ b/conformance/results/zuban/generics_syntax_declarations.toml @@ -10,7 +10,7 @@ generics_syntax_declarations.py:48: error: Bracketed expression "[...]" is not v generics_syntax_declarations.py:48: note: Did you mean "List[...]"? generics_syntax_declarations.py:60: error: Type variable must have at least two constrained types [misc] generics_syntax_declarations.py:64: error: Type variable must have at least two constrained types [misc] -generics_syntax_declarations.py:71: error: Variable "generics_syntax_declarations.t1" is not valid as a type [valid-type] +generics_syntax_declarations.py:71: error: Variable "tests.generics_syntax_declarations.t1" is not valid as a type [valid-type] generics_syntax_declarations.py:71: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases generics_syntax_declarations.py:75: error: Invalid type: try using Literal[3] instead? [valid-type] generics_syntax_declarations.py:79: error: Name "S" is not defined [name-defined] diff --git a/conformance/results/zuban/generics_syntax_scoping.toml b/conformance/results/zuban/generics_syntax_scoping.toml index f2fdbd44b..a0444e813 100644 --- a/conformance/results/zuban/generics_syntax_scoping.toml +++ b/conformance/results/zuban/generics_syntax_scoping.toml @@ -2,13 +2,13 @@ conformance_automated = "Pass" errors_diff = """ """ output = """ -generics_syntax_scoping.py:14: error: Variable "generics_syntax_scoping.S" is not valid as a type [valid-type] +generics_syntax_scoping.py:14: error: Variable "tests.generics_syntax_scoping.S" is not valid as a type [valid-type] generics_syntax_scoping.py:14: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases -generics_syntax_scoping.py:18: error: Variable "generics_syntax_scoping.T" is not valid as a type [valid-type] +generics_syntax_scoping.py:18: error: Variable "tests.generics_syntax_scoping.T" is not valid as a type [valid-type] generics_syntax_scoping.py:18: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases generics_syntax_scoping.py:35: error: Name "T" is used before definition [used-before-def] generics_syntax_scoping.py:44: error: Name "T" is used before definition [used-before-def] -generics_syntax_scoping.py:44: error: Variable "generics_syntax_scoping.T" is not valid as a type [valid-type] +generics_syntax_scoping.py:44: error: Variable "tests.generics_syntax_scoping.T" is not valid as a type [valid-type] generics_syntax_scoping.py:44: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases generics_syntax_scoping.py:92: error: "T" already defined as a type parameter [misc] generics_syntax_scoping.py:95: error: "T" already defined as a type parameter [misc] diff --git a/conformance/results/zuban/generics_typevartuple_args.toml b/conformance/results/zuban/generics_typevartuple_args.toml index 4d7d961fb..29b6e9434 100644 --- a/conformance/results/zuban/generics_typevartuple_args.toml +++ b/conformance/results/zuban/generics_typevartuple_args.toml @@ -1,10 +1,5 @@ -conformant = "Partial" -notes = """ -Does not correctly solve TypeVarTuple with heterogeneous bounds. -""" -conformance_automated = "Fail" +conformance_automated = "Pass" errors_diff = """ -Line 76: Unexpected errors ['generics_typevartuple_args.py:76: error: Argument 2 to "func4" has incompatible type "tuple[Literal[\\'1\\']]"; expected "tuple[int]" [arg-type]'] """ output = """ generics_typevartuple_args.py:33: error: Argument 3 to "exec_le" has incompatible type "str"; expected "Env" [arg-type] @@ -15,6 +10,5 @@ generics_typevartuple_args.py:58: error: Too few arguments for "func2" [call-ar generics_typevartuple_args.py:59: error: Too few arguments for "func2" [call-arg] generics_typevartuple_args.py:59: error: Argument 1 to "func2" has incompatible type "str"; expected "int" [arg-type] generics_typevartuple_args.py:67: error: Too few arguments for "func3" [call-arg] -generics_typevartuple_args.py:75: error: Argument 2 to "func4" has incompatible type "tuple[Literal[1], int]"; expected "tuple[int]" [arg-type] -generics_typevartuple_args.py:76: error: Argument 2 to "func4" has incompatible type "tuple[Literal['1']]"; expected "tuple[int]" [arg-type] +generics_typevartuple_args.py:75: error: Argument 2 to "func4" has incompatible type "tuple[int, int]"; expected "tuple[int]" [arg-type] """ diff --git a/conformance/results/zuban/generics_typevartuple_basic.toml b/conformance/results/zuban/generics_typevartuple_basic.toml index d7f7cbb9f..ca0cca722 100644 --- a/conformance/results/zuban/generics_typevartuple_basic.toml +++ b/conformance/results/zuban/generics_typevartuple_basic.toml @@ -1,10 +1,5 @@ -conformant = "Partial" -notes = """ -Does not correctly solve TypeVarTuple with heterogeneous bounds. -""" -conformance_automated = "Fail" +conformance_automated = "Pass" errors_diff = """ -Line 90: Unexpected errors ['generics_typevartuple_basic.py:90: error: Argument 2 to "func2" has incompatible type "tuple[Literal[\\'0\\']]"; expected "tuple[int]" [arg-type]'] """ output = """ generics_typevartuple_basic.py:42: error: Argument 1 to "Array" has incompatible type "Height"; expected "tuple[Height, Width]" [arg-type] @@ -17,8 +12,7 @@ generics_typevartuple_basic.py:59: error: TypeVarTuple "Shape" is only valid wit generics_typevartuple_basic.py:65: error: Unexpected keyword argument "covariant" for "TypeVarTuple" [call-arg] generics_typevartuple_basic.py:66: error: Too many positional arguments for "TypeVarTuple" [call-arg] generics_typevartuple_basic.py:67: error: Unexpected keyword argument "bound" for "TypeVarTuple" [call-arg] -generics_typevartuple_basic.py:90: error: Argument 2 to "func2" has incompatible type "tuple[Literal['0']]"; expected "tuple[int]" [arg-type] -generics_typevartuple_basic.py:91: error: Argument 2 to "func2" has incompatible type "tuple[Literal[0]]"; expected "tuple[int, int]" [arg-type] +generics_typevartuple_basic.py:91: error: Argument 2 to "func2" has incompatible type "tuple[int]"; expected "tuple[int, int]" [arg-type] generics_typevartuple_basic.py:100: error: Argument 2 to "multiply" has incompatible type "Array[Width]"; expected "Array[Height]" [arg-type] generics_typevartuple_basic.py:101: error: Argument 2 to "multiply" has incompatible type "Array[Height, Width]"; expected "Array[Height]" [arg-type] generics_typevartuple_basic.py:107: error: Can only use one type var tuple in a class def [misc] diff --git a/conformance/results/zuban/generics_variance.toml b/conformance/results/zuban/generics_variance.toml index 02c8a1f9c..f104685a4 100644 --- a/conformance/results/zuban/generics_variance.toml +++ b/conformance/results/zuban/generics_variance.toml @@ -8,11 +8,11 @@ generics_variance.py:81: error: Variance of TypeVar "T_contra" incompatible with generics_variance.py:93: error: Variance of TypeVar "T_contra" incompatible with variance in parent type [type-var] generics_variance.py:105: error: Variance of TypeVar "T_co" incompatible with variance in parent type [type-var] generics_variance.py:113: error: Variance of TypeVar "T_co" incompatible with variance in parent type [type-var] -generics_variance.py:126: error: Variance of TypeVar "T_co" incompatible with variance in parent type [type-var] -generics_variance.py:132: error: Variance of TypeVar "T_contra" incompatible with variance in parent type [type-var] -generics_variance.py:142: error: Variance of TypeVar "T_co" incompatible with variance in parent type [type-var] +generics_variance.py:125: error: Variance of TypeVar "T_co" incompatible with variance in parent type [type-var] +generics_variance.py:131: error: Variance of TypeVar "T_contra" incompatible with variance in parent type [type-var] +generics_variance.py:141: error: Variance of TypeVar "T_co" incompatible with variance in parent type [type-var] generics_variance.py:163: error: Variance of TypeVar "T_contra" incompatible with variance in parent type [type-var] generics_variance.py:167: error: Variance of TypeVar "T_co" incompatible with variance in parent type [type-var] generics_variance.py:191: error: Variance of TypeVar "T_contra" incompatible with variance in parent type [type-var] -generics_variance.py:196: error: Variance of TypeVar "T_co" incompatible with variance in parent type [type-var] +generics_variance.py:195: error: Variance of TypeVar "T_co" incompatible with variance in parent type [type-var] """ diff --git a/conformance/results/zuban/literals_parameterizations.toml b/conformance/results/zuban/literals_parameterizations.toml index fd128510e..0a1ba71fa 100644 --- a/conformance/results/zuban/literals_parameterizations.toml +++ b/conformance/results/zuban/literals_parameterizations.toml @@ -11,7 +11,7 @@ literals_parameterizations.py:46: error: Invalid type: Literal[...] cannot conta literals_parameterizations.py:47: error: Invalid type: Literal[...] cannot contain arbitrary expressions [valid-type] literals_parameterizations.py:48: error: Parameter 1 of Literal[...] is invalid [valid-type] literals_parameterizations.py:49: error: Parameter 1 of Literal[...] is invalid [valid-type] -literals_parameterizations.py:50: error: Type variable "literals_parameterizations.T" is unbound [misc] +literals_parameterizations.py:50: error: Type variable "tests.literals_parameterizations.T" is unbound [misc] literals_parameterizations.py:50: note: (Hint: Use "Generic[T]" or "Protocol[T]" base class to bind "T" inside a class) literals_parameterizations.py:50: note: (Hint: Use "T" in function signature to bind "T" inside a function) literals_parameterizations.py:51: error: Parameter 1 of Literal[...] cannot be of type "float" [valid-type] diff --git a/conformance/results/zuban/protocols_modules.toml b/conformance/results/zuban/protocols_modules.toml index 204ef50fb..c478b180b 100644 --- a/conformance/results/zuban/protocols_modules.toml +++ b/conformance/results/zuban/protocols_modules.toml @@ -3,10 +3,10 @@ errors_diff = """ """ output = """ protocols_modules.py:26: error: Incompatible types in assignment (expression has type "ModuleType", variable has type "Options2") [assignment] -protocols_modules.py:26: note: Following member(s) of Module "_protocols_modules1" have conflicts: +protocols_modules.py:26: note: Following member(s) of Module "tests._protocols_modules1" have conflicts: protocols_modules.py:26: note: timeout: expected "str", got "int" protocols_modules.py:48: error: Incompatible types in assignment (expression has type "ModuleType", variable has type "Reporter2") [assignment] -protocols_modules.py:48: note: Following member(s) of Module "_protocols_modules2" have conflicts: +protocols_modules.py:48: note: Following member(s) of Module "tests._protocols_modules2" have conflicts: protocols_modules.py:48: note: Expected: protocols_modules.py:48: note: def on_error(x: int) -> int protocols_modules.py:48: note: Got: diff --git a/conformance/results/zuban/version.toml b/conformance/results/zuban/version.toml index fe45d003e..8bb03465d 100644 --- a/conformance/results/zuban/version.toml +++ b/conformance/results/zuban/version.toml @@ -1 +1 @@ -version = "zuban 0.6.2" +version = "zuban 0.7.0" diff --git a/conformance/uv.lock b/conformance/uv.lock index a06be9bb9..00ae0757d 100644 --- a/conformance/uv.lock +++ b/conformance/uv.lock @@ -25,7 +25,7 @@ wheels = [ [[package]] name = "mypy" -version = "1.19.1" +version = "1.20.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "librt", marker = "platform_python_implementation != 'PyPy'" }, @@ -33,15 +33,16 @@ dependencies = [ { name = "pathspec" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f5/db/4efed9504bc01309ab9c2da7e352cc223569f05478012b5d9ece38fd44d2/mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba", size = 3582404, upload-time = "2025-12-15T05:03:48.42Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/5c/b0089fe7fef0a994ae5ee07029ced0526082c6cfaaa4c10d40a10e33b097/mypy-1.20.0.tar.gz", hash = "sha256:eb96c84efcc33f0b5e0e04beacf00129dd963b67226b01c00b9dfc8affb464c3", size = 3815028, upload-time = "2026-03-31T16:55:14.959Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/06/8a/19bfae96f6615aa8a0604915512e0289b1fad33d5909bf7244f02935d33a/mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1", size = 13206053, upload-time = "2025-12-15T05:03:46.622Z" }, - { url = "https://files.pythonhosted.org/packages/a5/34/3e63879ab041602154ba2a9f99817bb0c85c4df19a23a1443c8986e4d565/mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e", size = 12219134, upload-time = "2025-12-15T05:03:24.367Z" }, - { url = "https://files.pythonhosted.org/packages/89/cc/2db6f0e95366b630364e09845672dbee0cbf0bbe753a204b29a944967cd9/mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2", size = 12731616, upload-time = "2025-12-15T05:02:44.725Z" }, - { url = "https://files.pythonhosted.org/packages/00/be/dd56c1fd4807bc1eba1cf18b2a850d0de7bacb55e158755eb79f77c41f8e/mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8", size = 13620847, upload-time = "2025-12-15T05:03:39.633Z" }, - { url = "https://files.pythonhosted.org/packages/6d/42/332951aae42b79329f743bf1da088cd75d8d4d9acc18fbcbd84f26c1af4e/mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a", size = 13834976, upload-time = "2025-12-15T05:03:08.786Z" }, - { url = "https://files.pythonhosted.org/packages/6f/63/e7493e5f90e1e085c562bb06e2eb32cae27c5057b9653348d38b47daaecc/mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13", size = 10118104, upload-time = "2025-12-15T05:03:10.834Z" }, - { url = "https://files.pythonhosted.org/packages/8d/f4/4ce9a05ce5ded1de3ec1c1d96cf9f9504a04e54ce0ed55cfa38619a32b8d/mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247", size = 2471239, upload-time = "2025-12-15T05:03:07.248Z" }, + { url = "https://files.pythonhosted.org/packages/be/dd/3afa29b58c2e57c79116ed55d700721c3c3b15955e2b6251dd165d377c0e/mypy-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:002b613ae19f4ac7d18b7e168ffe1cb9013b37c57f7411984abbd3b817b0a214", size = 14509525, upload-time = "2026-03-31T16:55:01.824Z" }, + { url = "https://files.pythonhosted.org/packages/54/eb/227b516ab8cad9f2a13c5e7a98d28cd6aa75e9c83e82776ae6c1c4c046c7/mypy-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9336b5e6712f4adaf5afc3203a99a40b379049104349d747eb3e5a3aa23ac2e", size = 13326469, upload-time = "2026-03-31T16:51:41.23Z" }, + { url = "https://files.pythonhosted.org/packages/57/d4/1ddb799860c1b5ac6117ec307b965f65deeb47044395ff01ab793248a591/mypy-1.20.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f13b3e41bce9d257eded794c0f12878af3129d80aacd8a3ee0dee51f3a978651", size = 13705953, upload-time = "2026-03-31T16:48:55.69Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b7/54a720f565a87b893182a2a393370289ae7149e4715859e10e1c05e49154/mypy-1.20.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9804c3ad27f78e54e58b32e7cb532d128b43dbfb9f3f9f06262b821a0f6bd3f5", size = 14710363, upload-time = "2026-03-31T16:53:26.948Z" }, + { url = "https://files.pythonhosted.org/packages/b2/2a/74810274848d061f8a8ea4ac23aaad43bd3d8c1882457999c2e568341c57/mypy-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:697f102c5c1d526bdd761a69f17c6070f9892eebcb94b1a5963d679288c09e78", size = 14947005, upload-time = "2026-03-31T16:50:17.591Z" }, + { url = "https://files.pythonhosted.org/packages/77/91/21b8ba75f958bcda75690951ce6fa6b7138b03471618959529d74b8544e2/mypy-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:0ecd63f75fdd30327e4ad8b5704bd6d91fc6c1b2e029f8ee14705e1207212489", size = 10880616, upload-time = "2026-03-31T16:52:19.986Z" }, + { url = "https://files.pythonhosted.org/packages/8a/15/3d8198ef97c1ca03aea010cce4f1d4f3bc5d9849e8c0140111ca2ead9fdd/mypy-1.20.0-cp312-cp312-win_arm64.whl", hash = "sha256:f194db59657c58593a3c47c6dfd7bad4ef4ac12dbc94d01b3a95521f78177e33", size = 9813091, upload-time = "2026-03-31T16:53:44.385Z" }, + { url = "https://files.pythonhosted.org/packages/21/66/4d734961ce167f0fd8380769b3b7c06dbdd6ff54c2190f3f2ecd22528158/mypy-1.20.0-py3-none-any.whl", hash = "sha256:a6e0641147cbfa7e4e94efdb95c2dab1aff8cfc159ded13e07f308ddccc8c48e", size = 2636365, upload-time = "2026-03-31T16:51:44.911Z" }, ] [[package]] @@ -73,18 +74,19 @@ wheels = [ [[package]] name = "pyrefly" -version = "0.58.0" +version = "0.60.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/eb/bb/5611669a79967250e0654c0cffb7b0bb892b4263d5dec9b4345917edd9cd/pyrefly-0.58.0.tar.gz", hash = "sha256:4512b89cd8db95e8994537895ff41ad60e6211643442f8e33ed93bb59f88a256", size = 5357858, upload-time = "2026-03-25T01:21:01.8Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/c7/28d14b64888e2d03815627ebff8d57a9f08389c4bbebfe70ae1ed98a1267/pyrefly-0.60.0.tar.gz", hash = "sha256:2499f5b6ff5342e86dfe1cd94bcce133519bbbc93b7ad5636195fea4f0fa3b81", size = 5500389, upload-time = "2026-04-06T19:57:30.643Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/fb/499e8efc0c3bc4e8f0e689922e616a8d406ff3297962c94b8053701b727f/pyrefly-0.58.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6521e3924d98c2fe118109de625c075d970f9d4a9682f11afa4f7c6b5f11ca1f", size = 12765022, upload-time = "2026-03-25T01:20:41.397Z" }, - { url = "https://files.pythonhosted.org/packages/b6/7f/25f329adfb191e78c22524858cce7d0e06d3961d44fe2ed5c302d3096dc2/pyrefly-0.58.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:bd52dd8f330e08f3829791b914f170769f97e8a0e377abf554710decbf799f20", size = 12276729, upload-time = "2026-03-25T01:20:43.815Z" }, - { url = "https://files.pythonhosted.org/packages/ac/ca/4982e8e3a177ed30e7ec23f51a429c2319653dcebbe20bac55ef3f275f23/pyrefly-0.58.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2334bea7d7b43a4d9061cce8e48ee5da2de185511637ed691dca5d649633f514", size = 35369879, upload-time = "2026-03-25T01:20:46.48Z" }, - { url = "https://files.pythonhosted.org/packages/7f/56/02afb8f6584765d1fed08a81f0415504345229ff452384143864a8ed8062/pyrefly-0.58.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb7bf956beb01f2664a1b20ca7303dc617bc454457b869237945edd5a52fc39b", size = 38060979, upload-time = "2026-03-25T01:20:49.62Z" }, - { url = "https://files.pythonhosted.org/packages/ca/ec/78ae846cba36a244db20d157948e6dd238713f63b812b701754e22fab4d5/pyrefly-0.58.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce58ec7d4a5bc4fdb4a8d90329259c15e221e840ce1da946c698c4954aa4098b", size = 40753678, upload-time = "2026-03-25T01:20:52.718Z" }, - { url = "https://files.pythonhosted.org/packages/98/ec/6d1461960bf2efbf7af679846edd29ff1fce9e20b4a653cb99338e1e847e/pyrefly-0.58.0-py3-none-win32.whl", hash = "sha256:43fa3b1abc0b55503c6238d09f333ce4f7a341cb9d5113b9d5e3089b8e0901b6", size = 11793278, upload-time = "2026-03-25T01:20:55.367Z" }, - { url = "https://files.pythonhosted.org/packages/3d/23/70c20ea234409e4ea3b4177ec6cdf221532fd34bfec012961972e2ab511f/pyrefly-0.58.0-py3-none-win_amd64.whl", hash = "sha256:5dbd270d6841ec7b772ee41dd2d83f376ad24b279b747ddb8c11550ad3648dde", size = 12626215, upload-time = "2026-03-25T01:20:57.329Z" }, - { url = "https://files.pythonhosted.org/packages/c3/20/fed053053785585cdd3a393aa3ab8e2e1f9c5078c16c9b659bb4b87ff22d/pyrefly-0.58.0-py3-none-win_arm64.whl", hash = "sha256:86425dfb43607027960ffed13722504992e83b45becbb83853d8f961c715dac2", size = 12124266, upload-time = "2026-03-25T01:20:59.641Z" }, + { url = "https://files.pythonhosted.org/packages/31/99/6c9984a09220e5eb7dd5c869b7a32d25c3d06b5e8854c6eb679db1145c3e/pyrefly-0.60.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:bf1691af0fee69d0c99c3c6e9d26ab6acd3c8afef96416f9ba2e74934833b7b5", size = 12921262, upload-time = "2026-04-06T19:57:00.745Z" }, + { url = "https://files.pythonhosted.org/packages/05/b3/6216aa3c00c88e59a27eb4149851b5affe86eeea6129f4224034a32dddb0/pyrefly-0.60.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3e71b70c9b95545cf3b479bc55d1381b531de7b2380eb64411088a1e56b634cb", size = 12424413, upload-time = "2026-04-06T19:57:03.417Z" }, + { url = "https://files.pythonhosted.org/packages/9b/87/eb8dd73abd92a93952ac27a605e463c432fb250fb23186574038c7035594/pyrefly-0.60.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:680ee5f8f98230ea145652d7344708f5375786209c5bf03d8b911fdb0d0d4195", size = 35940884, upload-time = "2026-04-06T19:57:06.909Z" }, + { url = "https://files.pythonhosted.org/packages/0d/34/dc6aeb67b840c745fcee6db358295d554abe6ab555a7eaaf44624bd80bf1/pyrefly-0.60.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d0b20dbbe4aff15b959e8d825b7521a144c4122c11e57022e83b36568c54470", size = 38677220, upload-time = "2026-04-06T19:57:11.235Z" }, + { url = "https://files.pythonhosted.org/packages/66/6b/c863fcf7ef592b7d1db91502acf0d1113be8bed7a2a7143fc6f0dd90616f/pyrefly-0.60.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2911563c8e6b2eaefff68885c94727965469a35375a409235a7a4d2b7157dc15", size = 36907431, upload-time = "2026-04-06T19:57:15.074Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a2/25ea095ab2ecca8e62884669b11a79f14299db93071685b73a97efbaf4f3/pyrefly-0.60.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0a631d9d04705e303fe156f2e62551611bc7ef8066c34708ceebcfb3088bd55", size = 41447898, upload-time = "2026-04-06T19:57:19.382Z" }, + { url = "https://files.pythonhosted.org/packages/8e/2c/097bdc6e8d40676b28eb03710a4577bc3c7b803cd24693ac02bf15de3d67/pyrefly-0.60.0-py3-none-win32.whl", hash = "sha256:a08d69298da5626cf502d3debbb6944fd13d2f405ea6625363751f1ff570d366", size = 11913434, upload-time = "2026-04-06T19:57:22.887Z" }, + { url = "https://files.pythonhosted.org/packages/0a/d4/8d27fe310e830c8d11ab73db38b93f9fd2e218744b6efb1204401c9a74d5/pyrefly-0.60.0-py3-none-win_amd64.whl", hash = "sha256:56cf30654e708ae1dd635ffefcba4fa4b349dd7004a6ccc5c41e3a9bb944320c", size = 12745033, upload-time = "2026-04-06T19:57:25.517Z" }, + { url = "https://files.pythonhosted.org/packages/1f/ad/8eea1f8fb8209f91f6dbfe48000c9d05fd0cdb1b5b3157283c9b1dada55d/pyrefly-0.60.0-py3-none-win_arm64.whl", hash = "sha256:b6d27fba970f4777063c0227c54167d83bece1804ea34f69e7118e409ba038d2", size = 12246390, upload-time = "2026-04-06T19:57:28.141Z" }, ] [[package]] @@ -187,19 +189,19 @@ wheels = [ [[package]] name = "zuban" -version = "0.6.2" +version = "0.7.0" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/10/29/2d9f68f875155dfc58cb2542bad9bce60c680bf77b883a17cefd2c7b1399/zuban-0.6.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:392a24f4542b36e06b6ea8ff8a66b9bcf073fac380f6fedf5ead6d239a089b1b", size = 11274171, upload-time = "2026-03-16T23:11:13.516Z" }, - { url = "https://files.pythonhosted.org/packages/0f/83/77cf8a9568e21653c79ca6acbd35575ef3bc82251d1f604bb4c32bea98df/zuban-0.6.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5637981d19c503325bc2fd24b92af218733ee618de2f5217fa2523ca918b3a88", size = 10985794, upload-time = "2026-03-16T23:11:17.828Z" }, - { url = "https://files.pythonhosted.org/packages/23/22/2f7579439acbea7a28d8bbeb361225ddb9502406a892da9a94e73fadd522/zuban-0.6.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8097a716499ff7b3ac927b8e4c5425b9cfff5cd0b4e644a03e24d1a7c625d048", size = 28440118, upload-time = "2026-03-16T23:11:21.496Z" }, - { url = "https://files.pythonhosted.org/packages/03/1f/e714bbbf1783b76687a39c1ed7764b96c395221c103be91c0b63a4e249da/zuban-0.6.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ecf4b0c0e682f76f6403d68457d9085cc01dbbc56d402d925d931e82b36d9b5f", size = 28715022, upload-time = "2026-03-16T23:11:25.409Z" }, - { url = "https://files.pythonhosted.org/packages/24/b0/cd98c1c2797353a9fd8d10393ba018255e18a23ba47f505a538c32ea923c/zuban-0.6.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b1488ed63733d813d9be81b0c2bc888a329b31c4a03cb2cf462c7f0db052fef", size = 29943854, upload-time = "2026-03-16T23:11:29.391Z" }, - { url = "https://files.pythonhosted.org/packages/70/ee/d1ddcf7e7ea098eb33cc1d5b6b38a2688375f27207bdc80929a3abb8251e/zuban-0.6.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5b48be20d805b41ac224feeabd1b421a53e55b6cc10f2f3011139c1f625c583", size = 30939082, upload-time = "2026-03-16T23:11:34.003Z" }, - { url = "https://files.pythonhosted.org/packages/fb/45/c477ee9e281a334cfe7cf0375e1cf5e0433e80ade4cc7165ff9a9b756256/zuban-0.6.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:14d30ece874c9ca5b99ef57064b778edc834404e9d350af0c54eaf36d7eb6396", size = 28712077, upload-time = "2026-03-16T23:11:37.711Z" }, - { url = "https://files.pythonhosted.org/packages/ab/df/a962d8aacaf177356bfd698418d10a12fddd8d1c300e5cbd994ff62f80c2/zuban-0.6.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:3c144cd9436d39a3bebe50302c2eb600be403d22a85ae3ef41f061768e96d17e", size = 29336825, upload-time = "2026-03-16T23:11:41.965Z" }, - { url = "https://files.pythonhosted.org/packages/bd/35/09450daba51442632b51b70ef95a94356482fcfdd0127e70ed0f45be2a83/zuban-0.6.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ff52b183e752646baea76c0fb1e06e247c47e437d0d37f1386e07504dc2e4c29", size = 30047009, upload-time = "2026-03-16T23:11:46.796Z" }, - { url = "https://files.pythonhosted.org/packages/a4/73/796d8e3789dadc84020a7a67d65cf13facca9807d40852adae8041032f41/zuban-0.6.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0e265fb4c38efc78e4ed79dc1b9b7adb034d70fa51f963c9ac609af1fbe2f855", size = 29316703, upload-time = "2026-03-16T23:11:50.81Z" }, - { url = "https://files.pythonhosted.org/packages/ea/2a/508617bda8277472cf403ecb73ae3b9227820dc2ff2a3a023eaed8512d5b/zuban-0.6.2-py3-none-win32.whl", hash = "sha256:4a129511f9f6080ba7d4153f111b5e6c2214a3eef945730ce466658903c324b8", size = 9742656, upload-time = "2026-03-16T23:11:54.231Z" }, - { url = "https://files.pythonhosted.org/packages/d0/25/dae184c1b6d7fbdc43e906254fef2577d23899669b58de865fcb0fe150f5/zuban-0.6.2-py3-none-win_amd64.whl", hash = "sha256:7db193c8b1456977ca2dfa2291c93a376e17f465a69018a06d0ecc8655464fff", size = 10464125, upload-time = "2026-03-16T23:11:57.267Z" }, + { url = "https://files.pythonhosted.org/packages/6b/5e/1b6c0b5646f9417233f11555da980cd31360a733fbb0df3e03f8e15f8c9e/zuban-0.7.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:743bfa4570dae9e70ef3a4a1804536dae7e227baee6710cd8d186d912a457ce5", size = 11227277, upload-time = "2026-04-05T23:54:08.775Z" }, + { url = "https://files.pythonhosted.org/packages/02/50/1517bb6fc5f74043f17ec1b62e4c206eea5899e06aacd23eff0f7ec187e1/zuban-0.7.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:13c73dfae2b7541cca73d00e536f56c05a8902418417cb525561d95f9138835c", size = 10936919, upload-time = "2026-04-05T23:54:11.781Z" }, + { url = "https://files.pythonhosted.org/packages/0c/f3/b8e831c12353cd38f6d600e4384ed8325b3dae4d6202f7b6f4d10ac2cf07/zuban-0.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a13e017e58ec8819e1b180fe1432d42bd0d78b551de6885685ffcfdd42d81d64", size = 27859671, upload-time = "2026-04-05T23:54:14.863Z" }, + { url = "https://files.pythonhosted.org/packages/81/55/48b7a732b606fe8eecf8fb7940b37ff97c0d25938e0ae80cdd9c90c2af35/zuban-0.7.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3521f9403ce7e6a21203ccbc57e53f58928265010df048bc4ac41be63bf3747a", size = 28013069, upload-time = "2026-04-05T23:54:18.524Z" }, + { url = "https://files.pythonhosted.org/packages/73/6d/526eb4d587f5471f11d7cfffcf9bae620d48c496883472dddbff4d82da53/zuban-0.7.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d207872861447fb4a7f246341b4499610d2b4008fd10445ab33e9a8831ede36b", size = 29282006, upload-time = "2026-04-05T23:54:21.785Z" }, + { url = "https://files.pythonhosted.org/packages/16/fa/4b65cd8ba5fde5de98228119e874b0ad4f9b002619c5b0d35306fe024e85/zuban-0.7.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc664e4036351aa0239876c4049a4b4316a9958c36a115cce1e3a9a3b5b3fca7", size = 30261031, upload-time = "2026-04-05T23:54:25.965Z" }, + { url = "https://files.pythonhosted.org/packages/8c/07/bf6f751c429f1ae141058169260e11d648108e41cb313a2bad5ce3e97635/zuban-0.7.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:16f9c4e06e6693e61767bcb38957748f316af7351dd85f926c6ed92424ae67ae", size = 28011942, upload-time = "2026-04-05T23:54:29.405Z" }, + { url = "https://files.pythonhosted.org/packages/0a/22/e9f8c6d3939e4ff2b3a8e720c3d8e5464d6a177612421381169b6a6a8c5a/zuban-0.7.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7c483afa9c6f097b761a7141b5a21c675cac1634dd9746cb52020c34334d207c", size = 28431793, upload-time = "2026-04-05T23:54:33.32Z" }, + { url = "https://files.pythonhosted.org/packages/92/d0/abc21f67b591130a4d9dca7f8314364916739f21a7be89ea5b0580ec7aa3/zuban-0.7.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c0b58dc6c64ce954bb991b121b3ccdd8c63e2c43ba577457223a7418e259532d", size = 29183590, upload-time = "2026-04-05T23:54:36.732Z" }, + { url = "https://files.pythonhosted.org/packages/a0/44/476913fa1294cc16d202766ad6f09d017d7da33a2bade21c6045b1ad846d/zuban-0.7.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6148578b75fbc149ae5844e8b9acc54fa7e60fdd3bb5f75dd5b588754a38d4df", size = 28583142, upload-time = "2026-04-05T23:54:40.564Z" }, + { url = "https://files.pythonhosted.org/packages/4b/25/fe6b17934a1e8ec9bceafdc140c7a583bd6c3fbf2b77451516805b2d5dad/zuban-0.7.0-py3-none-win32.whl", hash = "sha256:9cde2f8aaf9fc7d1afbe78ac66afc34f99fc28aedc201897b6fd4336c4c96ec2", size = 9786129, upload-time = "2026-04-05T23:54:43.907Z" }, + { url = "https://files.pythonhosted.org/packages/59/24/5efbdd25be1763018dc39133a01ee89fb2d5c0239b278a984dd217ea8d63/zuban-0.7.0-py3-none-win_amd64.whl", hash = "sha256:8120092828389ee6cb328c513f3219971656837bed9c6837afd81076b31b7d98", size = 10555603, upload-time = "2026-04-05T23:54:46.677Z" }, ]
 
mypy 1.19.1
+
mypy 1.20.0
pyright 1.1.408
zuban 0.6.2
+
zuban 0.7.0
pyrefly 0.58.0
+
pyrefly 0.60.0
ty 0.0.29
Partial

Does not support assigning Union and GenericAlias objects to their runtime types.

Unsupported PassUnsupported
Partial

Does not allow assigning a TypeForm to types.GenericAlias.

Does not allow passing a forward reference to a function accepting a TypeForm.

Unsupported
@@ -318,7 +318,7 @@

Python Type System Conformance Test Results

Pass Pass Pass
Partial

Does not reject usage of args/kwargs for out-of-scope ParamSpec

Pass
Partial

Incorrectly allows using `*args: P.args` and `**kwargs: P.kwargs` when `P` has not been put into scope by any other parameter annotation or enclosing scope.

     generics_paramspec_semantics
     generics_typevartuple_args
Partial

Does not enforce that tuples captured by TypeVarTuple are of the same length.

Partial

Does not correctly solve TypeVarTuple with heterogeneous bounds.

Partial

Does not correctly solve TypeVarTuple with heterogeneous bounds.

Pass
Partial

Does not correctly solve TypeVarTuple with heterogeneous bounds.

Partial

Supports PEP-646 unpacked tuples but not TypeVarTuple.

     generics_typevartuple_basic
Partial

Does not enforce that tuples captured by TypeVarTuple are same length.

Partial

Does not correctly solve TypeVarTuple with heterogeneous bounds.

Partial

Does not correctly solve TypeVarTuple with heterogeneous bounds.

Pass
Partial

TypeVarTuple is pinned too early when calling generic function.

Unsupported
Partial

Does not treat use of Final name as if it was replaced by the literal in NamedTuple definition.

Does not allow conditional assignment of Final instance variable in __init__ method.

Does not allow redefinition of private class variable that is marked Final in parent class.

Does not report modification of local Final variable via "for" statement.

Pass Pass
Partial

Does not reject Final inside ClassVar.

Issues with NamedTuple interaction.

Pass Pass
     qualifiers_final_decorator Pass Pass Pass
Partial

Fails one subtyping example of protocol modules

Pass
Partial

Never considers a module as satisfying a protocol with a method member due to the fact that the method will never exist on the class `types.ModuleType`, only on a given specific module instance.

     protocols_recursive