Skip to content

Conversation

@charris
Copy link
Member

@charris charris commented Sep 22, 2025

Backport of #29706.

Follow-up of #29695, partially addressing python/mypy#15993 (comment)

This only leaves floating, timedelta64, and datetime64.

@charris charris added this to the 2.3.4 release milestone Sep 22, 2025
@charris charris added 08 - Backport Used to tag backport PRs 41 - Static typing labels Sep 22, 2025
@github-actions

This comment has been minimized.

@jorenham
Copy link
Member

jorenham commented Sep 22, 2025

This apparently needs #29629

@github-actions
Copy link

Diff from mypy_primer, showing the effect of this PR on type check results on a corpus of open source code:

jax (https://github.com/google/jax)
+ jax/_src/basearray.pyi:111: error: Unused "type: ignore" comment  [unused-ignore]
+ jax/_src/basearray.pyi:112: error: Unused "type: ignore" comment  [unused-ignore]
+ jax/_src/basearray.pyi:113: error: Unused "type: ignore" comment  [unused-ignore]
+ jax/_src/basearray.pyi:115: error: Unused "type: ignore" comment  [unused-ignore]
+ jax/_src/basearray.pyi:119: error: Unused "type: ignore" comment  [unused-ignore]

colour (https://github.com/colour-science/colour)
- colour/continuous/signal.py:838: error: No overload variant of "__call__" of "_ComparisonOpLE" matches argument type "Buffer"  [call-overload]
+ colour/continuous/signal.py:838: error: No overload variant of "__le__" of "number" matches argument type "Buffer"  [operator]
- colour/continuous/signal.py:838: note:     def __call__(self, complex | number[Any, int | float | complex] | numpy.bool[builtins.bool], /) -> numpy.bool[builtins.bool]
+ colour/continuous/signal.py:838: note:     def __le__(self, complex | number[Any, int | float | complex] | numpy.bool[builtins.bool], /) -> numpy.bool[builtins.bool]
- colour/continuous/signal.py:838: note:     def __call__(self, _SupportsArray[dtype[numpy.bool[builtins.bool] | number[Any, int | float | complex]]] | _NestedSequence[_SupportsArray[dtype[numpy.bool[builtins.bool] | number[Any, int | float | complex]]]] | complex | _NestedSequence[complex], /) -> ndarray[tuple[Any, ...], dtype[numpy.bool[builtins.bool]]]
+ colour/continuous/signal.py:838: note:     def __le__(self, _SupportsArray[dtype[numpy.bool[builtins.bool] | number[Any, int | float | complex]]] | _NestedSequence[_SupportsArray[dtype[numpy.bool[builtins.bool] | number[Any, int | float | complex]]]] | complex | _NestedSequence[complex] | _NestedSequence[_SupportsGE], /) -> ndarray[tuple[Any, ...], dtype[numpy.bool[builtins.bool]]]
- colour/continuous/signal.py:838: note:     def __call__(self, _NestedSequence[_SupportsGE], /) -> ndarray[tuple[Any, ...], dtype[numpy.bool[builtins.bool]]]
- colour/continuous/signal.py:838: note:     def __call__(self, _SupportsGE, /) -> numpy.bool[builtins.bool]
+ colour/continuous/signal.py:838: note:     def __le__(self, _SupportsGE, /) -> numpy.bool[builtins.bool]
- colour/continuous/signal.py:838: error: Argument 1 to "__call__" of "_ComparisonOpLE" has incompatible type "_NestedSequence[complex | bytes | str]"; expected "_SupportsArray[dtype[numpy.bool[builtins.bool] | number[Any, int | float | complex]]] | _NestedSequence[_SupportsArray[dtype[numpy.bool[builtins.bool] | number[Any, int | float | complex]]]] | complex | _NestedSequence[complex]"  [arg-type]
+ colour/continuous/signal.py:838: error: Unsupported operand types for <= ("floating[_16Bit]" and "_NestedSequence[complex | bytes | str]")  [operator]
+ colour/continuous/signal.py:838: error: Unsupported operand types for <= ("floating[_32Bit]" and "_NestedSequence[complex | bytes | str]")  [operator]
+ colour/continuous/signal.py:838: error: Unsupported operand types for <= ("float64" and "_NestedSequence[complex | bytes | str]")  [operator]
- colour/continuous/signal.py:838: error: No overload variant of "__call__" of "_ComparisonOpLE" matches argument type "slice[Any, Any, Any]"  [call-overload]
+ colour/continuous/signal.py:838: error: No overload variant of "__le__" of "number" matches argument type "slice[Any, Any, Any]"  [operator]
- colour/continuous/signal.py:839: error: No overload variant of "__call__" of "_ComparisonOpGE" matches argument type "Buffer"  [call-overload]
+ colour/continuous/signal.py:839: error: No overload variant of "__ge__" of "number" matches argument type "Buffer"  [operator]
- colour/continuous/signal.py:839: note:     def __call__(self, complex | number[Any, int | float | complex] | numpy.bool[builtins.bool], /) -> numpy.bool[builtins.bool]
+ colour/continuous/signal.py:839: note:     def __ge__(self, complex | number[Any, int | float | complex] | numpy.bool[builtins.bool], /) -> numpy.bool[builtins.bool]
- colour/continuous/signal.py:839: note:     def __call__(self, _SupportsArray[dtype[numpy.bool[builtins.bool] | number[Any, int | float | complex]]] | _NestedSequence[_SupportsArray[dtype[numpy.bool[builtins.bool] | number[Any, int | float | complex]]]] | complex | _NestedSequence[complex], /) -> ndarray[tuple[Any, ...], dtype[numpy.bool[builtins.bool]]]
+ colour/continuous/signal.py:839: note:     def __ge__(self, _SupportsArray[dtype[numpy.bool[builtins.bool] | number[Any, int | float | complex]]] | _NestedSequence[_SupportsArray[dtype[numpy.bool[builtins.bool] | number[Any, int | float | complex]]]] | complex | _NestedSequence[complex] | _NestedSequence[_SupportsLE], /) -> ndarray[tuple[Any, ...], dtype[numpy.bool[builtins.bool]]]
- colour/continuous/signal.py:839: note:     def __call__(self, _NestedSequence[_SupportsGT], /) -> ndarray[tuple[Any, ...], dtype[numpy.bool[builtins.bool]]]
- colour/continuous/signal.py:839: note:     def __call__(self, _SupportsGT, /) -> numpy.bool[builtins.bool]
+ colour/continuous/signal.py:839: note:     def __ge__(self, _SupportsLE, /) -> numpy.bool[builtins.bool]
- colour/continuous/signal.py:839: error: Argument 1 to "__call__" of "_ComparisonOpGE" has incompatible type "_NestedSequence[complex | bytes | str]"; expected "_SupportsArray[dtype[numpy.bool[builtins.bool] | number[Any, int | float | complex]]] | _NestedSequence[_SupportsArray[dtype[numpy.bool[builtins.bool] | number[Any, int | float | complex]]]] | complex | _NestedSequence[complex]"  [arg-type]
+ colour/continuous/signal.py:839: error: Unsupported operand types for >= ("floating[_16Bit]" and "_NestedSequence[complex | bytes | str]")  [operator]
+ colour/continuous/signal.py:839: error: Unsupported operand types for >= ("floating[_32Bit]" and "_NestedSequence[complex | bytes | str]")  [operator]
+ colour/continuous/signal.py:839: error: Unsupported operand types for >= ("float64" and "_NestedSequence[complex | bytes | str]")  [operator]
- colour/continuous/signal.py:839: error: No overload variant of "__call__" of "_ComparisonOpGE" matches argument type "slice[Any, Any, Any]"  [call-overload]
+ colour/continuous/signal.py:839: error: No overload variant of "__ge__" of "number" matches argument type "slice[Any, Any, Any]"  [operator]

freqtrade (https://github.com/freqtrade/freqtrade)
- freqtrade/data/converter/orderflow.py:175: error: Argument 1 to "__call__" of "_NumberOp" has incompatible type "str"; expected "complex | number[Any, int | float | complex] | numpy.bool[builtins.bool]"  [arg-type]
+ freqtrade/data/converter/orderflow.py:175: error: Unsupported operand types for - ("str" and "integer[Any]")  [operator]
- freqtrade/data/converter/orderflow.py:175: error: Argument 1 to "__call__" of "_NumberOp" has incompatible type "bytes"; expected "complex | number[Any, int | float | complex] | numpy.bool[builtins.bool]"  [arg-type]
+ freqtrade/data/converter/orderflow.py:175: error: Unsupported operand types for - ("bytes" and "integer[Any]")  [operator]
- freqtrade/data/converter/orderflow.py:175: error: Argument 1 to "__call__" of "_NumberOp" has incompatible type "date"; expected "complex | number[Any, int | float | complex] | numpy.bool[builtins.bool]"  [arg-type]
- freqtrade/data/converter/orderflow.py:175: error: Argument 1 to "__call__" of "_NumberOp" has incompatible type "datetime"; expected "complex | number[Any, int | float | complex] | numpy.bool[builtins.bool]"  [arg-type]
- freqtrade/data/converter/orderflow.py:175: error: Argument 1 to "__call__" of "_NumberOp" has incompatible type "timedelta"; expected "complex | number[Any, int | float | complex] | numpy.bool[builtins.bool]"  [arg-type]
- freqtrade/data/converter/orderflow.py:175: error: Argument 1 to "__call__" of "_NumberOp" has incompatible type "Timestamp"; expected "complex | number[Any, int | float | complex] | numpy.bool[builtins.bool]"  [arg-type]
- freqtrade/data/converter/orderflow.py:175: error: Argument 1 to "__call__" of "_NumberOp" has incompatible type "Timedelta"; expected "complex | number[Any, int | float | complex] | numpy.bool[builtins.bool]"  [arg-type]
+ freqtrade/data/converter/orderflow.py:175: error: Unsupported operand types for - ("integer[Any]" and "str")  [operator]
+ freqtrade/data/converter/orderflow.py:175: error: Unsupported operand types for - ("integer[Any]" and "bytes")  [operator]
+ freqtrade/data/converter/orderflow.py:175: error: Unsupported operand types for - ("integer[Any]" and "date")  [operator]
+ freqtrade/data/converter/orderflow.py:175: error: Unsupported operand types for - ("integer[Any]" and "datetime")  [operator]
+ freqtrade/data/converter/orderflow.py:175: error: Unsupported operand types for - ("integer[Any]" and "timedelta")  [operator]
+ freqtrade/data/converter/orderflow.py:175: error: Unsupported operand types for - ("integer[Any]" and "Timestamp")  [operator]
+ freqtrade/data/converter/orderflow.py:175: error: Unsupported operand types for - ("integer[Any]" and "Timedelta")  [operator]

pandas-stubs (https://github.com/pandas-dev/pandas-stubs)
+ pandas-stubs/_libs/tslibs/period.pyi:167: error: Unused "type: ignore" comment  [unused-ignore]

@jorenham
Copy link
Member

jorenham commented Sep 23, 2025

Primer diffs looks scarier than it is (see #29706 (comment) for details), so this should be good now

@charris charris merged commit adb8fc0 into numpy:maintenance/2.3.x Sep 23, 2025
76 checks passed
@charris charris deleted the backport-29706 branch September 23, 2025 11:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

08 - Backport Used to tag backport PRs 41 - Static typing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants