@@ -649,6 +649,7 @@ _ScalarT = TypeVar("_ScalarT", bound=generic)
649
649
_SelfScalarT = TypeVar ("_SelfScalarT" , bound = generic )
650
650
_ScalarT_co = TypeVar ("_ScalarT_co" , bound = generic , default = Any , covariant = True )
651
651
_IntegralScalarT = TypeVar ("_IntegralScalarT" , bound = bool_ | integer | object_ )
652
+ _RealT = TypeVar ("_RealT" , bound = bool_ | integer | floating )
652
653
_RealScalarT = TypeVar ("_RealScalarT" , bound = bool_ | integer | floating | object_ )
653
654
_RealNumberT = TypeVar ("_RealNumberT" , bound = integer | floating )
654
655
_IntegerT = TypeVar ("_IntegerT" , bound = integer )
@@ -2541,169 +2542,137 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DTypeT_co]):
2541
2542
@overload
2542
2543
def __itruediv__ (self : NDArray [object_ ], x : object , / ) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2543
2544
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
+ #
2565
2546
@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 ]: ...
2567
2548
@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 ]: ...
2569
2550
@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 ]: ...
2571
2554
@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 ]: ...
2573
2556
@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 ]: ...
2575
2560
@overload
2576
- def __floordiv__ (self : NDArray [timedelta64 ], rhs : _nt .ToBool_nd , / ) -> Never : ...
2561
+ def __floordiv__ (self : NDArray [timedelta64 ], x : _nt .ToTimeDelta_nd , / ) -> NDArray [ int64 ] : ...
2577
2562
@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 ]: ...
2579
2566
@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 ]: ...
2581
2570
@overload
2582
- def __floordiv__ (self , rhs : _ArrayLikeObject_co , / ) -> NDArray [object_ ]: ...
2571
+ def __floordiv__ (self : NDArray [ object_ ], x : object , / ) -> NDArray [object_ ]: ...
2583
2572
2584
2573
#
2585
2574
@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 ]: ...
2587
2576
@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 ]: ...
2589
2578
@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 ]: ...
2591
2582
@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 ]: ...
2593
2584
@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 ]: ...
2595
2588
@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 ]: ...
2597
2590
@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 ]: ...
2599
2592
@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 ]: ...
2617
2596
@overload
2618
- def __rfloordiv__ (self , lhs : _ArrayLikeObject_co , / ) -> NDArray [object_ ]: ...
2597
+ def __rfloordiv__ (self : NDArray [ object_ ], x : object , / ) -> NDArray [object_ ]: ...
2619
2598
2620
2599
#
2621
2600
@overload # type: ignore[misc]
2622
2601
def __ifloordiv__ (
2623
- self : NDArray [integer | timedelta64 ],
2624
- rhs : _nt .CoInteger_nd ,
2625
- / ,
2602
+ self : NDArray [_RealNumberT ], x : _nt .Casts [_RealNumberT ], /
2626
2603
) -> ndarray [_ShapeT_co , _DTypeT_co ]: ...
2627
2604
@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 ]: ...
2629
2606
@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 ]: ...
2635
2608
@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 ]: ...
2645
2612
@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 ]: ...
2647
2616
@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
+ #
2649
2620
@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 ]: ...
2651
2622
@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 ]: ...
2653
2624
@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 ]: ...
2655
2626
@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 ]: ...
2657
2628
@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 ]: ...
2659
2632
@overload
2660
- def __mod__ (self : NDArray [timedelta64 ], rhs : _ArrayLike [ timedelta64 ] , / ) -> NDArray [timedelta64 ]: ...
2633
+ def __mod__ (self : NDArray [timedelta64 ], x : _nt . ToTimeDelta_nd , / ) -> NDArray [timedelta64 ]: ...
2661
2634
@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 ]: ...
2663
2636
@overload
2664
- def __mod__ (self , rhs : _ArrayLikeObject_co , / ) -> NDArray [object_ ]: ...
2637
+ def __mod__ (self : NDArray [ object_ ], x : object , / ) -> NDArray [object_ ]: ...
2665
2638
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
+ #
2681
2640
@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 ]: ...
2683
2642
@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 ]: ...
2685
2644
@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 ]: ...
2687
2646
@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 ]: ...
2689
2648
@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 ]: ...
2691
2652
@overload
2692
- def __rmod__ (self : NDArray [timedelta64 ], lhs : _ArrayLike [ timedelta64 ] , / ) -> NDArray [timedelta64 ]: ...
2653
+ def __rmod__ (self : NDArray [timedelta64 ], x : _nt . ToTimeDelta_nd , / ) -> NDArray [timedelta64 ]: ...
2693
2654
@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 ]: ...
2695
2656
@overload
2696
- def __rmod__ (self , lhs : _ArrayLikeObject_co , / ) -> NDArray [object_ ]: ...
2657
+ def __rmod__ (self : NDArray [ object_ ], x : object , / ) -> NDArray [object_ ]: ...
2697
2658
2698
2659
#
2699
2660
@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 ]: ...
2701
2664
@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 ]: ...
2703
2666
@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 ]: ...
2705
2668
@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
2707
2676
2708
2677
#
2709
2678
@overload
0 commit comments