Handle overloaded method ambiguity caused by self-types - #22011
ilevkivskyi wants to merge 2 commits into
Conversation
|
Diff from mypy_primer, showing the effect of this PR on open source code: colour (https://github.com/colour-science/colour)
- colour/models/rgb/transfer_functions/log.py:240: error: Incompatible types in assignment (expression has type "ndarray[tuple[Any, ...], dtype[floating[_16Bit] | floating[_32Bit] | float64]]", variable has type "ndarray[tuple[Any, ...], dtype[float64]]") [assignment]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: error: No overload variant of "__mul__" of "floating" matches argument type "Buffer" [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: note: Possible overload variants:
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: note: def __mul__(self, int | floating[_16Bit] | unsignedinteger[_8Bit] | signedinteger[_8Bit] | numpy.bool[builtins.bool], /) -> floating[_16Bit]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: note: def __mul__(self, integer[Any] | floating[Any], /) -> floating[Any]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: note: def __mul__(self, float, /) -> floating[_16Bit]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: note: def __mul__(self, complex, /) -> complexfloating[Any, Any]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: error: No overload variant of "__mul__" of "floating" matches argument type "_SupportsArray[dtype[Any]]" [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: error: No overload variant of "__mul__" of "floating" matches argument type "_NestedSequence[_SupportsArray[dtype[Any]]]" [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: error: No overload variant of "__mul__" of "floating" matches argument type "str" [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: error: No overload variant of "__mul__" of "floating" matches argument type "_NestedSequence[complex | bytes | str]" [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: note: def __mul__(self, int | floating[_16Bit] | unsignedinteger[_8Bit] | signedinteger[_8Bit] | numpy.bool[builtins.bool] | floating[_32Bit], /) -> floating[_32Bit]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: note: def __mul__(self, float, /) -> floating[_32Bit]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: error: No overload variant of "__mul__" of "float64" matches argument type "Buffer" [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: note: def __mul__(self, float | floating[_64Bit] | floating[_32Bit] | floating[_16Bit] | integer[Any] | numpy.bool[builtins.bool], /) -> float64
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: note: def __mul__(self, complexfloating[_64Bit, _64Bit], /) -> complex128
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: note: def [NBitT: NBitBase] __mul__(self, complexfloating[NBitT, NBitT], /) -> complexfloating[NBitT | _64Bit, NBitT | _64Bit]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: note: def __mul__(self, complex, /) -> float64 | complex128
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: error: No overload variant of "__mul__" of "float64" matches argument type "_SupportsArray[dtype[Any]]" [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: error: No overload variant of "__mul__" of "float64" matches argument type "_NestedSequence[_SupportsArray[dtype[Any]]]" [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: error: No overload variant of "__mul__" of "float64" matches argument type "str" [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: error: No overload variant of "__mul__" of "float64" matches argument type "_NestedSequence[complex | bytes | str]" [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:375: note: Both left and right operands are unions
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:379: error: Unsupported operand types for / ("Buffer" and "float") [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:379: error: Unsupported operand types for / ("_SupportsArray[dtype[Any]]" and "float") [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:379: error: Unsupported operand types for / ("_NestedSequence[_SupportsArray[dtype[Any]]]" and "float") [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:379: error: Unsupported operand types for / ("str" and "float") [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:379: error: Unsupported operand types for / ("_NestedSequence[complex | bytes | str]" and "float") [operator]
+ colour/models/rgb/transfer_functions/rimm_romm_rgb.py:379: note: Left operand is of type "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str]"
+ colour/io/image.py:350: error: Incompatible return value type (got "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str]", expected "ndarray[tuple[Any, ...], dtype[signedinteger[_8Bit] | signedinteger[_16Bit] | signedinteger[_32Bit] | signedinteger[_64Bit] | unsignedinteger[_8Bit] | unsignedinteger[_16Bit] | unsignedinteger[_32Bit] | unsignedinteger[_64Bit] | floating[_16Bit] | floating[_32Bit] | float64]]") [return-value]
+ colour/appearance/llab.py:411: error: Argument "a" to "CAM_Specification_LLAB" has incompatible type "floating[_16Bit] | floating[_32Bit] | float64"; expected "float | ndarray[tuple[Any, ...], dtype[floating[_16Bit] | floating[_32Bit] | float64]] | None" [arg-type]
+ colour/appearance/llab.py:412: error: Argument "b" to "CAM_Specification_LLAB" has incompatible type "floating[_16Bit] | floating[_32Bit] | float64"; expected "float | ndarray[tuple[Any, ...], dtype[floating[_16Bit] | floating[_32Bit] | float64]] | None" [arg-type]
+ colour/appearance/atd95.py:305: error: Argument "A_1" to "CAM_Specification_ATD95" has incompatible type "floating[_16Bit] | floating[_32Bit] | float64"; expected "float | ndarray[tuple[Any, ...], dtype[floating[_16Bit] | floating[_32Bit] | float64]] | None" [arg-type]
+ colour/appearance/atd95.py:306: error: Argument "T_1" to "CAM_Specification_ATD95" has incompatible type "floating[_16Bit] | floating[_32Bit] | float64"; expected "float | ndarray[tuple[Any, ...], dtype[floating[_16Bit] | floating[_32Bit] | float64]] | None" [arg-type]
+ colour/appearance/atd95.py:307: error: Argument "D_1" to "CAM_Specification_ATD95" has incompatible type "floating[_16Bit] | floating[_32Bit] | float64"; expected "float | ndarray[tuple[Any, ...], dtype[floating[_16Bit] | floating[_32Bit] | float64]] | None" [arg-type]
+ colour/appearance/atd95.py:308: error: Argument "A_2" to "CAM_Specification_ATD95" has incompatible type "floating[_16Bit] | floating[_32Bit] | float64"; expected "float | ndarray[tuple[Any, ...], dtype[floating[_16Bit] | floating[_32Bit] | float64]] | None" [arg-type]
+ colour/appearance/atd95.py:309: error: Argument "T_2" to "CAM_Specification_ATD95" has incompatible type "floating[_16Bit] | floating[_32Bit] | float64"; expected "float | ndarray[tuple[Any, ...], dtype[floating[_16Bit] | floating[_32Bit] | float64]] | None" [arg-type]
+ colour/appearance/atd95.py:310: error: Argument "D_2" to "CAM_Specification_ATD95" has incompatible type "floating[_16Bit] | floating[_32Bit] | float64"; expected "float | ndarray[tuple[Any, ...], dtype[floating[_16Bit] | floating[_32Bit] | float64]] | None" [arg-type]
+ colour/models/rgb/transfer_functions/sony.py:128: error: Unsupported operand types for <= ("int" and "Buffer") [operator]
+ colour/models/rgb/transfer_functions/sony.py:128: error: Unsupported operand types for <= ("int" and "_SupportsArray[dtype[Any]]") [operator]
+ colour/models/rgb/transfer_functions/sony.py:128: error: Unsupported operand types for <= ("int" and "_NestedSequence[_SupportsArray[dtype[Any]]]") [operator]
+ colour/models/rgb/transfer_functions/sony.py:128: error: Unsupported operand types for <= ("int" and "complex") [operator]
+ colour/models/rgb/transfer_functions/sony.py:128: error: Unsupported operand types for <= ("int" and "_NestedSequence[complex | bytes | str]") [operator]
+ colour/models/rgb/transfer_functions/sony.py:128: note: Left operand is of type "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str]"
+ colour/models/rgb/transfer_functions/sony.py:128: error: Unsupported operand types for >= ("str" and "int") [operator]
+ colour/models/rgb/transfer_functions/sony.py:129: error: Unsupported operand types for + ("Buffer" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:129: error: Unsupported operand types for + ("_SupportsArray[dtype[Any]]" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:129: error: Unsupported operand types for + ("_NestedSequence[_SupportsArray[dtype[Any]]]" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:129: error: Unsupported operand types for + ("_NestedSequence[complex | bytes | str]" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:129: note: Left operand is of type "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str]"
+ colour/models/rgb/transfer_functions/sony.py:129: error: Unsupported operand types for + ("str" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:130: error: Unsupported operand types for * ("Buffer" and "int") [operator]
+ colour/models/rgb/transfer_functions/sony.py:130: error: Unsupported operand types for * ("_SupportsArray[dtype[Any]]" and "int") [operator]
+ colour/models/rgb/transfer_functions/sony.py:130: error: Unsupported operand types for * ("_NestedSequence[_SupportsArray[dtype[Any]]]" and "int") [operator]
+ colour/models/rgb/transfer_functions/sony.py:130: error: Unsupported operand types for * ("_NestedSequence[complex | bytes | str]" and "int") [operator]
+ colour/models/rgb/transfer_functions/sony.py:130: note: Left operand is of type "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str]"
+ colour/models/rgb/transfer_functions/sony.py:130: error: Unsupported operand types for + ("str" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:130: note: Left operand is of type "int | complex | str"
+ colour/models/rgb/transfer_functions/sony.py:407: error: Unsupported operand types for <= ("float" and "Buffer") [operator]
+ colour/models/rgb/transfer_functions/sony.py:407: error: Unsupported operand types for <= ("float" and "_SupportsArray[dtype[Any]]") [operator]
+ colour/models/rgb/transfer_functions/sony.py:407: error: Unsupported operand types for <= ("float" and "_NestedSequence[_SupportsArray[dtype[Any]]]") [operator]
+ colour/models/rgb/transfer_functions/sony.py:407: error: Unsupported operand types for <= ("float" and "complex") [operator]
+ colour/models/rgb/transfer_functions/sony.py:407: error: Unsupported operand types for <= ("float" and "_NestedSequence[complex | bytes | str]") [operator]
+ colour/models/rgb/transfer_functions/sony.py:407: note: Left operand is of type "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str]"
+ colour/models/rgb/transfer_functions/sony.py:407: error: Unsupported operand types for >= ("str" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:408: error: Unsupported operand types for + ("Buffer" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:408: error: Unsupported operand types for + ("_SupportsArray[dtype[Any]]" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:408: error: Unsupported operand types for + ("_NestedSequence[_SupportsArray[dtype[Any]]]" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:408: error: Unsupported operand types for + ("_NestedSequence[complex | bytes | str]" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:408: note: Left operand is of type "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str]"
+ colour/models/rgb/transfer_functions/sony.py:408: error: Unsupported operand types for + ("str" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:409: error: Unsupported operand types for * ("Buffer" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:409: error: Unsupported operand types for * ("_SupportsArray[dtype[Any]]" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:409: error: Unsupported operand types for * ("_NestedSequence[_SupportsArray[dtype[Any]]]" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:409: error: Unsupported operand types for * ("_NestedSequence[complex | bytes | str]" and "float") [operator]
+ colour/models/rgb/transfer_functions/sony.py:409: note: Left operand is of type "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str]"
+ colour/models/rgb/transfer_functions/sony.py:409: error: Unsupported operand types for * ("str" and "float") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for > ("float" and "Buffer") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for > ("float" and "_SupportsArray[dtype[Any]]") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for > ("float" and "_NestedSequence[_SupportsArray[dtype[Any]]]") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for > ("float" and "complex") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for > ("float" and "_NestedSequence[complex | bytes | str]") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: note: Left operand is of type "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | bytes | str | _NestedSequence[complex | bytes | str]"
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for < ("bytes" and "float") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for < ("str" and "float") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for * ("Buffer" and "float") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for * ("_SupportsArray[dtype[Any]]" and "float") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for * ("_NestedSequence[_SupportsArray[dtype[Any]]]" and "float") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for * ("_NestedSequence[complex | bytes | str]" and "float") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for * ("bytes" and "float") [operator]
+ colour/models/rgb/transfer_functions/red.py:540: error: Unsupported operand types for * ("str" and "float") [operator]
+ colour/models/rgb/transfer_functions/panasonic_v_log.py:137: error: Unsupported operand types for * ("float" and "Buffer") [operator]
+ colour/models/rgb/transfer_functions/panasonic_v_log.py:137: error: Unsupported operand types for * ("float" and "_SupportsArray[dtype[Any]]") [operator]
+ colour/models/rgb/transfer_functions/panasonic_v_log.py:137: error: Unsupported operand types for * ("float" and "_NestedSequence[_SupportsArray[dtype[Any]]]") [operator]
+ colour/models/rgb/transfer_functions/panasonic_v_log.py:137: error: Unsupported operand types for * ("float" and "str") [operator]
+ colour/models/rgb/transfer_functions/panasonic_v_log.py:137: error: Unsupported operand types for * ("float" and "_NestedSequence[complex | bytes | str]") [operator]
+ colour/models/rgb/transfer_functions/panasonic_v_log.py:137: note: Right operand is of type "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str]"
... (truncated 141 lines) ...
zulip (https://github.com/zulip/zulip)
- zerver/lib/attachments.py:182: error: "Message" has no attribute "recipient_id" [attr-defined]
- zerver/actions/user_groups.py:130: error: Argument 1 to "list" has incompatible type "QuerySet[UserProfile, dict[str, Any]]"; expected "Iterable[MemberGroupUserDict]" [arg-type]
- zerver/actions/user_groups.py:135: error: Argument 1 to "list" has incompatible type "QuerySet[UserProfile, dict[str, Any]]"; expected "Iterable[MemberGroupUserDict]" [arg-type]
- zerver/actions/user_groups.py:141: error: Argument 1 to "list" has incompatible type "QuerySet[UserProfile, dict[str, Any]]"; expected "Iterable[MemberGroupUserDict]" [arg-type]
- zerver/actions/user_groups.py:144: error: Argument 1 to "list" has incompatible type "QuerySet[UserProfile, dict[str, Any]]"; expected "Iterable[MemberGroupUserDict]" [arg-type]
scipy (https://github.com/scipy/scipy)
+ scipy/stats/_qmc.py:1067: error: Item "Buffer" of "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str] | Any" has no attribute "dtype" [union-attr]
+ scipy/stats/_qmc.py:1067: error: Item "_SupportsArray[dtype[Any]]" of "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str] | Any" has no attribute "dtype" [union-attr]
+ scipy/stats/_qmc.py:1067: error: Item "_NestedSequence[_SupportsArray[dtype[Any]]]" of "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str] | Any" has no attribute "dtype" [union-attr]
+ scipy/stats/_qmc.py:1067: error: Item "complex" of "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str] | Any" has no attribute "dtype" [union-attr]
+ scipy/stats/_qmc.py:1067: error: Item "str" of "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str] | Any" has no attribute "dtype" [union-attr]
+ scipy/stats/_qmc.py:1067: error: Item "_NestedSequence[complex | bytes | str]" of "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str] | Any" has no attribute "dtype" [union-attr]
pandas-stubs (https://github.com/pandas-dev/pandas-stubs)
+ tests/test_windowing.py:48: error: Returning Any from function declared to return "float" [no-any-return]
+ tests/test_resampler.py:39: error: Returning Any from function declared to return "float" [no-any-return]
+ tests/test_groupby.py:60: error: Returning Any from function declared to return "float" [no-any-return]
+ tests/series/test_truediv.py:149: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_truediv.py:152: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_truediv.py:155: error: Expression is of type "Any", not "Never" [assert-type]
+ tests/series/test_truediv.py:195: error: Expression is of type "Any", not "Never" [assert-type]
+ tests/series/test_truediv.py:205: error: Expression is of type "Any", not "Never" [assert-type]
+ tests/series/test_truediv.py:241: error: Expression is of type "Any", not "Never" [assert-type]
+ tests/series/test_truediv.py:261: error: Expression is of type "Any", not "Never" [assert-type]
+ tests/series/test_truediv.py:272: error: Expression is of type "Any", not "Never" [assert-type]
+ tests/series/test_sub.py:263: error: Expression is of type "Any", not "Series[Timedelta]" [assert-type]
+ tests/series/test_mul.py:80: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_mul.py:81: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_mul.py:82: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_mul.py:83: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_floordiv.py:64: error: Expression is of type "Series[Any]", not "Series[Timedelta]" [assert-type]
+ tests/series/test_floordiv.py:124: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_floordiv.py:125: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_floordiv.py:126: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_floordiv.py:135: error: Expression is of type "Any", not "Never" [assert-type]
+ tests/series/test_floordiv.py:171: error: Expression is of type "Any", not "Never" [assert-type]
+ tests/series/test_floordiv.py:180: error: Expression is of type "Series[Any]", not "Series[Timedelta]" [assert-type]
+ tests/series/test_floordiv.py:203: error: Expression is of type "Any", not "Never" [assert-type]
+ tests/series/test_floordiv.py:211: error: Expression is of type "Series[Any]", not "Series[Timedelta]" [assert-type]
+ tests/series/test_floordiv.py:221: error: Expression is of type "Any", not "Never" [assert-type]
+ tests/series/test_floordiv.py:230: error: Expression is of type "Series[Any]", not "Series[Timedelta]" [assert-type]
+ tests/series/test_floordiv.py:277: error: Expression is of type "Series[Any]", not "Series[Timedelta]" [assert-type]
+ tests/series/test_agg.py:20: error: Expression is of type "Any", not "float" [assert-type]
+ tests/series/test_agg.py:25: error: Expression is of type "Any", not "float" [assert-type]
+ tests/series/test_agg.py:30: error: Expression is of type "Any", not "float" [assert-type]
+ tests/series/test_agg.py:35: error: Expression is of type "Any", not "float" [assert-type]
+ tests/series/test_add.py:87: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_add.py:88: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_add.py:89: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_add.py:90: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/indexes/test_truediv.py:61: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_sub.py:27: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_sub.py:32: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_sub.py:42: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_sub.py:47: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_mul.py:60: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_mul.py:62: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_mul.py:63: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_floordiv.py:84: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_floordiv.py:85: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_floordiv.py:86: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_add.py:60: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_add.py:61: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_add.py:62: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/indexes/test_add.py:63: error: Expression is of type "Any", not "Index[Any]" [assert-type]
+ tests/test_timefuncs.py:1824: error: Expression is of type "Series[Any]", not "Series[Timestamp]" [assert-type]
+ tests/test_pandas.py:1702: error: Returning Any from function declared to return "float" [no-any-return]
+ tests/test_pandas.py:2017: error: Returning Any from function declared to return "float" [no-any-return]
+ tests/frame/test_groupby.py:640: error: Returning Any from function declared to return "float" [no-any-return]
+ tests/frame/test_frame.py:1148: error: Expression is of type "Any", not "ndarray[tuple[int], dtype[Any]]" [assert-type]
+ tests/series/test_series.py:682: error: Expression is of type "Any", not "floating[Any]" [assert-type]
+ tests/series/test_series.py:2168: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[int], dtype[Any]]" [assert-type]
+ tests/series/test_series.py:3598: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_series.py:3608: error: Expression is of type "Any", not "Series[Any]" [assert-type]
+ tests/series/test_series.py:3617: error: Expression is of type "Any", not "Series[Any]" [assert-type]
pandas (https://github.com/pandas-dev/pandas)
+ pandas/core/util/hashing.py:408: error: Unused "type: ignore" comment [unused-ignore]
+ pandas/io/formats/format.py:1606: error: Item "Sequence[float]" of "ndarray[tuple[Any, ...], dtype[Any]] | Sequence[float]" has no attribute "round" [union-attr]
+ pandas/io/formats/format.py:1617: error: Item "float" of "ndarray[tuple[Any, ...], dtype[Any]] | Any | float" has no attribute "round" [union-attr]
+ pandas/io/formats/format.py:1617: error: Invalid index type "ndarray[tuple[Any, ...], dtype[numpy.bool[builtins.bool]]] | Any" for "Sequence[float]"; expected type "int" [index]
+ pandas/io/formats/format.py:1619: error: Item "float" of "ndarray[tuple[Any, ...], dtype[Any]] | Any | float" has no attribute "round" [union-attr]
+ pandas/io/formats/format.py:1619: error: Invalid index type "ndarray[tuple[Any, ...], dtype[numpy.bool[builtins.bool]]] | Any" for "Sequence[float]"; expected type "int" [index]
xarray (https://github.com/pydata/xarray)
+ xarray/tests/test_typed_ops.py:28: error: Unused "type: ignore" comment [unused-ignore]
+ xarray/tests/test_typed_ops.py:79: error: Unused "type: ignore" comment [unused-ignore]
freqtrade (https://github.com/freqtrade/freqtrade)
- freqtrade/optimize/optimize_reports/optimize_reports.py:357: error: "float" has no attribute "round" [attr-defined]
- freqtrade/optimize/backtesting.py:1606: error: List comprehension has incompatible type List[list[Any]]; expected List[tuple[Any, ...]] [misc]
rclip (https://github.com/yurijmikhalevich/rclip)
+ rclip/utils/preprocess.py:44: error: Incompatible return value type (got "ndarray[tuple[Any, ...], dtype[float64]]", expected "ndarray[tuple[Any, ...], dtype[floating[_32Bit]]]") [return-value]
static-frame (https://github.com/static-frame/static-frame)
+ static_frame/core/rank.py:166: error: Unused "type: ignore" comment [unused-ignore]
scipy-stubs (https://github.com/scipy/scipy-stubs)
+ tests/spatial/test__rotation.pyi:115: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/spatial/test__rotation.pyi:121: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/spatial/test__rotation.pyi:127: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/spatial/test__rotation.pyi:133: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/spatial/test__rotation.pyi:139: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/spatial/test__rotation.pyi:151: error: Expression is of type "Any", not "float64 | ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/spatial/test__rotation.pyi:157: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/spatial/test__rigid_transform.pyi:56: error: Expression is of type "RigidTransform[Any]", not "RigidTransform[tuple[Any, ...]]" [assert-type]
+ tests/spatial/test__rigid_transform.pyi:141: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/spatial/test__rigid_transform.pyi:146: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/spatial/test__rigid_transform.pyi:151: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/spatial/test__rigid_transform.pyi:156: error: Expression is of type "tuple[Any, ...]", not "tuple[ndarray[tuple[Any, ...], dtype[float64]], Rotation[tuple[Any, ...]]]" [assert-type]
+ tests/spatial/test__rigid_transform.pyi:167: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/interpolate/test_interpolate.pyi:43: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[int], dtype[float64]]" [assert-type]
+ tests/interpolate/test_cubic.pyi:75: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[int], dtype[float64]]" [assert-type]
+ tests/stats/test_multivariate.pyi:248: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/stats/test_multivariate.pyi:252: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/stats/test_multivariate.pyi:273: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/stats/test_multivariate.pyi:277: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/stats/test_multivariate.pyi:530: error: Expression is of type "Any", not "float64 | ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/stats/test_multivariate.pyi:555: error: Expression is of type "Any", not "float64 | ndarray[tuple[Any, ...], dtype[float64]]" [assert-type]
+ tests/stats/test_multivariate.pyi:624: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[int, int, *tuple[Any, ...]], dtype[float64]]" [assert-type]
+ tests/sparse/test_csr.pyi:224: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[int], dtype[Any]]" [assert-type]
+ tests/sparse/test_csr.pyi:238: error: Expression is of type "ndarray[Any, Any]", not "ndarray[tuple[int], dtype[Any]]" [assert-type]
|
|
The fallout in What is more concerning, is all the test failure in Relevant line assert_type(_rot_nd.as_quat(), onp.ArrayND[np.float64])relevant definition @overload
def as_quat(
self: Rotation[_JustAnyShape], /, canonical: bool = False, *, scalar_first: bool = False
) -> onp.ArrayND[np.float64]: ...
@overload
def as_quat(
self: Rotation[tuple[()]], /, canonical: bool = False, *, scalar_first: bool = False
) -> onp.Array1D[np.float64]: ...
@overload
def as_quat(
self: Rotation[tuple[int]], /, canonical: bool = False, *, scalar_first: bool = False
) -> onp.Array2D[np.float64]: ...
@overload
def as_quat(self, /, canonical: bool = False, *, scalar_first: bool = False) -> onp.ArrayND[np.float64]: ...and _rot_nd: RotationSo @jorenham Could you please comment on which overload(s) you expect to match here and why? |
|
The first overload with You might also be interested in a recent similar discussion for Pyrefly: facebook/pyrefly#4910 (comment) |
|
@jorenham Specific fallback type may be more precise, this is true. Mypy already infers Anyway, my question is different: you mentioned that the bug I am fixing here (where bug == mypy randomly selecting first overload in case if |
Well, in the meantime I've worked around most of these cases where possible in NumPy's bundled stubs and in scipy-stubs (e.g. using the But it looks like this solution results in many The number of new primer errors for scipy-stubs isn't all too bad, so I can live with it. But the diff for Anyway, don't consider scipy-stubs a blocker for this. I've seen those |
|
@jorenham Now back to the main topic
Note |
Fixes #11347
Closes #17239
I think we should handle this consistently with overloaded functions, essentially
foo.meth(x)should behave the same asFoo.meth(foo, x). Although this is a relatively niche situation, it seems to be important for some numerical libraries.It looks like there are no simple way to implement this properly. The only way I see requires a new attribute on
Overloadedand a lot of plumbing (form binging site to the call site). I tried to apply various optimizations to reduce possible performance impact.cc @JukkaL @hauntsaninja