@@ -649,6 +649,7 @@ _ScalarT = TypeVar("_ScalarT", bound=generic)
649649_SelfScalarT = TypeVar ("_SelfScalarT" , bound = generic )
650650_ScalarT_co = TypeVar ("_ScalarT_co" , bound = generic , default = Any , covariant = True )
651651_IntegralScalarT = TypeVar ("_IntegralScalarT" , bound = bool_ | integer | object_ )
652+ _RealT = TypeVar ("_RealT" , bound = bool_ | integer | floating )
652653_RealScalarT = TypeVar ("_RealScalarT" , bound = bool_ | integer | floating | object_ )
653654_RealNumberT = TypeVar ("_RealNumberT" , bound = integer | floating )
654655_IntegerT = TypeVar ("_IntegerT" , bound = integer )
@@ -2541,169 +2542,137 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DTypeT_co]):
25412542 @overload
25422543 def __itruediv__ (self : NDArray [object_ ], x : object , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
25432544
2544- # TODO(jorenham): rewrite the modular and bitwise binops below
2545-
2546- # the pyright error appears to be a false positive
2547- @overload
2548- def __floordiv__ (self : NDArray [_RealNumberT ], rhs : int | bool_ , / ) -> _nt .Array [_RealNumberT , _ShapeT_co ]: ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
2549- @overload
2550- def __floordiv__ (self : NDArray [_RealNumberT ], rhs : _nt .ToBool_nd , / ) -> NDArray [_RealNumberT ]: ... # type: ignore[overload-overlap]
2551- @overload
2552- def __floordiv__ (self : NDArray [bool_ ], rhs : _ArrayLike [_RealNumberT ], / ) -> NDArray [_RealNumberT ]: ...
2553- @overload
2554- def __floordiv__ (self : NDArray [bool_ ], rhs : _nt .ToBool_nd , / ) -> NDArray [int8 ]: ...
2555- @overload
2556- def __floordiv__ (self : NDArray [float64 ], rhs : _nt .CoFloat64_nd , / ) -> NDArray [float64 ]: ...
2557- @overload
2558- def __floordiv__ (self : _ArrayFloat64_co , rhs : _nt .ToFloat64_nd , / ) -> NDArray [float64 ]: ...
2559- @overload
2560- def __floordiv__ (self : NDArray [unsignedinteger ], rhs : _nt .CoUInt64_nd , / ) -> NDArray [unsignedinteger ]: ...
2561- @overload
2562- def __floordiv__ (self : _ArrayUInt_co , rhs : _nt .ToUInteger_nd , / ) -> NDArray [unsignedinteger ]: ...
2563- @overload
2564- def __floordiv__ (self : NDArray [signedinteger ], rhs : _nt .CoInt64_nd , / ) -> NDArray [signedinteger ]: ...
2545+ #
25652546 @overload
2566- def __floordiv__ (self : _ArrayInt_co , rhs : _nt .ToSInteger_nd , / ) -> NDArray [signedinteger ]: ...
2547+ def __floordiv__ (self : NDArray [ bool_ ], x : _nt .ToBool_nd , / ) -> NDArray [int8 ]: ...
25672548 @overload
2568- def __floordiv__ (self : NDArray [floating ], rhs : _nt .CoFloating_nd , / ) -> NDArray [floating ]: ...
2549+ def __floordiv__ (self : NDArray [_RealNumberT ], x : _nt .Casts [ _RealNumberT ] , / ) -> NDArray [_RealNumberT ]: ...
25692550 @overload
2570- def __floordiv__ (self : NDArray [floating | integer ], rhs : _nt .ToFloating_nd , / ) -> NDArray [floating ]: ...
2551+ def __floordiv__ (
2552+ self : NDArray [_RealNumberT ], x : _nt .CastsWith [_RealNumberT , _RealScalarT ], /
2553+ ) -> NDArray [_RealScalarT ]: ...
25712554 @overload
2572- def __floordiv__ (self : _nt .CoFloating_nd , rhs : _nt .CoFloating_nd , / ) -> NDArray [Incomplete ]: ...
2555+ def __floordiv__ (self : _nt .CastsWithInt [ _RealScalarT ], x : _nt .SequenceND [ int ] , / ) -> NDArray [_RealScalarT ]: ...
25732556 @overload
2574- def __floordiv__ (self : NDArray [timedelta64 ], rhs : _ArrayLike [timedelta64 ], / ) -> NDArray [int64 ]: ...
2557+ def __floordiv__ (
2558+ self : _nt .CastsWithFloat [_RealScalarT ], x : _nt .SequenceND [_nt .JustFloat ], /
2559+ ) -> NDArray [_RealScalarT ]: ...
25752560 @overload
2576- def __floordiv__ (self : NDArray [timedelta64 ], rhs : _nt .ToBool_nd , / ) -> Never : ...
2561+ def __floordiv__ (self : NDArray [timedelta64 ], x : _nt .ToTimeDelta_nd , / ) -> NDArray [ int64 ] : ...
25772562 @overload
2578- def __floordiv__ (self : NDArray [timedelta64 ], rhs : _nt .CoFloating_nd , / ) -> NDArray [timedelta64 ]: ...
2563+ def __floordiv__ (
2564+ self : NDArray [timedelta64 ], x : _nt .ToInteger_nd | _nt .ToFloating_nd , /
2565+ ) -> NDArray [timedelta64 ]: ...
25792566 @overload
2580- def __floordiv__ (self : NDArray [object_ ], rhs : object , / ) -> NDArray [object_ ]: ...
2567+ def __floordiv__ (
2568+ self : NDArray [generic [_T ]], x : _nt .Sequence1ND [_nt .op .CanRFloordiv [_T ]], /
2569+ ) -> NDArray [Incomplete ]: ...
25812570 @overload
2582- def __floordiv__ (self , rhs : _ArrayLikeObject_co , / ) -> NDArray [object_ ]: ...
2571+ def __floordiv__ (self : NDArray [ object_ ], x : object , / ) -> NDArray [object_ ]: ...
25832572
25842573 #
25852574 @overload
2586- def __rfloordiv__ (self : NDArray [_RealNumberT ], lhs : int | bool_ , / ) -> _nt . Array [ _RealNumberT , _ShapeT_co ]: ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
2575+ def __rfloordiv__ (self : NDArray [bool_ ], x : _nt . ToBool_nd , / ) -> NDArray [ int8 ]: ...
25872576 @overload
2588- def __rfloordiv__ (self : NDArray [_RealNumberT ], lhs : _nt .ToBool_nd , / ) -> NDArray [_RealNumberT ]: ... # type: ignore[overload-overlap]
2577+ def __rfloordiv__ (self : NDArray [_RealNumberT ], x : _nt .Casts [ _RealNumberT ] , / ) -> NDArray [_RealNumberT ]: ...
25892578 @overload
2590- def __rfloordiv__ (self : NDArray [bool_ ], lhs : _ArrayLike [_RealNumberT ], / ) -> NDArray [_RealNumberT ]: ...
2579+ def __rfloordiv__ (
2580+ self : NDArray [_RealNumberT ], x : _nt .CastsWith [_RealNumberT , _RealScalarT ], /
2581+ ) -> NDArray [_RealScalarT ]: ...
25912582 @overload
2592- def __rfloordiv__ (self : NDArray [ bool_ ], lhs : _nt .ToBool_nd , / ) -> NDArray [int8 ]: ...
2583+ def __rfloordiv__ (self : _nt . CastsWithInt [ _RealScalarT ], x : _nt .SequenceND [ int ] , / ) -> NDArray [_RealScalarT ]: ...
25932584 @overload
2594- def __rfloordiv__ (self : NDArray [float64 ], lhs : _nt .CoFloat64_nd , / ) -> NDArray [float64 ]: ...
2585+ def __rfloordiv__ (
2586+ self : _nt .CastsWithFloat [_RealScalarT ], x : _nt .SequenceND [_nt .JustFloat ], /
2587+ ) -> NDArray [_RealScalarT ]: ...
25952588 @overload
2596- def __rfloordiv__ (self : _ArrayFloat64_co , lhs : _nt .ToFloat64_nd , / ) -> NDArray [float64 ]: ...
2589+ def __rfloordiv__ (self : NDArray [ timedelta64 ], x : _nt .ToTimeDelta_nd , / ) -> NDArray [int64 ]: ...
25972590 @overload
2598- def __rfloordiv__ (self : NDArray [unsignedinteger ], lhs : _nt .CoUInt64_nd , / ) -> NDArray [unsignedinteger ]: ...
2591+ def __rfloordiv__ (self : NDArray [integer | floating ], x : _nt .ToTimeDelta_nd , / ) -> NDArray [timedelta64 ]: ...
25992592 @overload
2600- def __rfloordiv__ (self : _ArrayUInt_co , lhs : _nt .ToUInteger_nd , / ) -> NDArray [unsignedinteger ]: ...
2601- @overload
2602- def __rfloordiv__ (self : NDArray [signedinteger ], lhs : _nt .CoInt64_nd , / ) -> NDArray [signedinteger ]: ...
2603- @overload
2604- def __rfloordiv__ (self : _ArrayInt_co , lhs : _nt .ToSInteger_nd , / ) -> NDArray [signedinteger ]: ...
2605- @overload
2606- def __rfloordiv__ (self : NDArray [floating ], lhs : _nt .CoFloating_nd , / ) -> NDArray [floating ]: ...
2607- @overload
2608- def __rfloordiv__ (self : NDArray [floating | integer ], lhs : _nt .ToFloating_nd , / ) -> NDArray [floating ]: ...
2609- @overload
2610- def __rfloordiv__ (self : _nt .CoFloating_nd , lhs : _nt .CoFloating_nd , / ) -> NDArray [Incomplete ]: ...
2611- @overload
2612- def __rfloordiv__ (self : NDArray [timedelta64 ], lhs : _ArrayLike [timedelta64 ], / ) -> NDArray [int64 ]: ...
2613- @overload
2614- def __rfloordiv__ (self : NDArray [floating | integer ], lhs : _ArrayLike [timedelta64 ], / ) -> NDArray [timedelta64 ]: ...
2615- @overload
2616- def __rfloordiv__ (self : NDArray [object_ ], lhs : object , / ) -> NDArray [object_ ]: ...
2593+ def __rfloordiv__ (
2594+ self : NDArray [generic [_T ]], x : _nt .Sequence1ND [_nt .op .CanFloordiv [_T ]], /
2595+ ) -> NDArray [Incomplete ]: ...
26172596 @overload
2618- def __rfloordiv__ (self , lhs : _ArrayLikeObject_co , / ) -> NDArray [object_ ]: ...
2597+ def __rfloordiv__ (self : NDArray [ object_ ], x : object , / ) -> NDArray [object_ ]: ...
26192598
26202599 #
26212600 @overload # type: ignore[misc]
26222601 def __ifloordiv__ (
2623- self : NDArray [integer | timedelta64 ],
2624- rhs : _nt .CoInteger_nd ,
2625- / ,
2602+ self : NDArray [_RealNumberT ], x : _nt .Casts [_RealNumberT ], /
26262603 ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
26272604 @overload
2628- def __ifloordiv__ (self : NDArray [floating ], rhs : _nt .CoFloating_nd , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2605+ def __ifloordiv__ (self : NDArray [integer ], x : _nt .SequenceND [ int ] , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
26292606 @overload
2630- def __ifloordiv__ (self : NDArray [complexfloating ], rhs : _nt .CoComplex_nd , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2631- @overload
2632- def __ifloordiv__ (self : NDArray [object_ ], rhs : object , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2633-
2634- #
2607+ def __ifloordiv__ (self : NDArray [floating ], x : _nt .SequenceND [float ], / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
26352608 @overload
2636- def __mod__ (self : NDArray [_RealNumberT ], rhs : int | bool_ , / ) -> _nt .Array [_RealNumberT , _ShapeT_co ]: ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
2637- @overload
2638- def __mod__ (self : NDArray [_RealNumberT ], rhs : _nt .ToBool_nd , / ) -> NDArray [_RealNumberT ]: ... # type: ignore[overload-overlap]
2639- @overload
2640- def __mod__ (self : NDArray [bool_ ], rhs : _ArrayLike [_RealNumberT ], / ) -> NDArray [_RealNumberT ]: ...
2641- @overload
2642- def __mod__ (self : NDArray [bool_ ], rhs : _nt .ToBool_nd , / ) -> NDArray [int8 ]: ...
2643- @overload
2644- def __mod__ (self : NDArray [float64 ], rhs : _nt .CoFloat64_nd , / ) -> NDArray [float64 ]: ...
2609+ def __ifloordiv__ (
2610+ self : NDArray [timedelta64 ], x : _nt .ToInteger_nd | _nt .ToFloating_nd , /
2611+ ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
26452612 @overload
2646- def __mod__ (self : _ArrayFloat64_co , rhs : _nt .ToFloat64_nd , / ) -> NDArray [float64 ]: ...
2613+ def __ifloordiv__ (
2614+ self : NDArray [generic [_T ]], x : _nt .Sequence1ND [_nt .op .CanRFloordiv [_T , _T ]], /
2615+ ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
26472616 @overload
2648- def __mod__ (self : NDArray [unsignedinteger ], rhs : _nt .CoUInt64_nd , / ) -> NDArray [unsignedinteger ]: ...
2617+ def __ifloordiv__ (self : NDArray [object_ ], x : object , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2618+
2619+ #
26492620 @overload
2650- def __mod__ (self : _ArrayUInt_co , rhs : _nt .ToUInteger_nd , / ) -> NDArray [unsignedinteger ]: ...
2621+ def __mod__ (self : NDArray [ bool_ ], x : _nt .ToBool_nd , / ) -> NDArray [int8 ]: ...
26512622 @overload
2652- def __mod__ (self : NDArray [signedinteger ], rhs : _nt .CoInt64_nd , / ) -> NDArray [signedinteger ]: ...
2623+ def __mod__ (self : NDArray [_RealNumberT ], x : _nt .Casts [ _RealNumberT ] , / ) -> NDArray [_RealNumberT ]: ...
26532624 @overload
2654- def __mod__ (self : _ArrayInt_co , rhs : _nt .ToSInteger_nd , / ) -> NDArray [signedinteger ]: ...
2625+ def __mod__ (self : NDArray [ _RealT ], x : _nt .CastsWith [ _RealT , _RealScalarT ], / ) -> NDArray [_RealScalarT ]: ...
26552626 @overload
2656- def __mod__ (self : NDArray [ floating ], rhs : _nt .CoFloating_nd , / ) -> NDArray [floating ]: ...
2627+ def __mod__ (self : _nt . CastsWithInt [ _RealScalarT ], x : _nt .SequenceND [ int ] , / ) -> NDArray [_RealScalarT ]: ...
26572628 @overload
2658- def __mod__ (self : NDArray [floating | integer ], rhs : _nt .ToFloating_nd , / ) -> NDArray [floating ]: ...
2629+ def __mod__ (
2630+ self : _nt .CastsWithFloat [_RealScalarT ], x : _nt .SequenceND [_nt .JustFloat ], /
2631+ ) -> NDArray [_RealScalarT ]: ...
26592632 @overload
2660- def __mod__ (self : NDArray [timedelta64 ], rhs : _ArrayLike [ timedelta64 ] , / ) -> NDArray [timedelta64 ]: ...
2633+ def __mod__ (self : NDArray [timedelta64 ], x : _nt . ToTimeDelta_nd , / ) -> NDArray [timedelta64 ]: ...
26612634 @overload
2662- def __mod__ (self : NDArray [object_ ], rhs : object , / ) -> NDArray [object_ ]: ...
2635+ def __mod__ (self : NDArray [generic [ _T ]], x : _nt . Sequence1ND [ _nt . op . CanRMod [ _T ]] , / ) -> NDArray [Incomplete ]: ...
26632636 @overload
2664- def __mod__ (self , rhs : _ArrayLikeObject_co , / ) -> NDArray [object_ ]: ...
2637+ def __mod__ (self : NDArray [ object_ ], x : object , / ) -> NDArray [object_ ]: ...
26652638
2666- # keep in sync with __mod__
2667- @overload
2668- def __rmod__ (self : NDArray [_RealNumberT ], lhs : int | bool_ , / ) -> _nt .Array [_RealNumberT , _ShapeT_co ]: ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
2669- @overload
2670- def __rmod__ (self : NDArray [_RealNumberT ], lhs : _nt .ToBool_nd , / ) -> NDArray [_RealNumberT ]: ... # type: ignore[overload-overlap]
2671- @overload
2672- def __rmod__ (self : NDArray [bool_ ], lhs : _ArrayLike [_RealNumberT ], / ) -> NDArray [_RealNumberT ]: ...
2673- @overload
2674- def __rmod__ (self : NDArray [bool_ ], lhs : _nt .ToBool_nd , / ) -> NDArray [int8 ]: ...
2675- @overload
2676- def __rmod__ (self : NDArray [float64 ], lhs : _nt .CoFloat64_nd , / ) -> NDArray [float64 ]: ...
2677- @overload
2678- def __rmod__ (self : _ArrayFloat64_co , lhs : _nt .ToFloat64_nd , / ) -> NDArray [float64 ]: ...
2679- @overload
2680- def __rmod__ (self : NDArray [unsignedinteger ], lhs : _nt .CoUInt64_nd , / ) -> NDArray [unsignedinteger ]: ...
2639+ #
26812640 @overload
2682- def __rmod__ (self : _ArrayUInt_co , lhs : _nt .ToUInteger_nd , / ) -> NDArray [unsignedinteger ]: ...
2641+ def __rmod__ (self : NDArray [ bool_ ], x : _nt .ToBool_nd , / ) -> NDArray [int8 ]: ...
26832642 @overload
2684- def __rmod__ (self : NDArray [signedinteger ], lhs : _nt .CoInt64_nd , / ) -> NDArray [signedinteger ]: ...
2643+ def __rmod__ (self : NDArray [_RealNumberT ], x : _nt .Casts [ _RealNumberT ] , / ) -> NDArray [_RealNumberT ]: ...
26852644 @overload
2686- def __rmod__ (self : _ArrayInt_co , lhs : _nt .ToSInteger_nd , / ) -> NDArray [signedinteger ]: ...
2645+ def __rmod__ (self : NDArray [ _RealT ], x : _nt .CastsWith [ _RealT , _RealScalarT ], / ) -> NDArray [_RealScalarT ]: ...
26872646 @overload
2688- def __rmod__ (self : NDArray [ floating ], lhs : _nt .CoFloating_nd , / ) -> NDArray [floating ]: ...
2647+ def __rmod__ (self : _nt . CastsWithInt [ _RealScalarT ], x : _nt .SequenceND [ int ] , / ) -> NDArray [_RealScalarT ]: ...
26892648 @overload
2690- def __rmod__ (self : NDArray [floating | integer ], lhs : _nt .ToFloating_nd , / ) -> NDArray [floating ]: ...
2649+ def __rmod__ (
2650+ self : _nt .CastsWithFloat [_RealScalarT ], x : _nt .SequenceND [_nt .JustFloat ], /
2651+ ) -> NDArray [_RealScalarT ]: ...
26912652 @overload
2692- def __rmod__ (self : NDArray [timedelta64 ], lhs : _ArrayLike [ timedelta64 ] , / ) -> NDArray [timedelta64 ]: ...
2653+ def __rmod__ (self : NDArray [timedelta64 ], x : _nt . ToTimeDelta_nd , / ) -> NDArray [timedelta64 ]: ...
26932654 @overload
2694- def __rmod__ (self : NDArray [object_ ], lhs : object , / ) -> NDArray [object_ ]: ...
2655+ def __rmod__ (self : NDArray [generic [ _T ]], x : _nt . Sequence1ND [ _nt . op . CanMod [ _T ]] , / ) -> NDArray [Incomplete ]: ...
26952656 @overload
2696- def __rmod__ (self , lhs : _ArrayLikeObject_co , / ) -> NDArray [object_ ]: ...
2657+ def __rmod__ (self : NDArray [ object_ ], x : object , / ) -> NDArray [object_ ]: ...
26972658
26982659 #
26992660 @overload # type: ignore[misc]
2700- def __imod__ (self : NDArray [integer ], rhs : _nt .CoInteger_nd , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2661+ def __imod__ (self : NDArray [_RealNumberT ], x : _nt .Casts [_RealNumberT ], / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2662+ @overload
2663+ def __imod__ (self : NDArray [integer ], x : _nt .SequenceND [int ], / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
27012664 @overload
2702- def __imod__ (self : NDArray [floating ], rhs : _nt .CoFloating_nd , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2665+ def __imod__ (self : NDArray [floating ], x : _nt .SequenceND [ float ] , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
27032666 @overload
2704- def __imod__ (self : NDArray [timedelta64 ], rhs : _ArrayLike [ timedelta64 ] , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2667+ def __imod__ (self : NDArray [timedelta64 ], x : _nt . ToTimeDelta_nd , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
27052668 @overload
2706- def __imod__ (self : NDArray [object_ ], rhs : object , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2669+ def __imod__ (
2670+ self : NDArray [generic [_T ]], x : _nt .Sequence1ND [_nt .op .CanRMod [_T , _T ]], /
2671+ ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2672+ @overload
2673+ def __imod__ (self : NDArray [object_ ], x : object , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2674+
2675+ # TODO(jorenham): rewrite the binops below
27072676
27082677 #
27092678 @overload
0 commit comments