diff --git a/conformance/results/results.html b/conformance/results/results.html index a236e7b9..b29a7cee 100644 --- a/conformance/results/results.html +++ b/conformance/results/results.html @@ -269,7 +269,7 @@

Python Type System Conformance Test Results

pycroscope 0.4.0 pyrefly 1.1.0 pyright 1.1.410 - ty 0.0.50 + ty 0.0.65 zuban 0.8.2 @@ -569,7 +569,8 @@

Python Type System Conformance Test Results

Partial Pass @@ -854,7 +855,7 @@

Python Type System Conformance Test Results

Partial Pass @@ -876,7 +877,12 @@

Python Type System Conformance Test Results

  • Does not correctly solve TypeVarTuple with heterogeneous bounds.
  • - Unsupported + + Partial + + Pass @@ -886,7 +892,12 @@

    Python Type System Conformance Test Results

    Pass Pass Pass - Unsupported + + Partial + + Pass @@ -896,7 +907,7 @@

    Python Type System Conformance Test Results

    Pass Pass Pass - Unsupported + Pass Pass @@ -922,7 +933,7 @@

    Python Type System Conformance Test Results

    Pass Pass Pass - Unsupported + Pass Pass @@ -932,7 +943,7 @@

    Python Type System Conformance Test Results

    Pass Pass Pass - Unsupported + Pass Pass @@ -982,7 +993,7 @@

    Python Type System Conformance Test Results

    28.5 / 30 • 95.0% 29.5 / 30 • 98.3% 28.5 / 30 • 95.0% - 21 / 30 • 70.0% + 25 / 30 • 83.3% 30 / 30 • 100.0% @@ -1189,8 +1200,7 @@

    Python Type System Conformance Test Results

    Partial Pass @@ -1216,10 +1226,7 @@

    Python Type System Conformance Test Results

    Partial Pass @@ -1263,12 +1270,7 @@

    Python Type System Conformance Test Results

    Pass Pass Pass - - Pass - - + Pass Pass @@ -1345,13 +1347,12 @@

    Python Type System Conformance Test Results

    Pass Pass - - Unsupported + + Partial Pass @@ -1372,10 +1373,8 @@

    Python Type System Conformance Test Results

    Partial Pass @@ -1444,12 +1443,7 @@

    Python Type System Conformance Test Results

    Pass Pass Pass - - Partial - - + Pass Pass @@ -1524,7 +1518,7 @@

    Python Type System Conformance Test Results

    10 / 11 • 90.9% 11 / 11 • 100.0% 11 / 11 • 100.0% - 5 / 11 • 45.5% + 6 / 11 • 54.5% 11 / 11 • 100.0% @@ -1552,12 +1546,7 @@

    Python Type System Conformance Test Results

    Pass - - Partial - - + Pass Pass @@ -1602,7 +1591,7 @@

    Python Type System Conformance Test Results

    4 / 4 • 100.0% 3.5 / 4 • 87.5% 4 / 4 • 100.0% - 3.5 / 4 • 87.5% + 4 / 4 • 100.0% 4 / 4 • 100.0% @@ -2487,12 +2476,7 @@

    Python Type System Conformance Test Results

    Pass Pass Pass - - Partial - - + Pass Pass @@ -2558,7 +2542,7 @@

    Python Type System Conformance Test Results

    5.5 / 6 • 91.7% 6 / 6 • 100.0% 6 / 6 • 100.0% - 5.5 / 6 • 91.7% + 6 / 6 • 100.0% 6 / 6 • 100.0% @@ -2812,7 +2796,7 @@

    Python Type System Conformance Test Results

    130 / 141 • 92.2% 138 / 141 • 97.9% 136.5 / 141 • 96.8% - 116 / 141 • 82.3% + 122 / 141 • 86.5% 140.5 / 141 • 99.6% diff --git a/conformance/results/ty/aliases_type_statement.toml b/conformance/results/ty/aliases_type_statement.toml index d1175af8..c317800b 100644 --- a/conformance/results/ty/aliases_type_statement.toml +++ b/conformance/results/ty/aliases_type_statement.toml @@ -1,16 +1,12 @@ conformance_automated = "Fail" conformant = "Partial" notes = """ -Does not reject circular definitions of type aliases. -Does not support `type` statements generic over `TypeVarTuple`s. +Does not reject a generic type alias that recursively specializes itself with different type arguments. """ errors_diff = """ Line 75: Expected 1 errors -Line 10: Unexpected errors ['aliases_type_statement.py:10:52: error[invalid-type-arguments] Too many type arguments: expected 2, got 3', 'aliases_type_statement.py:10:52: error[invalid-type-form] `...` is not allowed in this context in a type alias value'] """ output = """ -aliases_type_statement.py:10:52: error[invalid-type-arguments] Too many type arguments: expected 2, got 3 -aliases_type_statement.py:10:52: error[invalid-type-form] `...` is not allowed in this context in a type alias value aliases_type_statement.py:17:1: error[unresolved-attribute] Object of type `TypeAliasType` has no attribute `bit_count` aliases_type_statement.py:19:1: error[call-non-callable] Object of type `TypeAliasType` is not callable aliases_type_statement.py:23:7: error[unresolved-attribute] Object of type `TypeAliasType` has no attribute `other_attrib` diff --git a/conformance/results/ty/aliases_typealiastype.toml b/conformance/results/ty/aliases_typealiastype.toml index 181178cf..672ec33f 100644 --- a/conformance/results/ty/aliases_typealiastype.toml +++ b/conformance/results/ty/aliases_typealiastype.toml @@ -1,22 +1,19 @@ conformance_automated = "Fail" conformant = "Partial" notes = """ -Does not reject specializing a type parameter in a generic type alias with a type inconsistent with the parameter's upper bound. -Does not reject declaring a type alias with a type variable that is not in scope. -Does not reject declaring a type alias with a non-literal tuple passed to the `type_params` parameter. -Does not reject cyclically defined type aliases. +Does not reject cyclically defined `TypeAliasType` aliases. """ errors_diff = """ -Line 40: Expected 1 errors -Line 43: Expected 1 errors -Line 44: Expected 1 errors -Line 45: Expected 1 errors Line 46: Expected 1 errors Line 47: Expected 1 errors Line 48: Expected 1 errors """ output = """ aliases_typealiastype.py:32:7: error[unresolved-attribute] Object of type `TypeAliasType` has no attribute `other_attrib` +aliases_typealiastype.py:40:21: error[invalid-type-arguments] Type `int` is not assignable to upper bound `str` of type variable `TStr@GoodAlias5` +aliases_typealiastype.py:43:40: error[invalid-type-alias-type] Type parameter `S` used in the alias value must be included in `type_params` +aliases_typealiastype.py:44:40: error[invalid-type-alias-type] Type parameter `S` used in the alias value must be included in `type_params` +aliases_typealiastype.py:45:57: error[invalid-type-alias-type] The `type_params` argument to `TypeAliasType` must be a tuple literal aliases_typealiastype.py:52:40: error[invalid-type-form] Function calls are not allowed in type expressions aliases_typealiastype.py:53:40: error[invalid-type-form] List literals are not allowed in this context in a type expression aliases_typealiastype.py:54:42: error[invalid-type-form] Tuple literals are not allowed in this context in a type expression diff --git a/conformance/results/ty/callables_annotation.toml b/conformance/results/ty/callables_annotation.toml index d7c3c910..5f68e9f5 100644 --- a/conformance/results/ty/callables_annotation.toml +++ b/conformance/results/ty/callables_annotation.toml @@ -1,10 +1,5 @@ -conformance_automated = "Fail" -conformant = "Partial" -notes = """ -Infers a callback protocol as being a gradual type if the callback has signature `__call__[T](self, *args: T, **kwargs: T)` and `T` has been explicitly specialized to `Any`. -""" +conformance_automated = "Pass" errors_diff = """ -Line 159: Expected 1 errors """ output = """ callables_annotation.py:25:5: error[missing-argument] No argument provided for required parameter 2 @@ -23,6 +18,7 @@ callables_annotation.py:58:14: error[invalid-type-form] The first argument to `C callables_annotation.py:59:14: error[invalid-type-form] `[...]` is not a valid parameter list for `Callable`: Did you mean `Callable[..., int]`? callables_annotation.py:91:7: error[invalid-assignment] Object of type `def test_cb2() -> str` is not assignable to `(int, /, *args: Any, **kwargs: Any) -> str` callables_annotation.py:93:7: error[invalid-assignment] Object of type `def test_cb4(*, a: int) -> str` is not assignable to `(int, /, *args: Any, **kwargs: Any) -> str` +callables_annotation.py:159:25: error[invalid-assignment] Object of type `Proto8` is not assignable to `Proto5[Any]` callables_annotation.py:172:26: error[invalid-assignment] Object of type `() -> str` is not assignable to `(int, /, *args: Any, **kwargs: Any) -> str` callables_annotation.py:187:48: error[invalid-assignment] Object of type `(int, str, /) -> str` is not assignable to `(str, /, *args: Any, **kwargs: Any) -> str` callables_annotation.py:189:32: error[invalid-assignment] Object of type `(int, str, /) -> str` is not assignable to `(str, /, *args: Any, **kwargs: Any) -> str` diff --git a/conformance/results/ty/constructors_callable.toml b/conformance/results/ty/constructors_callable.toml index e9458193..7f22bcaa 100644 --- a/conformance/results/ty/constructors_callable.toml +++ b/conformance/results/ty/constructors_callable.toml @@ -38,10 +38,6 @@ constructors_callable.py:166:1: error[type-assertion-failure] Type `Class7[int] constructors_callable.py:167:1: error[type-assertion-failure] Type `Class7[int] | Class7[str]` does not match asserted type `Class7[str]` constructors_callable.py:184:13: info[revealed-type] Revealed type: `[T](x: list[T], y: list[T]) -> Class8[T]` constructors_callable.py:185:10: error[invalid-argument-type] Argument is incorrect: Expected `list[str]`, found `Literal["not a list"]` -constructors_callable.py:187:4: error[invalid-argument-type] Argument is incorrect: Expected `list[int | str]`, found `list[int]` -constructors_callable.py:187:9: error[invalid-argument-type] Argument is incorrect: Expected `list[int | str]`, found `list[str]` constructors_callable.py:196:13: info[revealed-type] Revealed type: `[T](x: list[T], y: list[T]) -> Class9` constructors_callable.py:197:10: error[invalid-argument-type] Argument is incorrect: Expected `list[str]`, found `Literal["not a list"]` -constructors_callable.py:199:4: error[invalid-argument-type] Argument is incorrect: Expected `list[int | str]`, found `list[int]` -constructors_callable.py:199:9: error[invalid-argument-type] Argument is incorrect: Expected `list[int | str]`, found `list[str]` """ diff --git a/conformance/results/ty/enums_expansion.toml b/conformance/results/ty/enums_expansion.toml index 5e5e1f0d..10c65b6c 100644 --- a/conformance/results/ty/enums_expansion.toml +++ b/conformance/results/ty/enums_expansion.toml @@ -1,10 +1,6 @@ -conformance_automated = "Fail" -conformant = "Partial" -notes = """Does not support `enum.Flag`.""" +conformance_automated = "Pass" errors_diff = """ -Line 53: Expected 1 errors -Line 52: Unexpected errors ['enums_expansion.py:52:9: error[type-assertion-failure] Type `Literal[CustomFlags.FLAG3]` does not match asserted type `CustomFlags`'] """ output = """ -enums_expansion.py:52:9: error[type-assertion-failure] Type `Literal[CustomFlags.FLAG3]` does not match asserted type `CustomFlags` +enums_expansion.py:53:9: error[type-assertion-failure] Type `CustomFlags & ~Literal[CustomFlags.FLAG1] & ~Literal[CustomFlags.FLAG2]` does not match asserted type `Literal[CustomFlags.FLAG3]` """ diff --git a/conformance/results/ty/generics_basic.toml b/conformance/results/ty/generics_basic.toml index ab12bf40..4b2b392c 100644 --- a/conformance/results/ty/generics_basic.toml +++ b/conformance/results/ty/generics_basic.toml @@ -20,13 +20,9 @@ generics_basic.py:171:1: error[invalid-generic-class] `Generic` base class must generics_basic.py:172:1: error[invalid-generic-class] `Generic` base class must include all type variables used in other base classes generics_basic.py:208:27: error[invalid-metaclass] Generic metaclasses are not supported generics_basic.py:223:22: error[invalid-argument-type] Argument to function `takes_two_lists` is incorrect: Expected `list[int]`, found `Literal["not a list"]` -generics_basic.py:225:17: error[invalid-argument-type] Argument to function `takes_two_lists` is incorrect: Expected `list[int | str]`, found `list[int]` -generics_basic.py:225:22: error[invalid-argument-type] Argument to function `takes_two_lists` is incorrect: Expected `list[int | str]`, found `list[str]` generics_basic.py:232:21: error[invalid-argument-type] Argument to function `takes_two_lists` is incorrect: Expected `list[int | str]`, found `list[int]` generics_basic.py:232:24: error[invalid-argument-type] Argument to function `takes_two_lists` is incorrect: Expected `list[int | str]`, found `list[str]` generics_basic.py:240:26: error[invalid-argument-type] Argument to function `takes_two_int_lists` is incorrect: Expected `list[int]`, found `Literal["not a list"]` -generics_basic.py:241:26: error[invalid-argument-type] Argument to function `takes_two_int_lists` is incorrect: Argument type `str` does not satisfy upper bound `int` of type variable `T_int` -generics_basic.py:241:26: error[invalid-argument-type] Argument to function `takes_two_int_lists` is incorrect: Expected `list[int]`, found `list[str]` -generics_basic.py:244:26: error[invalid-argument-type] Argument to function `takes_two_int_lists` is incorrect: Expected `list[int]`, found `list[bool]` +generics_basic.py:241:26: error[invalid-argument-type] Argument to function `takes_two_int_lists` is incorrect: Argument type `int | str` does not satisfy upper bound `int` of type variable `T_int` generics_basic.py:251:28: error[invalid-argument-type] Argument to function `takes_two_int_lists` is incorrect: Expected `list[int]`, found `list[bool]` """ diff --git a/conformance/results/ty/generics_defaults.toml b/conformance/results/ty/generics_defaults.toml index d8887a2e..edcfc62c 100644 --- a/conformance/results/ty/generics_defaults.toml +++ b/conformance/results/ty/generics_defaults.toml @@ -2,29 +2,24 @@ conformance_automated = "Fail" conformant = "Partial" notes = """ Does not forbid a `TypeVar` immediately following a `TypeVarTuple` in a parameter list from having a default. -Does not support `TypeVarTuple`. +Does not accept a `TypeVarTuple` default that unpacks another in-scope `TypeVarTuple`. +Does not correctly specialize a generic that combines a `TypeVarTuple` with a defaulted `ParamSpec`. """ errors_diff = """ Line 188: Expected 1 errors -Line 139: Unexpected errors ['generics_defaults.py:139:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[str, int]`'] -Line 140: Unexpected errors ['generics_defaults.py:140:5: error[type-assertion-failure] Type `Class_TypeVarTuple` does not match asserted type `@Todo`'] -Line 200: Unexpected errors ['generics_defaults.py:200:17: error[invalid-type-form] The first argument to `Callable` must be either a list of types, ParamSpec, Concatenate, or `...`'] -Line 204: Unexpected errors ['generics_defaults.py:204:5: error[type-assertion-failure] Type `@Todo` does not match asserted type `tuple[int, str]`'] -Line 205: Unexpected errors ['generics_defaults.py:205:5: error[type-assertion-failure] Type `@Todo` does not match asserted type `(int | float, bool, /) -> None`'] -Line 207: Unexpected errors ['generics_defaults.py:207:5: error[type-assertion-failure] Type `@Todo` does not match asserted type `tuple[int, str]`'] -Line 208: Unexpected errors ['generics_defaults.py:208:5: error[type-assertion-failure] Type `@Todo` does not match asserted type `(bytes, /) -> None`'] +Line 144: Unexpected errors ['generics_defaults.py:144:61: error[invalid-type-form] `Unpack` can only unpack a tuple type or `TypeVarTuple`'] +Line 203: Unexpected errors ['generics_defaults.py:203:28: error[invalid-type-arguments] Type argument for `ParamSpec` must be either a list of types, `ParamSpec`, `Concatenate`, or `...`'] +Line 204: Unexpected errors ['generics_defaults.py:204:5: error[type-assertion-failure] Type `tuple[int]` does not match asserted type `tuple[int, str]`'] +Line 205: Unexpected errors ['generics_defaults.py:205:5: error[type-assertion-failure] Type `(...) -> None` does not match asserted type `(int | float, bool, /) -> None`'] """ output = """ generics_defaults.py:24:40: error[invalid-generic-class] Type parameter `T` without a default cannot follow earlier parameter `DefaultStrT` with a default generics_defaults.py:66:8: error[invalid-type-arguments] No type argument provided for required type variable `T2` of class `AllTheDefaults` -generics_defaults.py:139:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[str, int]` -generics_defaults.py:140:5: error[type-assertion-failure] Type `Class_TypeVarTuple` does not match asserted type `@Todo` +generics_defaults.py:144:61: error[invalid-type-form] `Unpack` can only unpack a tuple type or `TypeVarTuple` generics_defaults.py:152:51: error[invalid-type-variable-default] TypeVar default is not assignable to the TypeVar's upper bound generics_defaults.py:159:52: error[invalid-type-variable-default] TypeVar default is inconsistent with the TypeVar's constraints: `int` is not one of the constraints of `Invalid2` generics_defaults.py:177:1: error[type-assertion-failure] Type `int` does not match asserted type `Any` -generics_defaults.py:200:17: error[invalid-type-form] The first argument to `Callable` must be either a list of types, ParamSpec, Concatenate, or `...` -generics_defaults.py:204:5: error[type-assertion-failure] Type `@Todo` does not match asserted type `tuple[int, str]` -generics_defaults.py:205:5: error[type-assertion-failure] Type `@Todo` does not match asserted type `(int | float, bool, /) -> None` -generics_defaults.py:207:5: error[type-assertion-failure] Type `@Todo` does not match asserted type `tuple[int, str]` -generics_defaults.py:208:5: error[type-assertion-failure] Type `@Todo` does not match asserted type `(bytes, /) -> None` +generics_defaults.py:203:28: error[invalid-type-arguments] Type argument for `ParamSpec` must be either a list of types, `ParamSpec`, `Concatenate`, or `...` +generics_defaults.py:204:5: error[type-assertion-failure] Type `tuple[int]` does not match asserted type `tuple[int, str]` +generics_defaults.py:205:5: error[type-assertion-failure] Type `(...) -> None` does not match asserted type `(int | float, bool, /) -> None` """ diff --git a/conformance/results/ty/generics_typevartuple_args.toml b/conformance/results/ty/generics_typevartuple_args.toml index 826f3333..79dbf129 100644 --- a/conformance/results/ty/generics_typevartuple_args.toml +++ b/conformance/results/ty/generics_typevartuple_args.toml @@ -1,7 +1,7 @@ conformance_automated = "Fail" conformant = "Partial" notes = """ -Supports PEP-646 unpacked tuples but not `TypeVarTuple`. +Only partially supports `TypeVarTuple` in `*args` annotations. """ errors_diff = """ Line 33: Expected 1 errors @@ -11,13 +11,13 @@ Line 57: Expected 1 errors Line 58: Expected 1 errors Line 59: Expected 1 errors Line 67: Expected 1 errors -Line 75: Expected 1 errors -Line 29: Unexpected errors ['generics_typevartuple_args.py:29:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int, str]`'] -Line 31: Unexpected errors ['generics_typevartuple_args.py:31:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[()]`'] -Line 32: Unexpected errors ['generics_typevartuple_args.py:32:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int, str]`'] +Line 29: Unexpected errors ['generics_typevartuple_args.py:29:5: error[type-assertion-failure] Type `tuple[Unknown, ...]` does not match asserted type `tuple[int, str]`'] +Line 31: Unexpected errors ['generics_typevartuple_args.py:31:5: error[type-assertion-failure] Type `tuple[Unknown, ...]` does not match asserted type `tuple[()]`'] +Line 32: Unexpected errors ['generics_typevartuple_args.py:32:5: error[type-assertion-failure] Type `tuple[Unknown, ...]` does not match asserted type `tuple[int, str]`'] """ output = """ -generics_typevartuple_args.py:29:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int, str]` -generics_typevartuple_args.py:31:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[()]` -generics_typevartuple_args.py:32:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int, str]` +generics_typevartuple_args.py:29:5: error[type-assertion-failure] Type `tuple[Unknown, ...]` does not match asserted type `tuple[int, str]` +generics_typevartuple_args.py:31:5: error[type-assertion-failure] Type `tuple[Unknown, ...]` does not match asserted type `tuple[()]` +generics_typevartuple_args.py:32:5: error[type-assertion-failure] Type `tuple[Unknown, ...]` does not match asserted type `tuple[int, str]` +generics_typevartuple_args.py:75:13: error[invalid-argument-type] Argument to function `func4` is incorrect: Expected `tuple[Literal[0]]`, found `tuple[Literal[1], Literal[2]]` """ diff --git a/conformance/results/ty/generics_typevartuple_basic.toml b/conformance/results/ty/generics_typevartuple_basic.toml index 02dace06..a449cf6f 100644 --- a/conformance/results/ty/generics_typevartuple_basic.toml +++ b/conformance/results/ty/generics_typevartuple_basic.toml @@ -1,22 +1,28 @@ conformance_automated = "Fail" -conformant = "Unsupported" +conformant = "Partial" +notes = """ +Incorrectly reports an unbound `TypeVarTuple` for a correctly unpacked annotation within an otherwise invalid generic class. +""" errors_diff = """ -Line 43: Expected 1 errors -Line 53: Expected 1 errors -Line 56: Expected 1 errors -Line 59: Expected 1 errors -Line 91: Expected 1 errors -Line 100: Expected 1 errors -Line 101: Expected 1 errors -Line 107: Expected 1 errors -Lines 44, 45: Expected error (tag 'v6') -Line 85: Unexpected errors ['generics_typevartuple_basic.py:85:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int]`'] +Line 54: Unexpected errors ['generics_typevartuple_basic.py:54:29: error[unbound-type-variable] Type variable `Shape` is not bound to any outer generic context'] """ output = """ -generics_typevartuple_basic.py:42:34: error[invalid-argument-type] Argument to `Array.__init__` is incorrect: Expected `tuple[@Todo(TypeVarTuple), ...]`, found `Height` +generics_typevartuple_basic.py:42:28: error[invalid-assignment] Object of type `Array[Shape@Array]` is not assignable to `Array[Height, Width]` +generics_typevartuple_basic.py:42:34: error[invalid-argument-type] Argument to `Array.__init__` is incorrect: Expected `tuple[Height, Width]`, found `Height` +generics_typevartuple_basic.py:43:35: error[invalid-assignment] Object of type `Array[Shape@Array]` is not assignable to `Array[Batch, Height, Width]` +generics_typevartuple_basic.py:43:41: error[invalid-argument-type] Argument to `Array.__init__` is incorrect: Expected `tuple[Batch, Height, Width]`, found `tuple[Batch, Width]` +generics_typevartuple_basic.py:44:41: error[invalid-assignment] Object of type `Array[Time, Batch, Width, Height]` is not assignable to `Array[Time, Batch, Height, Width]` generics_typevartuple_basic.py:52:14: error[invalid-generic-class] `TypeVarTuple` must be unpacked with `*` or `Unpack[]` when used as an argument to `Generic` -generics_typevartuple_basic.py:65:27: error[unknown-argument] Argument `covariant` does not match any known parameter of constructor `TypeVarTuple.__new__` -generics_typevartuple_basic.py:66:27: error[too-many-positional-arguments] Too many positional arguments to constructor `TypeVarTuple.__new__`: expected 2, got 4 -generics_typevartuple_basic.py:67:27: error[unknown-argument] Argument `bound` does not match any known parameter of constructor `TypeVarTuple.__new__` -generics_typevartuple_basic.py:85:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int]` +generics_typevartuple_basic.py:53:37: error[invalid-type-form] Bare TypeVarTuple `Shape` is not valid in this context in a parameter annotation +generics_typevartuple_basic.py:54:29: error[unbound-type-variable] Type variable `Shape` is not bound to any outer generic context +generics_typevartuple_basic.py:56:34: error[invalid-type-form] Bare TypeVarTuple `Shape` is not valid in this context in a return type annotation +generics_typevartuple_basic.py:59:24: error[invalid-type-form] Bare TypeVarTuple `Shape` is not valid in this context in a parameter annotation +generics_typevartuple_basic.py:65:27: error[invalid-legacy-type-variable] The `covariant` parameter of `typing.TypeVarTuple` was added in Python 3.15 +generics_typevartuple_basic.py:66:7: error[invalid-legacy-type-variable] `TypeVarTuple` can only have one positional argument +generics_typevartuple_basic.py:67:27: error[invalid-legacy-type-variable] The `bound` parameter of `typing.TypeVarTuple` was added in Python 3.15 +generics_typevartuple_basic.py:91:15: error[invalid-argument-type] Argument to function `func2` is incorrect: Expected `tuple[Literal[0], Literal[0]]`, found `tuple[Literal[0]]` +generics_typevartuple_basic.py:100:14: error[invalid-argument-type] Argument to function `multiply` is incorrect: Expected `Array[Height | Width]`, found `Array[Height]` +generics_typevartuple_basic.py:100:17: error[invalid-argument-type] Argument to function `multiply` is incorrect: Expected `Array[Height | Width]`, found `Array[Width]` +generics_typevartuple_basic.py:101:17: error[invalid-argument-type] Argument to function `multiply` is incorrect: Expected `Array[Height]`, found `Array[Height, Width]` +generics_typevartuple_basic.py:107:14: error[invalid-generic-class] Only one `TypeVarTuple` parameter is allowed in a `Generic` subscription """ diff --git a/conformance/results/ty/generics_typevartuple_callable.toml b/conformance/results/ty/generics_typevartuple_callable.toml index 223d59b3..8e5efea3 100644 --- a/conformance/results/ty/generics_typevartuple_callable.toml +++ b/conformance/results/ty/generics_typevartuple_callable.toml @@ -1,13 +1,12 @@ conformance_automated = "Fail" -conformant = "Unsupported" +conformant = "Partial" +notes = """ +Does not correctly infer a `TypeVarTuple` that appears between fixed leading and trailing parameters in `*args`. +""" errors_diff = """ -Line 26: Expected 1 errors -Line 41: Unexpected errors ['generics_typevartuple_callable.py:41:1: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[str, int, int | float | complex]`'] -Line 42: Unexpected errors ['generics_typevartuple_callable.py:42:1: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[str]`'] -Line 50: Unexpected errors ['generics_typevartuple_callable.py:50:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int | float | complex, str, int | float]`'] +Line 50: Unexpected errors ['generics_typevartuple_callable.py:50:5: error[type-assertion-failure] Type `tuple[Unknown, *tuple[Unknown, ...]]` does not match asserted type `tuple[int | float | complex, str, int | float]`'] """ output = """ -generics_typevartuple_callable.py:41:1: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[str, int, int | float | complex]` -generics_typevartuple_callable.py:42:1: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[str]` -generics_typevartuple_callable.py:50:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int | float | complex, str, int | float]` +generics_typevartuple_callable.py:26:9: error[invalid-argument-type] Argument to `Process.__init__` is incorrect: Expected `(int | Literal[""], str | Literal[0], /) -> None`, found `def func1(arg1: int, arg2: str) -> None` +generics_typevartuple_callable.py:50:5: error[type-assertion-failure] Type `tuple[Unknown, *tuple[Unknown, ...]]` does not match asserted type `tuple[int | float | complex, str, int | float]` """ diff --git a/conformance/results/ty/generics_typevartuple_concat.toml b/conformance/results/ty/generics_typevartuple_concat.toml index e0244328..cdd4d0cd 100644 --- a/conformance/results/ty/generics_typevartuple_concat.toml +++ b/conformance/results/ty/generics_typevartuple_concat.toml @@ -1,8 +1,5 @@ -conformance_automated = "Fail" -conformant = "Unsupported" +conformance_automated = "Pass" errors_diff = """ -Line 53: Unexpected errors ['generics_typevartuple_concat.py:53:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int, bool, str]`'] """ output = """ -generics_typevartuple_concat.py:53:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int, bool, str]` """ diff --git a/conformance/results/ty/generics_typevartuple_specialization.toml b/conformance/results/ty/generics_typevartuple_specialization.toml index edae9026..4da80c27 100644 --- a/conformance/results/ty/generics_typevartuple_specialization.toml +++ b/conformance/results/ty/generics_typevartuple_specialization.toml @@ -1,42 +1,11 @@ -conformance_automated = "Fail" -conformant = "Unsupported" +conformance_automated = "Pass" errors_diff = """ -Line 109: Expected 1 errors -Line 110: Expected 1 errors -Line 127: Expected 1 errors -Line 163: Expected 1 errors -Line 45: Unexpected errors ["generics_typevartuple_specialization.py:45:40: error[not-subscriptable] Cannot subscript non-generic type ``"] -Line 46: Unexpected errors ['generics_typevartuple_specialization.py:46:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int, int | float, bool]`'] -Line 47: Unexpected errors ['generics_typevartuple_specialization.py:47:5: error[type-assertion-failure] Type `Unknown` does not match asserted type `tuple[str, @Todo]`'] -Line 51: Unexpected errors ['generics_typevartuple_specialization.py:51:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int]`'] -Line 93: Unexpected errors ['generics_typevartuple_specialization.py:93:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[str, int]`'] -Line 94: Unexpected errors ['generics_typevartuple_specialization.py:94:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int | float]`'] -Line 95: Unexpected errors ['generics_typevartuple_specialization.py:95:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[Any, *tuple[Any, ...]]`'] -Line 135: Unexpected errors ['generics_typevartuple_specialization.py:135:5: error[type-assertion-failure] Type `tuple[tuple[@Todo(TypeVarTuple), ...], Unknown, Unknown]` does not match asserted type `tuple[tuple[()], str, bool]`'] -Line 136: Unexpected errors ['generics_typevartuple_specialization.py:136:5: error[type-assertion-failure] Type `tuple[tuple[@Todo(TypeVarTuple), ...], Unknown, Unknown]` does not match asserted type `tuple[tuple[str], bool, int | float]`'] -Line 137: Unexpected errors ['generics_typevartuple_specialization.py:137:5: error[type-assertion-failure] Type `tuple[tuple[@Todo(TypeVarTuple), ...], Unknown, Unknown]` does not match asserted type `tuple[tuple[str, bool], int | float, int]`'] -Line 148: Unexpected errors ['generics_typevartuple_specialization.py:148:5: error[type-assertion-failure] Type `tuple[tuple[@Todo(TypeVarTuple), ...], Unknown, Unknown, Unknown]` does not match asserted type `tuple[tuple[()], str, bool, int | float]`'] -Line 149: Unexpected errors ['generics_typevartuple_specialization.py:149:5: error[type-assertion-failure] Type `tuple[tuple[@Todo(TypeVarTuple), ...], Unknown, Unknown, Unknown]` does not match asserted type `tuple[tuple[bool], str, int | float, int]`'] -Line 157: Unexpected errors ['generics_typevartuple_specialization.py:157:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[*tuple[int, ...], int]`'] -Line 158: Unexpected errors ['generics_typevartuple_specialization.py:158:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[*tuple[int, ...], str]`'] -Line 159: Unexpected errors ['generics_typevartuple_specialization.py:159:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[*tuple[int, ...], str]`'] """ output = """ -generics_typevartuple_specialization.py:45:40: error[not-subscriptable] Cannot subscript non-generic type `` -generics_typevartuple_specialization.py:46:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int, int | float, bool]` -generics_typevartuple_specialization.py:47:5: error[type-assertion-failure] Type `Unknown` does not match asserted type `tuple[str, @Todo]` -generics_typevartuple_specialization.py:51:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int]` -generics_typevartuple_specialization.py:93:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[str, int]` -generics_typevartuple_specialization.py:94:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[int | float]` -generics_typevartuple_specialization.py:95:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[Any, *tuple[Any, ...]]` +generics_typevartuple_specialization.py:109:17: error[invalid-type-form] `*` can only unpack a tuple type or `TypeVarTuple` +generics_typevartuple_specialization.py:110:17: error[invalid-type-form] `Unpack` can only be used with a fixed tuple type in this context generics_typevartuple_specialization.py:121:7: error[invalid-type-form] Multiple unpacked variadic tuples are not allowed in a `tuple` specialization generics_typevartuple_specialization.py:122:7: error[invalid-type-form] Multiple unpacked variadic tuples are not allowed in a `tuple` specialization -generics_typevartuple_specialization.py:135:5: error[type-assertion-failure] Type `tuple[tuple[@Todo(TypeVarTuple), ...], Unknown, Unknown]` does not match asserted type `tuple[tuple[()], str, bool]` -generics_typevartuple_specialization.py:136:5: error[type-assertion-failure] Type `tuple[tuple[@Todo(TypeVarTuple), ...], Unknown, Unknown]` does not match asserted type `tuple[tuple[str], bool, int | float]` -generics_typevartuple_specialization.py:137:5: error[type-assertion-failure] Type `tuple[tuple[@Todo(TypeVarTuple), ...], Unknown, Unknown]` does not match asserted type `tuple[tuple[str, bool], int | float, int]` -generics_typevartuple_specialization.py:148:5: error[type-assertion-failure] Type `tuple[tuple[@Todo(TypeVarTuple), ...], Unknown, Unknown, Unknown]` does not match asserted type `tuple[tuple[()], str, bool, int | float]` -generics_typevartuple_specialization.py:149:5: error[type-assertion-failure] Type `tuple[tuple[@Todo(TypeVarTuple), ...], Unknown, Unknown, Unknown]` does not match asserted type `tuple[tuple[bool], str, int | float, int]` -generics_typevartuple_specialization.py:157:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[*tuple[int, ...], int]` -generics_typevartuple_specialization.py:158:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[*tuple[int, ...], str]` -generics_typevartuple_specialization.py:159:5: error[type-assertion-failure] Type `tuple[@Todo(TypeVarTuple), ...]` does not match asserted type `tuple[*tuple[int, ...], str]` +generics_typevartuple_specialization.py:127:5: error[invalid-type-arguments] No type arguments provided for required type variables `T1`, `T2` +generics_typevartuple_specialization.py:163:13: error[invalid-type-form] A TypeVarTuple cannot be split to provide a fixed type argument """ diff --git a/conformance/results/ty/generics_typevartuple_unpack.toml b/conformance/results/ty/generics_typevartuple_unpack.toml index d22971b5..d0ac4414 100644 --- a/conformance/results/ty/generics_typevartuple_unpack.toml +++ b/conformance/results/ty/generics_typevartuple_unpack.toml @@ -1,7 +1,6 @@ -conformance_automated = "Fail" -conformant = "Unsupported" +conformance_automated = "Pass" errors_diff = """ -Line 30: Expected 1 errors """ output = """ +generics_typevartuple_unpack.py:30:28: error[invalid-argument-type] Argument to function `process_batch_channels` is incorrect: Expected `Array[*tuple[Batch, *tuple[Any, ...], Channels]]`, found `Array[Batch]` """ diff --git a/conformance/results/ty/literals_interactions.toml b/conformance/results/ty/literals_interactions.toml index a5f280b0..080adb00 100644 --- a/conformance/results/ty/literals_interactions.toml +++ b/conformance/results/ty/literals_interactions.toml @@ -1,7 +1,4 @@ conformance_automated = "Pass" -notes = """ -Deliberately does not allow `str` to be narrowed to literal string types through equality or containment checks due to the possibility of `str` subclasses that could have unexpected equality semantics. -""" errors_diff = """ """ output = """ @@ -9,8 +6,4 @@ literals_interactions.py:14:5: error[index-out-of-bounds] Index 5 is out of boun literals_interactions.py:15:5: error[index-out-of-bounds] Index -5 is out of bounds for tuple `tuple[int, str, list[bool]]` with length 3 literals_interactions.py:16:5: error[index-out-of-bounds] Index 4 is out of bounds for tuple `tuple[int, str, list[bool]]` with length 3 literals_interactions.py:17:5: error[index-out-of-bounds] Index -4 is out of bounds for tuple `tuple[int, str, list[bool]]` with length 3 -literals_interactions.py:128:28: error[invalid-argument-type] Argument to function `expects_bad_status` is incorrect: Expected `Literal["MALFORMED", "ABORTED"]`, found `str` -literals_interactions.py:130:28: error[invalid-argument-type] Argument to function `expects_bad_status` is incorrect: Expected `Literal["MALFORMED", "ABORTED"]`, found `str & ~Literal["MALFORMED"]` -literals_interactions.py:133:28: error[invalid-argument-type] Argument to function `expects_bad_status` is incorrect: Expected `Literal["MALFORMED", "ABORTED"]`, found `str` -literals_interactions.py:136:32: error[invalid-argument-type] Argument to function `expects_pending_status` is incorrect: Expected `Literal["PENDING"]`, found `str` """ diff --git a/conformance/results/ty/literals_literalstring.toml b/conformance/results/ty/literals_literalstring.toml index 58e4d871..d4fa5392 100644 --- a/conformance/results/ty/literals_literalstring.toml +++ b/conformance/results/ty/literals_literalstring.toml @@ -11,6 +11,5 @@ literals_literalstring.py:74:25: error[invalid-assignment] Object of type `Liter literals_literalstring.py:119:22: error[invalid-argument-type] Argument to function `literal_identity` is incorrect: Argument type `str` does not satisfy upper bound `LiteralString` of type variable `TLiteral` literals_literalstring.py:133:41: error[invalid-assignment] Object of type `Container[T@Container]` is not assignable to `Container[LiteralString]` literals_literalstring.py:133:51: error[invalid-argument-type] Argument to `Container.__init__` is incorrect: Argument type `str` does not satisfy upper bound `LiteralString` of type variable `T` -literals_literalstring.py:133:51: error[invalid-argument-type] Argument to `Container.__init__` is incorrect: Expected `LiteralString`, found `str` literals_literalstring.py:171:21: error[invalid-assignment] Object of type `list[LiteralString]` is not assignable to `list[str]` """ diff --git a/conformance/results/ty/protocols_class_objects.toml b/conformance/results/ty/protocols_class_objects.toml index fcc3ec8a..f1a4d3d1 100644 --- a/conformance/results/ty/protocols_class_objects.toml +++ b/conformance/results/ty/protocols_class_objects.toml @@ -1,22 +1,19 @@ conformance_automated = "Fail" -conformant = "Unsupported" +conformant = "Partial" notes = """ `type[Proto]` is not yet supported. -`ClassVar` protocol members are not yet supported. -`@property` protocol members are only partially supported. -A class object `C` is only considered to inhabit a protocol type with a method member `f` if `f` exists as an attribute on the metaclass of `C`. +Class objects are not correctly matched against `@property` protocol members. +`ClassVar` protocol members are only partially supported. """ errors_diff = """ Line 29: Expected 1 errors Line 34: Expected 1 errors Line 74: Expected 1 errors -Line 104: Expected 1 errors -Line 106: Expected 1 errors Line 107: Expected 1 errors Line 108: Expected 1 errors -Line 59: Unexpected errors ["protocols_class_objects.py:59:16: error[invalid-assignment] Object of type `` is not assignable to `ProtoA2`"] """ output = """ protocols_class_objects.py:58:16: error[invalid-assignment] Object of type `` is not assignable to `ProtoA1` -protocols_class_objects.py:59:16: error[invalid-assignment] Object of type `` is not assignable to `ProtoA2` +protocols_class_objects.py:104:16: error[invalid-assignment] Object of type `` is not assignable to `ProtoC1` +protocols_class_objects.py:106:16: error[invalid-assignment] Object of type `` is not assignable to `ProtoC1` """ diff --git a/conformance/results/ty/protocols_definition.toml b/conformance/results/ty/protocols_definition.toml index 5f8ae7f3..e4945562 100644 --- a/conformance/results/ty/protocols_definition.toml +++ b/conformance/results/ty/protocols_definition.toml @@ -1,33 +1,32 @@ conformance_automated = "Fail" conformant = "Partial" notes = """ -Does not reject implicit instance attributes in `Protocol` methods. -Does not support `ClassVar` protocol members. -Incorrectly considers `ClassVar` attributes on concrete classes as satisfying non-`ClassVar` attribute members on protocols. -Only has partial support for `@property` protocol members. +Reports an implicit instance attribute in a `Protocol` method only as a warning. +Incorrectly considers an instance attribute on a concrete class as satisfying a `ClassVar` protocol member. """ errors_diff = """ Line 67: Expected 1 errors Line 117: Expected 1 errors -Line 157: Expected 1 errors -Line 158: Expected 1 errors -Line 218: Expected 1 errors -Line 339: Expected 1 errors -Line 340: Expected 1 errors -Line 341: Expected 1 errors """ output = """ protocols_definition.py:30:11: error[invalid-argument-type] Argument to function `close_all` is incorrect: Expected `Iterable[SupportsClose]`, found `list[int]` +protocols_definition.py:67:9: warning[ambiguous-protocol-member] Cannot assign to an undeclared attribute in a protocol method: `temp` is not declared as a protocol member protocols_definition.py:114:22: error[invalid-assignment] Object of type `Concrete2_Bad1` is not assignable to `Template2` protocols_definition.py:115:22: error[invalid-assignment] Object of type `Concrete2_Bad2` is not assignable to `Template2` protocols_definition.py:116:22: error[invalid-assignment] Object of type `Concrete2_Bad3` is not assignable to `Template2` protocols_definition.py:156:22: error[invalid-assignment] Object of type `Concrete3_Bad1` is not assignable to `Template3` +protocols_definition.py:157:22: error[invalid-assignment] Object of type `Concrete3_Bad2` is not assignable to `Template3` +protocols_definition.py:158:22: error[invalid-assignment] Object of type `Concrete3_Bad3` is not assignable to `Template3` protocols_definition.py:159:22: error[invalid-assignment] Object of type `Concrete3_Bad4` is not assignable to `Template3` protocols_definition.py:160:22: error[invalid-assignment] Object of type `Concrete3_Bad5` is not assignable to `Template3` +protocols_definition.py:218:22: error[invalid-assignment] Object of type `Concrete4_Bad1` is not assignable to `Template4` protocols_definition.py:219:22: error[invalid-assignment] Object of type `Concrete4_Bad2` is not assignable to `Template4` protocols_definition.py:285:22: error[invalid-assignment] Object of type `Concrete5_Bad1` is not assignable to `Template5` protocols_definition.py:286:22: error[invalid-assignment] Object of type `Concrete5_Bad2` is not assignable to `Template5` protocols_definition.py:287:22: error[invalid-assignment] Object of type `Concrete5_Bad3` is not assignable to `Template5` protocols_definition.py:288:22: error[invalid-assignment] Object of type `Concrete5_Bad4` is not assignable to `Template5` protocols_definition.py:289:22: error[invalid-assignment] Object of type `Concrete5_Bad5` is not assignable to `Template5` +protocols_definition.py:339:22: error[invalid-assignment] Object of type `Concrete6_Bad1` is not assignable to `Template6` +protocols_definition.py:340:22: error[invalid-assignment] Object of type `Concrete6_Bad2` is not assignable to `Template6` +protocols_definition.py:341:22: error[invalid-assignment] Object of type `Concrete6_Bad3` is not assignable to `Template6` """ diff --git a/conformance/results/ty/protocols_generic.toml b/conformance/results/ty/protocols_generic.toml index 96e3dbdc..f532306e 100644 --- a/conformance/results/ty/protocols_generic.toml +++ b/conformance/results/ty/protocols_generic.toml @@ -4,9 +4,7 @@ notes = """ Only partially supports `@property` protocol members. """ errors_diff = """ -Line 145: Expected 1 errors -Line 146: Expected 1 errors -Line 147: Expected 1 errors +Line 144: Unexpected errors ['protocols_generic.py:144:25: error[invalid-assignment] Object of type `ConcreteHasProperty1` is not assignable to `HasPropertyProto`'] """ output = """ protocols_generic.py:40:24: error[invalid-assignment] Object of type `Concrete1` is not assignable to `Proto1[int, str]` @@ -15,4 +13,8 @@ protocols_generic.py:56:20: error[invalid-assignment] Object of type `Box[int | protocols_generic.py:66:25: error[invalid-assignment] Object of type `Sender[int]` is not assignable to `Sender[int | float]` protocols_generic.py:74:28: error[invalid-assignment] Object of type `AttrProto[int]` is not assignable to `AttrProto[int | float]` protocols_generic.py:75:26: error[invalid-assignment] Object of type `AttrProto[int | float]` is not assignable to `AttrProto[int]` +protocols_generic.py:144:25: error[invalid-assignment] Object of type `ConcreteHasProperty1` is not assignable to `HasPropertyProto` +protocols_generic.py:145:25: error[invalid-assignment] Object of type `ConcreteHasProperty2` is not assignable to `HasPropertyProto` +protocols_generic.py:146:25: error[invalid-assignment] Object of type `ConcreteHasProperty3` is not assignable to `HasPropertyProto` +protocols_generic.py:147:25: error[invalid-assignment] Object of type `ConcreteHasProperty4` is not assignable to `HasPropertyProto` """ diff --git a/conformance/results/ty/protocols_modules.toml b/conformance/results/ty/protocols_modules.toml index 86ede360..1b0a41e4 100644 --- a/conformance/results/ty/protocols_modules.toml +++ b/conformance/results/ty/protocols_modules.toml @@ -1,14 +1,8 @@ -conformance_automated = "Fail" -conformant = "Partial" -notes = """ -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. -""" +conformance_automated = "Pass" errors_diff = """ -Line 47: Unexpected errors ["protocols_modules.py:47:18: error[invalid-assignment] Object of type `` is not assignable to `Reporter1`"] """ output = """ protocols_modules.py:26:17: error[invalid-assignment] Object of type `` is not assignable to `Options2` -protocols_modules.py:47:18: error[invalid-assignment] Object of type `` is not assignable to `Reporter1` protocols_modules.py:48:18: error[invalid-assignment] Object of type `` is not assignable to `Reporter2` protocols_modules.py:49:18: error[invalid-assignment] Object of type `` is not assignable to `Reporter3` """ diff --git a/conformance/results/ty/tuples_type_compat.toml b/conformance/results/ty/tuples_type_compat.toml index ad7d9370..2d6b0793 100644 --- a/conformance/results/ty/tuples_type_compat.toml +++ b/conformance/results/ty/tuples_type_compat.toml @@ -11,11 +11,11 @@ tuples_type_compat.py:62:26: error[invalid-assignment] Object of type `tuple[int tuples_type_compat.py:76:9: error[type-assertion-failure] Type `tuple[int]` does not match asserted type `tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]` tuples_type_compat.py:81:9: error[type-assertion-failure] Type `tuple[str, str] | tuple[int, int]` does not match asserted type `tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]` tuples_type_compat.py:86:9: error[type-assertion-failure] Type `tuple[int, str, int]` does not match asserted type `tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]` -tuples_type_compat.py:101:13: error[type-assertion-failure] Type `tuple[int] | (tuple[int, *tuple[str, ...], int] & )` does not match asserted type `tuple[int]` -tuples_type_compat.py:106:13: error[type-assertion-failure] Type `tuple[str, str] | (tuple[int, *tuple[str, ...], int] & & ~)` does not match asserted type `tuple[str, str] | tuple[int, int]` -tuples_type_compat.py:111:13: error[type-assertion-failure] Type `tuple[int, *tuple[str, ...], int] & & ~ & ~` does not match asserted type `tuple[int, str, int]` -tuples_type_compat.py:126:13: error[type-assertion-failure] Type `tuple[int | str, int | str] & ` does not match asserted type `tuple[int | str, str]` -tuples_type_compat.py:129:13: error[type-assertion-failure] Type `tuple[int | str, int | str] & ~` does not match asserted type `tuple[int | str, int]` +tuples_type_compat.py:102:13: error[type-assertion-failure] Type `tuple[int]` does not match asserted type `tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]` +tuples_type_compat.py:107:13: error[type-assertion-failure] Type `tuple[str, str] | tuple[int, int]` does not match asserted type `tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]` +tuples_type_compat.py:112:13: error[type-assertion-failure] Type `tuple[int, str, int]` does not match asserted type `tuple[int] | tuple[str, str] | tuple[int, *tuple[str, ...], int]` +tuples_type_compat.py:127:13: error[type-assertion-failure] Type `tuple[int | str, str]` does not match asserted type `tuple[int | str, int | str]` +tuples_type_compat.py:130:13: error[type-assertion-failure] Type `tuple[int | str, int]` does not match asserted type `tuple[int | str, int | str]` tuples_type_compat.py:157:6: error[invalid-assignment] Object of type `tuple[Literal[1], Literal[""], Literal[""]]` is not assignable to `tuple[int, str]` tuples_type_compat.py:162:6: error[invalid-assignment] Object of type `tuple[Literal[1], Literal[1], Literal[""]]` is not assignable to `tuple[int, *tuple[str, ...]]` tuples_type_compat.py:163:6: error[invalid-assignment] Object of type `tuple[Literal[1], Literal[""], Literal[1]]` is not assignable to `tuple[int, *tuple[str, ...]]` diff --git a/conformance/results/ty/version.toml b/conformance/results/ty/version.toml index 5e4b1bfc..aadb7ee8 100644 --- a/conformance/results/ty/version.toml +++ b/conformance/results/ty/version.toml @@ -1 +1 @@ -version = "ty 0.0.50" +version = "ty 0.0.65" diff --git a/conformance/uv.lock b/conformance/uv.lock index 81f9b413..4f1e8d2c 100644 --- a/conformance/uv.lock +++ b/conformance/uv.lock @@ -214,27 +214,27 @@ wheels = [ [[package]] name = "ty" -version = "0.0.50" +version = "0.0.65" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ea/fa/930ab48010e89fd1ecccc8f588afc9a79d540a1e8a379cf9cb3a41812254/ty-0.0.50.tar.gz", hash = "sha256:74b8c0df3e7d3294110e9862b7f8a3767f0e073dcb6ffa27f69fd63fd876149c", size = 5935862, upload-time = "2026-06-17T21:36:42.04Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cf561927e8e9ab5c1892a833b664aa9cd6f051a75f6280c66d8047246bda/ty-0.0.65.tar.gz", hash = "sha256:b7134bffcc00b715fa8291e84d845782ced810a998dc1f7f11d71c85c4046325", size = 6460098, upload-time = "2026-07-29T18:31:03.27Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/81/2161de593e722ba27d04ee394d974604e8041c2246e2f75012d612c9934a/ty-0.0.50-py3-none-linux_armv6l.whl", hash = "sha256:b04a7717c22b9c66e9161e5af608669194cdd099c5ba0c507aeb479e6c1f9176", size = 11917031, upload-time = "2026-06-17T21:37:20.615Z" }, - { url = "https://files.pythonhosted.org/packages/05/95/70c0f1915c91c9ed68b89a8f16741d73ad65628e334e1ae5691972003702/ty-0.0.50-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:cd8204f3a8df8fe68581e0b978124a90a143f35e3e7a7725a6e247b5ce1dcb33", size = 11675310, upload-time = "2026-06-17T21:36:51.627Z" }, - { url = "https://files.pythonhosted.org/packages/c7/6c/d0318ed6f52a6b184f6480137f5d1d3d6032fa81e4bd7eff495ccf4d2977/ty-0.0.50-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d336bbad38a68f16f16f84bb18f67215049b33196050c8ff67503e79619e70d2", size = 11060709, upload-time = "2026-06-17T21:36:47.226Z" }, - { url = "https://files.pythonhosted.org/packages/13/13/aff2242a51d66e4b99b71bb24081cf274b58db2909f82041ebd1f4bb2e35/ty-0.0.50-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3933810d0360a108c60cd3ea56e6c2eba2f5ecf7ee99d66ff30775d2ae9ed29", size = 11577192, upload-time = "2026-06-17T21:37:13.953Z" }, - { url = "https://files.pythonhosted.org/packages/1a/c0/46ceb4dd1f6a8a89027e5af6bc7171301e545e7d179403c06e4067c24dee/ty-0.0.50-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:88eed477756c7a0280a38de60bcabc64b3c6dcea1ac8b2a41c9210896358f6b9", size = 11693109, upload-time = "2026-06-17T21:37:09.589Z" }, - { url = "https://files.pythonhosted.org/packages/5e/9c/347e3d9959cd39641a54fc74dd4c152863f55c9079b9e16e9b4c35dd5775/ty-0.0.50-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:caa5d1c76f75cb6d3105ec8bf835c0a8fbc0950ccf15e3d1e9c52cb99b0ab2f5", size = 12190755, upload-time = "2026-06-17T21:36:49.193Z" }, - { url = "https://files.pythonhosted.org/packages/85/ca/d8226604f57a8f1ead1973b01f2f8c987a60d0fc09f726cbc9a7ef074dad/ty-0.0.50-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d323f2a663e260923c11434655e95f37e04865b1e1641288a23cbcbca53074ee", size = 12761345, upload-time = "2026-06-17T21:36:55.81Z" }, - { url = "https://files.pythonhosted.org/packages/c4/23/0adcbd4676b30f6b58741ce2c1218c73988fdc8fb8c276005df2fe1817a3/ty-0.0.50-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d61cf42b8517e774354466252b085d83cdd0b51d771a63f99a4f21d5a44afc52", size = 12387850, upload-time = "2026-06-17T21:36:53.611Z" }, - { url = "https://files.pythonhosted.org/packages/c1/43/254fd544e95ec6f2368aab9cc9f7ffdf1329ad95d2c9f62dea22f986bee2/ty-0.0.50-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbcd0ee844fd551bd946bb9d4fd2baf39a12aa0ad2f9f64db48352a82758abb3", size = 12220520, upload-time = "2026-06-17T21:37:00.127Z" }, - { url = "https://files.pythonhosted.org/packages/51/cd/711e649397e34d14f63d42586aebede0d4006a1a77c8c4c63bf4fb36bcbe/ty-0.0.50-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:8acf55714ec075997edfbf4dfd7ba3241c18c773e96f41398bb6d8008b83751a", size = 12439071, upload-time = "2026-06-17T21:36:57.921Z" }, - { url = "https://files.pythonhosted.org/packages/b5/48/743d3ff46307e904377ac264d6c365ef25fd6e36cbc12c10c73437fef3de/ty-0.0.50-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:8b1e02ff71af62d7a1d9b8bfef98847f5c8bfd5bb8ae6da691cea405eb5a5e98", size = 11532092, upload-time = "2026-06-17T21:37:04.892Z" }, - { url = "https://files.pythonhosted.org/packages/27/b5/5589976874b04a62de124f8f79fc11a45207d27f1c1fd2e7b7ddfa55aeea/ty-0.0.50-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7781ace006ab6b8bb9a7591dc20d1aaa79549d9d4e8169e5dc5cf8eef0754cd7", size = 11706451, upload-time = "2026-06-17T21:37:02.5Z" }, - { url = "https://files.pythonhosted.org/packages/6c/f4/e15ea290712e61528287a353cb3103b744a092ea0a59039f17a035960717/ty-0.0.50-py3-none-musllinux_1_2_i686.whl", hash = "sha256:e8015a10f4caf07edc9245f178e64ea388bddb9fb8d2d73d2dc1cfe6b9790493", size = 11842752, upload-time = "2026-06-17T21:37:18.12Z" }, - { url = "https://files.pythonhosted.org/packages/f5/35/323b949d29cf6be2a71638498a1c43e4a2b84a1c1d206228cf3415384604/ty-0.0.50-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:87289648401648f455823334f2a8c67bbc341d502033591c8b044e67537e661b", size = 12325834, upload-time = "2026-06-17T21:37:16.124Z" }, - { url = "https://files.pythonhosted.org/packages/cc/0a/5128b055493e41cb37f4f2a24a8ffce657e8c0d01086000c5f234d9b4622/ty-0.0.50-py3-none-win32.whl", hash = "sha256:ca73efc88be2942c1733e88b026f1cea88cafeca0ee63742dd673971d9a96642", size = 11171705, upload-time = "2026-06-17T21:36:45.191Z" }, - { url = "https://files.pythonhosted.org/packages/0b/65/91ffda139aa2b1d5c0fd321c859c5d10b7a912779d426422c4b25bca4362/ty-0.0.50-py3-none-win_amd64.whl", hash = "sha256:229d08c069beb2d896cc5556c3ba0e7f4c1b6d6a885297fabf2e6bcafa382a71", size = 12319493, upload-time = "2026-06-17T21:37:11.738Z" }, - { url = "https://files.pythonhosted.org/packages/8c/4c/0c1ca628c5da7840e16801caa0bfeed1241e1113d8a5156a34245d4fa927/ty-0.0.50-py3-none-win_arm64.whl", hash = "sha256:96a84d970b59f2eddb92a4af3ba9906f24bda118cf487d923765ccd4ca24627b", size = 11635811, upload-time = "2026-06-17T21:37:07.191Z" }, + { url = "https://files.pythonhosted.org/packages/7b/4e/71e2d325d2b53a1afad81624ad076b2ede413213fc4a18cb05b78c568571/ty-0.0.65-py3-none-linux_armv6l.whl", hash = "sha256:dc556c9f05408bef4c4ef02b2cc382e4e5f797b4b20d64410289848f0d76705f", size = 12298466, upload-time = "2026-07-29T18:30:12.744Z" }, + { url = "https://files.pythonhosted.org/packages/57/77/fec8f29647c55794efa430a7f365e44f5ce7ffb6459d9445a87fac569bec/ty-0.0.65-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:29d2e0d34cc0a28a17ef0cf81135c5ebabc3562131f9079138ba5e7bae0f56bd", size = 11942421, upload-time = "2026-07-29T18:30:16.076Z" }, + { url = "https://files.pythonhosted.org/packages/13/09/7f3766aef9dc627e2698cf4e3e59cf53389dcae3812040d33c1aa931230f/ty-0.0.65-py3-none-macosx_11_0_arm64.whl", hash = "sha256:685f49a9312bbf69d5b65bbb66384fed1f927403ea030c217b9289092d7e46c4", size = 11451922, upload-time = "2026-07-29T18:30:19.155Z" }, + { url = "https://files.pythonhosted.org/packages/cb/7b/1a77cd50e0befb50f55b8bf9bd3ed3eddf184bf28c61b56727039e0774fc/ty-0.0.65-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f564b5ebe78e2f3a8e7b8eacb1292eb88b7c0f3c8630671cfca31abc0709cd9", size = 11994999, upload-time = "2026-07-29T18:30:22.315Z" }, + { url = "https://files.pythonhosted.org/packages/63/7b/feda16f3a4a0a99be27431e0c9598eeeec0db1eb2fec9a15976698209418/ty-0.0.65-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c983e156fe9e113fb56389e13d327b6b8549fe866de9b269684723a88e9b732d", size = 12090662, upload-time = "2026-07-29T18:30:24.93Z" }, + { url = "https://files.pythonhosted.org/packages/ed/3e/3f69bf9c9307dbdc0771719f65ce5b556e7bdeeaccbdd599d4f57866d801/ty-0.0.65-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3663b7396e8b1a9954e20e732de7ccb0192bf4118473069b4945920d6923921", size = 12822094, upload-time = "2026-07-29T18:30:28.012Z" }, + { url = "https://files.pythonhosted.org/packages/90/38/8fa791b3bb503ee2b46ad81690cd1bdd54519582df6d805cee57fe143e85/ty-0.0.65-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:306ed01f29d6e108e98feb233dbbf5878a027603b71bd3743b343977933a9f16", size = 13357833, upload-time = "2026-07-29T18:30:31.122Z" }, + { url = "https://files.pythonhosted.org/packages/c1/73/4dda396a201e1dd0ed3594a9b48e559cb41c4bc048c6cd4c4d1b39eb4313/ty-0.0.65-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28bcfc8898c94f079a9100e684bcf312b6a64ad3a7d4ebb35a4591546030a2cd", size = 12977303, upload-time = "2026-07-29T18:30:33.944Z" }, + { url = "https://files.pythonhosted.org/packages/a5/26/c250c2c569adc53a8591716641388397bcb2a442e4a30b952ae81b50c0e0/ty-0.0.65-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a75bd0c245c38802a8f488378e74f92feb7dd33db7d63fbdd6fdf82791ba730", size = 12579338, upload-time = "2026-07-29T18:30:37.199Z" }, + { url = "https://files.pythonhosted.org/packages/d3/94/4a5647d44753ca218fc930d7e4d9bf468d0ed4a0ad4b3d57588bc1bbacf7/ty-0.0.65-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:9e5e1bdea9662d2b5312b4e99f319f4e6e2ea427511b5fbc546141b79ec53f76", size = 12957731, upload-time = "2026-07-29T18:30:39.937Z" }, + { url = "https://files.pythonhosted.org/packages/36/b6/1e22fa11a1e0dfb20b1c7f3cbfd8170273aada2a82f9ecd3055275370c44/ty-0.0.65-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:03a88493d4842889f65280ae241e06b399d57eb3c63571054cad21a4c33b3b69", size = 11938625, upload-time = "2026-07-29T18:30:42.603Z" }, + { url = "https://files.pythonhosted.org/packages/5c/0a/fe5f22ef62b193201bc5566762e22049762cd485bfafb5095a7050760054/ty-0.0.65-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:600b8bf6f4940cf7ffb2f43d3716faaf38dcb97cd8617c55771451bc0276408f", size = 12105592, upload-time = "2026-07-29T18:30:45.419Z" }, + { url = "https://files.pythonhosted.org/packages/76/fd/922b3a6e9d697452cdbb4b7e3f636868add5ec652154518a736e4364f3b7/ty-0.0.65-py3-none-musllinux_1_2_i686.whl", hash = "sha256:0c28007bc79d648c1ddaf1e65885d07baec48eb87240da442f608e4107c1b7d8", size = 12387335, upload-time = "2026-07-29T18:30:48.405Z" }, + { url = "https://files.pythonhosted.org/packages/77/22/a1a08ebc84c083db2fb55e3b5cd186db0c067692f4921146f601360231e2/ty-0.0.65-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:c852da96091ad22361e6586b7c7ba98e1334dcd4d8ffb67e47f4fb673de33f77", size = 12682710, upload-time = "2026-07-29T18:30:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/81/14/eaaa410a25bbdea19722109b5422380a0e211b3afcf3071d15953ddbd5db/ty-0.0.65-py3-none-win32.whl", hash = "sha256:cf529d538f1403b14b0511e6ec3cdb95d3d974adabf24cc76cedc533368c3edc", size = 11692341, upload-time = "2026-07-29T18:30:54.35Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0f/6d48f206dce9d7e53fe3b5ea0f0ab5800dd9d2365b2b48f736783436c43f/ty-0.0.65-py3-none-win_amd64.whl", hash = "sha256:234a321e33c7cbbfbd67bfa0b01b685dd9c21f1841781a21e5ca1fa0b25f1d5d", size = 12729355, upload-time = "2026-07-29T18:30:57.275Z" }, + { url = "https://files.pythonhosted.org/packages/96/aa/7446f7725e303cf78e058c893af1f0552b9451895454908706f4c6c3494b/ty-0.0.65-py3-none-win_arm64.whl", hash = "sha256:b9424be1ec56d93ff18609fb1c0a0a2283fe1282cd6d1c7604f97d73b94d61f2", size = 12051375, upload-time = "2026-07-29T18:31:00.579Z" }, ] [[package]]