numpy 2.3.2__cp314-cp314-macosx_14_0_arm64.whl → 2.3.3__cp314-cp314-macosx_14_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of numpy might be problematic. Click here for more details.

numpy/__config__.py CHANGED
@@ -41,7 +41,7 @@ CONFIG = _cleanup(
41
41
  "cython": {
42
42
  "name": "cython",
43
43
  "linker": r"cython",
44
- "version": "3.1.2",
44
+ "version": "3.1.3",
45
45
  "commands": r"cython",
46
46
  "args": r"",
47
47
  "linker args": r"",
@@ -93,7 +93,7 @@ CONFIG = _cleanup(
93
93
  },
94
94
  },
95
95
  "Python Information": {
96
- "path": r"/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-hcvbphbj/bin/python",
96
+ "path": r"/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-iep2tsgc/bin/python",
97
97
  "version": "3.14",
98
98
  },
99
99
  "SIMD Extensions": {
numpy/__init__.pyi CHANGED
@@ -134,12 +134,6 @@ from numpy._typing import (
134
134
  )
135
135
 
136
136
  from numpy._typing._callable import (
137
- _BoolOp,
138
- _BoolBitOp,
139
- _BoolSub,
140
- _BoolTrueDiv,
141
- _BoolMod,
142
- _BoolDivMod,
143
137
  _IntTrueDiv,
144
138
  _UnsignedIntOp,
145
139
  _UnsignedIntBitOp,
@@ -803,6 +797,7 @@ _1NShapeT = TypeVar("_1NShapeT", bound=tuple[L[1], *tuple[L[1], ...]]) # (1,) |
803
797
  _ScalarT = TypeVar("_ScalarT", bound=generic)
804
798
  _ScalarT_co = TypeVar("_ScalarT_co", bound=generic, default=Any, covariant=True)
805
799
  _NumberT = TypeVar("_NumberT", bound=number)
800
+ _InexactT = TypeVar("_InexactT", bound=inexact)
806
801
  _RealNumberT = TypeVar("_RealNumberT", bound=floating | integer)
807
802
  _FloatingT_co = TypeVar("_FloatingT_co", bound=floating, default=floating, covariant=True)
808
803
  _IntegerT = TypeVar("_IntegerT", bound=integer)
@@ -2151,7 +2146,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DTypeT_co]):
2151
2146
  @strides.setter
2152
2147
  def strides(self, value: _ShapeLike) -> None: ...
2153
2148
  def byteswap(self, inplace: builtins.bool = ...) -> Self: ...
2154
- def fill(self, value: Any) -> None: ...
2149
+ def fill(self, value: Any, /) -> None: ...
2155
2150
  @property
2156
2151
  def flat(self) -> flatiter[Self]: ...
2157
2152
 
@@ -3824,12 +3819,14 @@ class bool(generic[_BoolItemT_co], Generic[_BoolItemT_co]):
3824
3819
  def __init__(self: np.bool[builtins.bool], value: object, /) -> None: ...
3825
3820
 
3826
3821
  def __bool__(self, /) -> _BoolItemT_co: ...
3822
+
3827
3823
  @overload
3828
3824
  def __int__(self: np.bool[L[False]], /) -> L[0]: ...
3829
3825
  @overload
3830
3826
  def __int__(self: np.bool[L[True]], /) -> L[1]: ...
3831
3827
  @overload
3832
3828
  def __int__(self, /) -> L[0, 1]: ...
3829
+
3833
3830
  def __abs__(self) -> Self: ...
3834
3831
 
3835
3832
  @overload
@@ -3839,23 +3836,191 @@ class bool(generic[_BoolItemT_co], Generic[_BoolItemT_co]):
3839
3836
  @overload
3840
3837
  def __invert__(self, /) -> np.bool: ...
3841
3838
 
3842
- __add__: _BoolOp[np.bool]
3843
- __radd__: _BoolOp[np.bool]
3844
- __sub__: _BoolSub
3845
- __rsub__: _BoolSub
3846
- __mul__: _BoolOp[np.bool]
3847
- __rmul__: _BoolOp[np.bool]
3848
- __truediv__: _BoolTrueDiv
3849
- __rtruediv__: _BoolTrueDiv
3850
- __floordiv__: _BoolOp[int8]
3851
- __rfloordiv__: _BoolOp[int8]
3852
- __pow__: _BoolOp[int8]
3853
- __rpow__: _BoolOp[int8]
3854
-
3855
- __lshift__: _BoolBitOp[int8]
3856
- __rlshift__: _BoolBitOp[int8]
3857
- __rshift__: _BoolBitOp[int8]
3858
- __rrshift__: _BoolBitOp[int8]
3839
+ @overload
3840
+ def __add__(self, other: _NumberT, /) -> _NumberT: ...
3841
+ @overload
3842
+ def __add__(self, other: builtins.bool | bool_, /) -> bool_: ...
3843
+ @overload
3844
+ def __add__(self, other: int, /) -> int_: ...
3845
+ @overload
3846
+ def __add__(self, other: float, /) -> float64: ...
3847
+ @overload
3848
+ def __add__(self, other: complex, /) -> complex128: ...
3849
+
3850
+ @overload
3851
+ def __radd__(self, other: _NumberT, /) -> _NumberT: ...
3852
+ @overload
3853
+ def __radd__(self, other: builtins.bool, /) -> bool_: ...
3854
+ @overload
3855
+ def __radd__(self, other: int, /) -> int_: ...
3856
+ @overload
3857
+ def __radd__(self, other: float, /) -> float64: ...
3858
+ @overload
3859
+ def __radd__(self, other: complex, /) -> complex128: ...
3860
+
3861
+ @overload
3862
+ def __sub__(self, other: _NumberT, /) -> _NumberT: ...
3863
+ @overload
3864
+ def __sub__(self, other: int, /) -> int_: ...
3865
+ @overload
3866
+ def __sub__(self, other: float, /) -> float64: ...
3867
+ @overload
3868
+ def __sub__(self, other: complex, /) -> complex128: ...
3869
+
3870
+ @overload
3871
+ def __rsub__(self, other: _NumberT, /) -> _NumberT: ...
3872
+ @overload
3873
+ def __rsub__(self, other: int, /) -> int_: ...
3874
+ @overload
3875
+ def __rsub__(self, other: float, /) -> float64: ...
3876
+ @overload
3877
+ def __rsub__(self, other: complex, /) -> complex128: ...
3878
+
3879
+ @overload
3880
+ def __mul__(self, other: _NumberT, /) -> _NumberT: ...
3881
+ @overload
3882
+ def __mul__(self, other: builtins.bool | bool_, /) -> bool_: ...
3883
+ @overload
3884
+ def __mul__(self, other: int, /) -> int_: ...
3885
+ @overload
3886
+ def __mul__(self, other: float, /) -> float64: ...
3887
+ @overload
3888
+ def __mul__(self, other: complex, /) -> complex128: ...
3889
+
3890
+ @overload
3891
+ def __rmul__(self, other: _NumberT, /) -> _NumberT: ...
3892
+ @overload
3893
+ def __rmul__(self, other: builtins.bool, /) -> bool_: ...
3894
+ @overload
3895
+ def __rmul__(self, other: int, /) -> int_: ...
3896
+ @overload
3897
+ def __rmul__(self, other: float, /) -> float64: ...
3898
+ @overload
3899
+ def __rmul__(self, other: complex, /) -> complex128: ...
3900
+
3901
+ @overload
3902
+ def __pow__(self, other: _NumberT, mod: None = None, /) -> _NumberT: ...
3903
+ @overload
3904
+ def __pow__(self, other: builtins.bool | bool_, mod: None = None, /) -> int8: ...
3905
+ @overload
3906
+ def __pow__(self, other: int, mod: None = None, /) -> int_: ...
3907
+ @overload
3908
+ def __pow__(self, other: float, mod: None = None, /) -> float64: ...
3909
+ @overload
3910
+ def __pow__(self, other: complex, mod: None = None, /) -> complex128: ...
3911
+
3912
+ @overload
3913
+ def __rpow__(self, other: _NumberT, mod: None = None, /) -> _NumberT: ...
3914
+ @overload
3915
+ def __rpow__(self, other: builtins.bool, mod: None = None, /) -> int8: ...
3916
+ @overload
3917
+ def __rpow__(self, other: int, mod: None = None, /) -> int_: ...
3918
+ @overload
3919
+ def __rpow__(self, other: float, mod: None = None, /) -> float64: ...
3920
+ @overload
3921
+ def __rpow__(self, other: complex, mod: None = None, /) -> complex128: ...
3922
+
3923
+ @overload
3924
+ def __truediv__(self, other: _InexactT, /) -> _InexactT: ...
3925
+ @overload
3926
+ def __truediv__(self, other: float | integer | bool_, /) -> float64: ...
3927
+ @overload
3928
+ def __truediv__(self, other: complex, /) -> complex128: ...
3929
+
3930
+ @overload
3931
+ def __rtruediv__(self, other: _InexactT, /) -> _InexactT: ...
3932
+ @overload
3933
+ def __rtruediv__(self, other: float | integer, /) -> float64: ...
3934
+ @overload
3935
+ def __rtruediv__(self, other: complex, /) -> complex128: ...
3936
+
3937
+ @overload
3938
+ def __floordiv__(self, other: _RealNumberT, /) -> _RealNumberT: ...
3939
+ @overload
3940
+ def __floordiv__(self, other: builtins.bool | bool_, /) -> int8: ...
3941
+ @overload
3942
+ def __floordiv__(self, other: int, /) -> int_: ...
3943
+ @overload
3944
+ def __floordiv__(self, other: float, /) -> float64: ...
3945
+
3946
+ @overload
3947
+ def __rfloordiv__(self, other: _RealNumberT, /) -> _RealNumberT: ...
3948
+ @overload
3949
+ def __rfloordiv__(self, other: builtins.bool, /) -> int8: ...
3950
+ @overload
3951
+ def __rfloordiv__(self, other: int, /) -> int_: ...
3952
+ @overload
3953
+ def __rfloordiv__(self, other: float, /) -> float64: ...
3954
+
3955
+ # keep in sync with __floordiv__
3956
+ @overload
3957
+ def __mod__(self, other: _RealNumberT, /) -> _RealNumberT: ...
3958
+ @overload
3959
+ def __mod__(self, other: builtins.bool | bool_, /) -> int8: ...
3960
+ @overload
3961
+ def __mod__(self, other: int, /) -> int_: ...
3962
+ @overload
3963
+ def __mod__(self, other: float, /) -> float64: ...
3964
+
3965
+ # keep in sync with __rfloordiv__
3966
+ @overload
3967
+ def __rmod__(self, other: _RealNumberT, /) -> _RealNumberT: ...
3968
+ @overload
3969
+ def __rmod__(self, other: builtins.bool, /) -> int8: ...
3970
+ @overload
3971
+ def __rmod__(self, other: int, /) -> int_: ...
3972
+ @overload
3973
+ def __rmod__(self, other: float, /) -> float64: ...
3974
+
3975
+ # keep in sync with __mod__
3976
+ @overload
3977
+ def __divmod__(self, other: _RealNumberT, /) -> _2Tuple[_RealNumberT]: ...
3978
+ @overload
3979
+ def __divmod__(self, other: builtins.bool | bool_, /) -> _2Tuple[int8]: ...
3980
+ @overload
3981
+ def __divmod__(self, other: int, /) -> _2Tuple[int_]: ...
3982
+ @overload
3983
+ def __divmod__(self, other: float, /) -> _2Tuple[float64]: ...
3984
+
3985
+ # keep in sync with __rmod__
3986
+ @overload
3987
+ def __rdivmod__(self, other: _RealNumberT, /) -> _2Tuple[_RealNumberT]: ...
3988
+ @overload
3989
+ def __rdivmod__(self, other: builtins.bool, /) -> _2Tuple[int8]: ...
3990
+ @overload
3991
+ def __rdivmod__(self, other: int, /) -> _2Tuple[int_]: ...
3992
+ @overload
3993
+ def __rdivmod__(self, other: float, /) -> _2Tuple[float64]: ...
3994
+
3995
+ @overload
3996
+ def __lshift__(self, other: _IntegerT, /) -> _IntegerT: ...
3997
+ @overload
3998
+ def __lshift__(self, other: builtins.bool | bool_, /) -> int8: ...
3999
+ @overload
4000
+ def __lshift__(self, other: int, /) -> int_: ...
4001
+
4002
+ @overload
4003
+ def __rlshift__(self, other: _IntegerT, /) -> _IntegerT: ...
4004
+ @overload
4005
+ def __rlshift__(self, other: builtins.bool, /) -> int8: ...
4006
+ @overload
4007
+ def __rlshift__(self, other: int, /) -> int_: ...
4008
+
4009
+ # keep in sync with __lshift__
4010
+ @overload
4011
+ def __rshift__(self, other: _IntegerT, /) -> _IntegerT: ...
4012
+ @overload
4013
+ def __rshift__(self, other: builtins.bool | bool_, /) -> int8: ...
4014
+ @overload
4015
+ def __rshift__(self, other: int, /) -> int_: ...
4016
+
4017
+ # keep in sync with __rlshift__
4018
+ @overload
4019
+ def __rrshift__(self, other: _IntegerT, /) -> _IntegerT: ...
4020
+ @overload
4021
+ def __rrshift__(self, other: builtins.bool, /) -> int8: ...
4022
+ @overload
4023
+ def __rrshift__(self, other: int, /) -> int_: ...
3859
4024
 
3860
4025
  @overload
3861
4026
  def __and__(self: np.bool[L[False]], other: builtins.bool | np.bool, /) -> np.bool[L[False]]: ...
@@ -3899,11 +4064,6 @@ class bool(generic[_BoolItemT_co], Generic[_BoolItemT_co]):
3899
4064
  def __or__(self, other: int, /) -> np.bool | intp: ...
3900
4065
  __ror__ = __or__
3901
4066
 
3902
- __mod__: _BoolMod
3903
- __rmod__: _BoolMod
3904
- __divmod__: _BoolDivMod
3905
- __rdivmod__: _BoolDivMod
3906
-
3907
4067
  __lt__: _ComparisonOpLT[_NumberLike_co, _ArrayLikeNumber_co]
3908
4068
  __le__: _ComparisonOpLE[_NumberLike_co, _ArrayLikeNumber_co]
3909
4069
  __gt__: _ComparisonOpGT[_NumberLike_co, _ArrayLikeNumber_co]
Binary file
@@ -3,5 +3,5 @@ includedir=${prefix}/include
3
3
 
4
4
  Name: numpy
5
5
  Description: NumPy is the fundamental package for scientific computing with Python.
6
- Version: 2.3.2
6
+ Version: 2.3.3
7
7
  Cflags: -I${includedir}
@@ -844,6 +844,21 @@ class TestDateTime:
844
844
  a = np.array([-1, 'NaT', 1234567], dtype='<m')
845
845
  assert_equal(str(a), "[ -1 'NaT' 1234567]")
846
846
 
847
+ def test_timedelta_array_with_nats(self):
848
+ # Regression test for gh-29497.
849
+ x = np.array([np.timedelta64('nat'),
850
+ np.timedelta64('nat', 's'),
851
+ np.timedelta64('nat', 'ms'),
852
+ np.timedelta64(123, 'ms')])
853
+ for td in x[:3]:
854
+ assert np.isnat(td)
855
+
856
+ def test_timedelta_array_nat_assignment(self):
857
+ # Regression test for gh-29497.
858
+ x = np.zeros(3, dtype='m8[ms]')
859
+ x[1] = np.timedelta64('nat', 's')
860
+ assert np.isnat(x[1])
861
+
847
862
  def test_pickle(self):
848
863
  # Check that pickle roundtripping works
849
864
  for proto in range(2, pickle.HIGHEST_PROTOCOL + 1):
@@ -872,6 +887,15 @@ class TestDateTime:
872
887
  b"I1\nI1\nI1\ntp7\ntp8\ntp9\nb."
873
888
  assert_equal(pickle.loads(pkl), np.dtype('>M8[us]'))
874
889
 
890
+ def test_gh_29555(self):
891
+ # check that dtype metadata round-trips when none
892
+ dt = np.dtype('>M8[us]')
893
+ assert dt.metadata is None
894
+ for proto in range(2, pickle.HIGHEST_PROTOCOL + 1):
895
+ res = pickle.loads(pickle.dumps(dt, protocol=proto))
896
+ assert_equal(res, dt)
897
+ assert res.metadata is None
898
+
875
899
  def test_setstate(self):
876
900
  "Verify that datetime dtype __setstate__ can handle bad arguments"
877
901
  dt = np.dtype('>M8[us]')
@@ -531,6 +531,13 @@ def test_fancy_indexing(string_list):
531
531
  assert_array_equal(sarr[ind], uarr[ind])
532
532
 
533
533
 
534
+ def test_flatiter_indexing():
535
+ # see gh-29659
536
+ arr = np.array(['hello', 'world'], dtype='T')
537
+ arr.flat[:] = 9223372036854775
538
+ assert_array_equal(arr, np.array([9223372036854775] * 2, dtype='T'))
539
+
540
+
534
541
  def test_creation_functions():
535
542
  assert_array_equal(np.zeros(3, dtype="T"), ["", "", ""])
536
543
  assert_array_equal(np.empty(3, dtype="T"), ["", "", ""])
@@ -8,16 +8,7 @@ See the `Mypy documentation`_ on protocols for more details.
8
8
 
9
9
  """
10
10
 
11
- from typing import (
12
- Any,
13
- NoReturn,
14
- Protocol,
15
- TypeAlias,
16
- TypeVar,
17
- final,
18
- overload,
19
- type_check_only,
20
- )
11
+ from typing import Any, Protocol, TypeAlias, TypeVar, final, overload, type_check_only
21
12
 
22
13
  import numpy as np
23
14
  from numpy import (
@@ -26,7 +17,6 @@ from numpy import (
26
17
  float64,
27
18
  floating,
28
19
  generic,
29
- int8,
30
20
  int_,
31
21
  integer,
32
22
  number,
@@ -38,18 +28,13 @@ from . import NBitBase
38
28
  from ._array_like import NDArray
39
29
  from ._nbit import _NBitInt
40
30
  from ._nested_sequence import _NestedSequence
41
- from ._scalars import (
42
- _BoolLike_co,
43
- _IntLike_co,
44
- _NumberLike_co,
45
- )
31
+ from ._scalars import _NumberLike_co
46
32
 
47
- _T1 = TypeVar("_T1")
48
- _T2 = TypeVar("_T2")
33
+ _T = TypeVar("_T")
49
34
  _T1_contra = TypeVar("_T1_contra", contravariant=True)
50
35
  _T2_contra = TypeVar("_T2_contra", contravariant=True)
51
36
 
52
- _2Tuple: TypeAlias = tuple[_T1, _T1]
37
+ _2Tuple: TypeAlias = tuple[_T, _T]
53
38
 
54
39
  _NBit1 = TypeVar("_NBit1", bound=NBitBase)
55
40
  _NBit2 = TypeVar("_NBit2", bound=NBitBase)
@@ -57,80 +42,8 @@ _NBit2 = TypeVar("_NBit2", bound=NBitBase)
57
42
  _IntType = TypeVar("_IntType", bound=integer)
58
43
  _FloatType = TypeVar("_FloatType", bound=floating)
59
44
  _NumberType = TypeVar("_NumberType", bound=number)
60
- _NumberType_co = TypeVar("_NumberType_co", covariant=True, bound=number)
61
45
  _GenericType_co = TypeVar("_GenericType_co", covariant=True, bound=generic)
62
46
 
63
- @type_check_only
64
- class _BoolOp(Protocol[_GenericType_co]):
65
- @overload
66
- def __call__(self, other: _BoolLike_co, /) -> _GenericType_co: ...
67
- @overload # platform dependent
68
- def __call__(self, other: int, /) -> int_: ...
69
- @overload
70
- def __call__(self, other: float, /) -> float64: ...
71
- @overload
72
- def __call__(self, other: complex, /) -> complex128: ...
73
- @overload
74
- def __call__(self, other: _NumberType, /) -> _NumberType: ...
75
-
76
- @type_check_only
77
- class _BoolBitOp(Protocol[_GenericType_co]):
78
- @overload
79
- def __call__(self, other: _BoolLike_co, /) -> _GenericType_co: ...
80
- @overload # platform dependent
81
- def __call__(self, other: int, /) -> int_: ...
82
- @overload
83
- def __call__(self, other: _IntType, /) -> _IntType: ...
84
-
85
- @type_check_only
86
- class _BoolSub(Protocol):
87
- # Note that `other: bool` is absent here
88
- @overload
89
- def __call__(self, other: bool, /) -> NoReturn: ...
90
- @overload # platform dependent
91
- def __call__(self, other: int, /) -> int_: ...
92
- @overload
93
- def __call__(self, other: float, /) -> float64: ...
94
- @overload
95
- def __call__(self, other: complex, /) -> complex128: ...
96
- @overload
97
- def __call__(self, other: _NumberType, /) -> _NumberType: ...
98
-
99
- @type_check_only
100
- class _BoolTrueDiv(Protocol):
101
- @overload
102
- def __call__(self, other: float | _IntLike_co, /) -> float64: ...
103
- @overload
104
- def __call__(self, other: complex, /) -> complex128: ...
105
- @overload
106
- def __call__(self, other: _NumberType, /) -> _NumberType: ...
107
-
108
- @type_check_only
109
- class _BoolMod(Protocol):
110
- @overload
111
- def __call__(self, other: _BoolLike_co, /) -> int8: ...
112
- @overload # platform dependent
113
- def __call__(self, other: int, /) -> int_: ...
114
- @overload
115
- def __call__(self, other: float, /) -> float64: ...
116
- @overload
117
- def __call__(self, other: _IntType, /) -> _IntType: ...
118
- @overload
119
- def __call__(self, other: _FloatType, /) -> _FloatType: ...
120
-
121
- @type_check_only
122
- class _BoolDivMod(Protocol):
123
- @overload
124
- def __call__(self, other: _BoolLike_co, /) -> _2Tuple[int8]: ...
125
- @overload # platform dependent
126
- def __call__(self, other: int, /) -> _2Tuple[int_]: ...
127
- @overload
128
- def __call__(self, other: float, /) -> _2Tuple[np.float64]: ...
129
- @overload
130
- def __call__(self, other: _IntType, /) -> _2Tuple[_IntType]: ...
131
- @overload
132
- def __call__(self, other: _FloatType, /) -> _2Tuple[_FloatType]: ...
133
-
134
47
  @type_check_only
135
48
  class _IntTrueDiv(Protocol[_NBit1]):
136
49
  @overload
@@ -102,6 +102,7 @@ def unique(
102
102
  axis: SupportsIndex | None = None,
103
103
  *,
104
104
  equal_nan: bool = True,
105
+ sorted: bool = True,
105
106
  ) -> NDArray[_ScalarT]: ...
106
107
  @overload # unknown scalar-type, FFF
107
108
  def unique(
@@ -112,6 +113,7 @@ def unique(
112
113
  axis: SupportsIndex | None = None,
113
114
  *,
114
115
  equal_nan: bool = True,
116
+ sorted: bool = True,
115
117
  ) -> _AnyArray: ...
116
118
  @overload # known scalar-type, TFF
117
119
  def unique(
@@ -122,6 +124,7 @@ def unique(
122
124
  axis: SupportsIndex | None = None,
123
125
  *,
124
126
  equal_nan: bool = True,
127
+ sorted: bool = True,
125
128
  ) -> tuple[NDArray[_ScalarT], _IntArray]: ...
126
129
  @overload # unknown scalar-type, TFF
127
130
  def unique(
@@ -132,6 +135,7 @@ def unique(
132
135
  axis: SupportsIndex | None = None,
133
136
  *,
134
137
  equal_nan: bool = True,
138
+ sorted: bool = True,
135
139
  ) -> tuple[_AnyArray, _IntArray]: ...
136
140
  @overload # known scalar-type, FTF (positional)
137
141
  def unique(
@@ -142,6 +146,7 @@ def unique(
142
146
  axis: SupportsIndex | None = None,
143
147
  *,
144
148
  equal_nan: bool = True,
149
+ sorted: bool = True,
145
150
  ) -> tuple[NDArray[_ScalarT], _IntArray]: ...
146
151
  @overload # known scalar-type, FTF (keyword)
147
152
  def unique(
@@ -152,6 +157,7 @@ def unique(
152
157
  return_counts: L[False] = False,
153
158
  axis: SupportsIndex | None = None,
154
159
  equal_nan: bool = True,
160
+ sorted: bool = True,
155
161
  ) -> tuple[NDArray[_ScalarT], _IntArray]: ...
156
162
  @overload # unknown scalar-type, FTF (positional)
157
163
  def unique(
@@ -162,6 +168,7 @@ def unique(
162
168
  axis: SupportsIndex | None = None,
163
169
  *,
164
170
  equal_nan: bool = True,
171
+ sorted: bool = True,
165
172
  ) -> tuple[_AnyArray, _IntArray]: ...
166
173
  @overload # unknown scalar-type, FTF (keyword)
167
174
  def unique(
@@ -172,6 +179,7 @@ def unique(
172
179
  return_counts: L[False] = False,
173
180
  axis: SupportsIndex | None = None,
174
181
  equal_nan: bool = True,
182
+ sorted: bool = True,
175
183
  ) -> tuple[_AnyArray, _IntArray]: ...
176
184
  @overload # known scalar-type, FFT (positional)
177
185
  def unique(
@@ -182,6 +190,7 @@ def unique(
182
190
  axis: SupportsIndex | None = None,
183
191
  *,
184
192
  equal_nan: bool = True,
193
+ sorted: bool = True,
185
194
  ) -> tuple[NDArray[_ScalarT], _IntArray]: ...
186
195
  @overload # known scalar-type, FFT (keyword)
187
196
  def unique(
@@ -192,6 +201,7 @@ def unique(
192
201
  return_counts: L[True],
193
202
  axis: SupportsIndex | None = None,
194
203
  equal_nan: bool = True,
204
+ sorted: bool = True,
195
205
  ) -> tuple[NDArray[_ScalarT], _IntArray]: ...
196
206
  @overload # unknown scalar-type, FFT (positional)
197
207
  def unique(
@@ -202,6 +212,7 @@ def unique(
202
212
  axis: SupportsIndex | None = None,
203
213
  *,
204
214
  equal_nan: bool = True,
215
+ sorted: bool = True,
205
216
  ) -> tuple[_AnyArray, _IntArray]: ...
206
217
  @overload # unknown scalar-type, FFT (keyword)
207
218
  def unique(
@@ -212,6 +223,7 @@ def unique(
212
223
  return_counts: L[True],
213
224
  axis: SupportsIndex | None = None,
214
225
  equal_nan: bool = True,
226
+ sorted: bool = True,
215
227
  ) -> tuple[_AnyArray, _IntArray]: ...
216
228
  @overload # known scalar-type, TTF
217
229
  def unique(
@@ -222,6 +234,7 @@ def unique(
222
234
  axis: SupportsIndex | None = None,
223
235
  *,
224
236
  equal_nan: bool = True,
237
+ sorted: bool = True,
225
238
  ) -> tuple[NDArray[_ScalarT], _IntArray, _IntArray]: ...
226
239
  @overload # unknown scalar-type, TTF
227
240
  def unique(
@@ -232,6 +245,7 @@ def unique(
232
245
  axis: SupportsIndex | None = None,
233
246
  *,
234
247
  equal_nan: bool = True,
248
+ sorted: bool = True,
235
249
  ) -> tuple[_AnyArray, _IntArray, _IntArray]: ...
236
250
  @overload # known scalar-type, TFT (positional)
237
251
  def unique(
@@ -242,6 +256,7 @@ def unique(
242
256
  axis: SupportsIndex | None = None,
243
257
  *,
244
258
  equal_nan: bool = True,
259
+ sorted: bool = True,
245
260
  ) -> tuple[NDArray[_ScalarT], _IntArray, _IntArray]: ...
246
261
  @overload # known scalar-type, TFT (keyword)
247
262
  def unique(
@@ -252,6 +267,7 @@ def unique(
252
267
  return_counts: L[True],
253
268
  axis: SupportsIndex | None = None,
254
269
  equal_nan: bool = True,
270
+ sorted: bool = True,
255
271
  ) -> tuple[NDArray[_ScalarT], _IntArray, _IntArray]: ...
256
272
  @overload # unknown scalar-type, TFT (positional)
257
273
  def unique(
@@ -262,6 +278,7 @@ def unique(
262
278
  axis: SupportsIndex | None = None,
263
279
  *,
264
280
  equal_nan: bool = True,
281
+ sorted: bool = True,
265
282
  ) -> tuple[_AnyArray, _IntArray, _IntArray]: ...
266
283
  @overload # unknown scalar-type, TFT (keyword)
267
284
  def unique(
@@ -272,6 +289,7 @@ def unique(
272
289
  return_counts: L[True],
273
290
  axis: SupportsIndex | None = None,
274
291
  equal_nan: bool = True,
292
+ sorted: bool = True,
275
293
  ) -> tuple[_AnyArray, _IntArray, _IntArray]: ...
276
294
  @overload # known scalar-type, FTT (positional)
277
295
  def unique(
@@ -282,6 +300,7 @@ def unique(
282
300
  axis: SupportsIndex | None = None,
283
301
  *,
284
302
  equal_nan: bool = True,
303
+ sorted: bool = True,
285
304
  ) -> tuple[NDArray[_ScalarT], _IntArray, _IntArray]: ...
286
305
  @overload # known scalar-type, FTT (keyword)
287
306
  def unique(
@@ -292,6 +311,7 @@ def unique(
292
311
  return_counts: L[True],
293
312
  axis: SupportsIndex | None = None,
294
313
  equal_nan: bool = True,
314
+ sorted: bool = True,
295
315
  ) -> tuple[NDArray[_ScalarT], _IntArray, _IntArray]: ...
296
316
  @overload # unknown scalar-type, FTT (positional)
297
317
  def unique(
@@ -302,6 +322,7 @@ def unique(
302
322
  axis: SupportsIndex | None = None,
303
323
  *,
304
324
  equal_nan: bool = True,
325
+ sorted: bool = True,
305
326
  ) -> tuple[_AnyArray, _IntArray, _IntArray]: ...
306
327
  @overload # unknown scalar-type, FTT (keyword)
307
328
  def unique(
@@ -312,6 +333,7 @@ def unique(
312
333
  return_counts: L[True],
313
334
  axis: SupportsIndex | None = None,
314
335
  equal_nan: bool = True,
336
+ sorted: bool = True,
315
337
  ) -> tuple[_AnyArray, _IntArray, _IntArray]: ...
316
338
  @overload # known scalar-type, TTT
317
339
  def unique(
@@ -322,6 +344,7 @@ def unique(
322
344
  axis: SupportsIndex | None = None,
323
345
  *,
324
346
  equal_nan: bool = True,
347
+ sorted: bool = True,
325
348
  ) -> tuple[NDArray[_ScalarT], _IntArray, _IntArray, _IntArray]: ...
326
349
  @overload # unknown scalar-type, TTT
327
350
  def unique(
@@ -332,6 +355,7 @@ def unique(
332
355
  axis: SupportsIndex | None = None,
333
356
  *,
334
357
  equal_nan: bool = True,
358
+ sorted: bool = True,
335
359
  ) -> tuple[_AnyArray, _IntArray, _IntArray, _IntArray]: ...
336
360
 
337
361
  #
numpy/linalg/_linalg.py CHANGED
@@ -2029,6 +2029,7 @@ def cond(x, p=None):
2029
2029
  # contain nans in the entries where inversion failed.
2030
2030
  _assert_stacked_square(x)
2031
2031
  t, result_t = _commonType(x)
2032
+ result_t = _realType(result_t) # condition number is always real
2032
2033
  signature = 'D->D' if isComplexType(t) else 'd->d'
2033
2034
  with errstate(all='ignore'):
2034
2035
  invx = _umath_linalg.inv(x, signature=signature)
@@ -793,15 +793,28 @@ class CondCases(LinalgSquareTestCase, LinalgGeneralizedSquareTestCase):
793
793
 
794
794
 
795
795
  class TestCond(CondCases):
796
- def test_basic_nonsvd(self):
796
+ @pytest.mark.parametrize('is_complex', [False, True])
797
+ def test_basic_nonsvd(self, is_complex):
797
798
  # Smoketest the non-svd norms
798
799
  A = array([[1., 0, 1], [0, -2., 0], [0, 0, 3.]])
800
+ if is_complex:
801
+ # Since A is linearly scaled, the condition number should not change
802
+ A = A * (1 + 1j)
799
803
  assert_almost_equal(linalg.cond(A, inf), 4)
800
804
  assert_almost_equal(linalg.cond(A, -inf), 2 / 3)
801
805
  assert_almost_equal(linalg.cond(A, 1), 4)
802
806
  assert_almost_equal(linalg.cond(A, -1), 0.5)
803
807
  assert_almost_equal(linalg.cond(A, 'fro'), np.sqrt(265 / 12))
804
808
 
809
+ @pytest.mark.parametrize('dtype', [single, double, csingle, cdouble])
810
+ @pytest.mark.parametrize('norm_ord', [1, -1, 2, -2, 'fro', np.inf, -np.inf])
811
+ def test_cond_dtypes(self, dtype, norm_ord):
812
+ # Check that the condition number is computed in the same dtype
813
+ # as the input matrix
814
+ A = array([[1., 0, 1], [0, -2., 0], [0, 0, 3.]], dtype=dtype)
815
+ out_type = get_real_dtype(dtype)
816
+ assert_equal(linalg.cond(A, p=norm_ord).dtype, out_type)
817
+
805
818
  def test_singular(self):
806
819
  # Singular matrices have infinite condition number for
807
820
  # positive norms, and negative norms shouldn't raise
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -33,7 +33,7 @@ class TestNumpyConfig:
33
33
 
34
34
  def test_configtool_pkgconfigdir(self):
35
35
  stdout = self.check_numpyconfig('--pkgconfigdir')
36
- assert pathlib.Path(stdout) == PKG_CONFIG_DIR
36
+ assert pathlib.Path(stdout) == PKG_CONFIG_DIR.resolve()
37
37
 
38
38
 
39
39
  @pytest.mark.skipif(not IS_INSTALLED, reason="numpy must be installed to check its entrypoints")
@@ -114,7 +114,7 @@ AR_f **= AR_LIKE_c # type: ignore[arg-type]
114
114
 
115
115
  # Scalars
116
116
 
117
- b_ - b_ # type: ignore[call-overload]
117
+ b_ - b_ # type: ignore[operator]
118
118
 
119
119
  dt + dt # type: ignore[operator]
120
120
  td - dt # type: ignore[operator]
@@ -8,7 +8,7 @@ i = int()
8
8
 
9
9
  f8 = np.float64()
10
10
 
11
- b_ >> f8 # type: ignore[call-overload]
11
+ b_ >> f8 # type: ignore[operator]
12
12
  i8 << f8 # type: ignore[call-overload]
13
13
  i | f8 # type: ignore[operator]
14
14
  i8 ^ f8 # type: ignore[call-overload]
numpy/version.py CHANGED
@@ -2,10 +2,10 @@
2
2
  """
3
3
  Module to expose more detailed version info for the installed `numpy`
4
4
  """
5
- version = "2.3.2"
5
+ version = "2.3.3"
6
6
  __version__ = version
7
7
  full_version = version
8
8
 
9
- git_revision = "bc5e4f811db9487a9ea1618ffb77a33b3919bb8e"
9
+ git_revision = "f2a77a76e08719556527e0819182073fe9b5f1c3"
10
10
  release = 'dev' not in version and '+' not in version
11
11
  short_version = version.split("+")[0]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: numpy
3
- Version: 2.3.2
3
+ Version: 2.3.3
4
4
  Summary: Fundamental package for array computing in Python
5
5
  Author: Travis E. Oliphant et al.
6
6
  Maintainer-Email: NumPy Developers <numpy-discussion@python.org>
@@ -1,17 +1,17 @@
1
- numpy-2.3.2.dist-info/RECORD,,
2
- numpy-2.3.2.dist-info/WHEEL,sha256=Q3EhUKygK5Q9W9F4MYfQpEC77_UpphYa9oSwWTgSRRI,122
3
- numpy-2.3.2.dist-info/entry_points.txt,sha256=7Cb63gyL2sIRpsHdADpl6xaIW5JTlUI-k_yqEVr0BSw,220
4
- numpy-2.3.2.dist-info/LICENSE.txt,sha256=2EcVAAxrP9hxmyAnI4tvZFfLhTsutwI4IaWFlJOH978,47800
5
- numpy-2.3.2.dist-info/METADATA,sha256=2v3Oufuc8QxDBvxdmdbg5LH8limHdSbyQvC_K6ATXdU,62149
1
+ numpy-2.3.3.dist-info/RECORD,,
2
+ numpy-2.3.3.dist-info/WHEEL,sha256=Q3EhUKygK5Q9W9F4MYfQpEC77_UpphYa9oSwWTgSRRI,122
3
+ numpy-2.3.3.dist-info/entry_points.txt,sha256=7Cb63gyL2sIRpsHdADpl6xaIW5JTlUI-k_yqEVr0BSw,220
4
+ numpy-2.3.3.dist-info/LICENSE.txt,sha256=2EcVAAxrP9hxmyAnI4tvZFfLhTsutwI4IaWFlJOH978,47800
5
+ numpy-2.3.3.dist-info/METADATA,sha256=EsqVi1oSs7ZMk25kdikWRn8M_Q3U-vCQoz8Ilaca88k,62149
6
6
  numpy/_pytesttester.pyi,sha256=VXCuwPYTb9-PF6nxXwibwBbre0hW9jIB4nkzmtm2kls,497
7
7
  numpy/_array_api_info.py,sha256=NzJSuf8vutjGSqiqahq3jRI3SxMX4X1cva4J6dFv4EU,10354
8
8
  numpy/conftest.py,sha256=pXdv-CKocoIEpr0DsYstu7TgqvNdzSvfiDNMlMwmqYk,8577
9
9
  numpy/version.pyi,sha256=x3oCrDqM_gQhitdDgfgMhJ-UPabIXk5etqBq8HUwUok,358
10
10
  numpy/dtypes.pyi,sha256=sNN4kzUfhArHuKaMRKofBNZ57trl35UaZ51oDWrMmJ4,15544
11
11
  numpy/_globals.pyi,sha256=IrHHIXmibXzgK0VUlECQLw4IEkveXSHo_ZWnTkfnLe4,280
12
- numpy/version.py,sha256=Ccbg_VAXfEkqr6IQb13_j4PBikXP57X-Gsn02aWHzg4,293
12
+ numpy/version.py,sha256=AjMIRnThSIMGkfWDWXTf4QreFJAZR5RGTsjucRoRXx8,293
13
13
  numpy/__init__.cython-30.pxd,sha256=qT7d9_TWkj4UsfpY1uaBUmcYflptcjZfDGZsYJth8rU,47123
14
- numpy/__init__.pyi,sha256=MRetJRVe0uboEY0XxK9-bMqPyrD1J5NXSvh9auIPD6I,213336
14
+ numpy/__init__.pyi,sha256=lFZru8V_KWUuK-oD5tgqCNy1pJSZ-aKyJASjncTlRGo,219154
15
15
  numpy/_globals.py,sha256=k5ZVnzUbKNSLPmZ0URYwJN5C_7xIzfMNaaSsBSrPTuI,3091
16
16
  numpy/__init__.pxd,sha256=BFYYkcQUcrl0Ee8ReoQiA0wgtxsWeIGovC8jYeEw5qg,43758
17
17
  numpy/_configtool.py,sha256=EFRJ3pazTxYhE9op-ocWyKTLZrrpFhfmmS_tWrq8Cxo,1007
@@ -22,7 +22,7 @@ numpy/__init__.py,sha256=gjanU4Bds0wp75zQNpTgr4g7YyXrT9JGzIPSvguEfok,25226
22
22
  numpy/_array_api_info.pyi,sha256=QP_tYDbjtTOPtJECk3ehRXOQ24QM8TZjAfWX8XAsZCM,4864
23
23
  numpy/dtypes.py,sha256=zuPwgC0ijF2oDRAOJ6I9JKhaJuhXFAygByLQaoVtT54,1312
24
24
  numpy/_distributor_init.py,sha256=FBSJdgVHlQca5BrQEVYPoFm6KSTJhIFnWtWbEkEhTSo,421
25
- numpy/__config__.py,sha256=5LECMDwfI6XepAem6kpbH0W0-ZYJguJtAU-XI3o0z2Y,4867
25
+ numpy/__config__.py,sha256=bxoRGuI-VL_H4J5pRmywXDyQ8xys45_hY6RB-PJlxxw,4867
26
26
  numpy/matlib.py,sha256=_S9N8S2NNsHGQUcloxrxABtJDejHiUyMdMJO7SayPkA,10638
27
27
  numpy/__config__.pyi,sha256=7nE-kUNs2lWPIpofTastbf2PCMgCka7FCiK5jrFkDYE,2367
28
28
  numpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -70,13 +70,13 @@ numpy/linalg/lapack_lite.pyi,sha256=QjaS8R4uu6MiJDcCFNE5EOAYGnFCcrNz873gs2OUXEM,
70
70
  numpy/linalg/__init__.pyi,sha256=C3fZHKPSa4wpfRqfTjw3DpzE5p-Czjus48OuMLsDckQ,1060
71
71
  numpy/linalg/__init__.py,sha256=7pVvFwOJFKOArGeUs6MNj3MNqqsx7xx0vt2_7avNAg4,2124
72
72
  numpy/linalg/_linalg.pyi,sha256=inijXDOFEzZayOL37HNKOqyH8wCLQaU0r__pO4do7Ag,11141
73
- numpy/linalg/_linalg.py,sha256=XSBRz5lsdmZ9olIGvdqGIgnajzI-mSx4eBbKNYsYJ1A,115032
73
+ numpy/linalg/_linalg.py,sha256=6rC77pyHWNOHk03DKEnwHezrUCYdAuItQfA61v8lYsw,115106
74
74
  numpy/linalg/linalg.pyi,sha256=8E5sbKeM5Ors7r143mM7A4ui8kFZM0SF7NfUGW1eN-4,932
75
75
  numpy/linalg/_umath_linalg.cpython-314-darwin.so,sha256=85ARnR75or6L63i56k9dRZRnxGB_QR1y8_31w2Xqu78,154752
76
76
  numpy/linalg/linalg.py,sha256=6NimP68tYa0qBRglWH87_tOh2scshtDpcwfvBvmd6Po,585
77
77
  numpy/linalg/lapack_lite.cpython-314-darwin.so,sha256=kxwiusGChDDFOge8XQpshgEicI_lN7Ph2O1-iWuyP2M,52896
78
78
  numpy/linalg/_umath_linalg.pyi,sha256=awvRP1FGuomyfeaR0wzHvrXURAI8tUF3u2RRZ24hkXw,1409
79
- numpy/linalg/tests/test_linalg.py,sha256=G2gy9cyvTNbVKGRx2hd9ybPL0MFttglJtd3U0bfe1b0,84312
79
+ numpy/linalg/tests/test_linalg.py,sha256=VEvQHtAe0o3iVPogcCv9Frx-0HOyNH7WsQHcbkVfgaQ,84998
80
80
  numpy/linalg/tests/test_deprecations.py,sha256=9p_SRmtxj2zc1doY9Ie3dyy5JzWy-tCQWFoajcAJUmM,640
81
81
  numpy/linalg/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
82
  numpy/linalg/tests/test_regression.py,sha256=9a96oyeEGQMUxfw_-GUjNWqn51iu4Cf7kllJ0bKp9ws,6704
@@ -153,7 +153,7 @@ numpy/_core/numerictypes.pyi,sha256=Kp4_fEg_Wj_Yv8xvI7H1TJXrDVsxb96oIH5EmnQyW1c,
153
153
  numpy/_core/einsumfunc.pyi,sha256=b10CKdAeLEryabwRMdiW1cKdNyqWLa5kMV7O2_X8g3A,4893
154
154
  numpy/_core/_umath_tests.cpython-314-darwin.so,sha256=z2q6BLFATAUOdpoYd_O-ABCyxTFDBSxzn76Vp-flymU,71680
155
155
  numpy/_core/function_base.py,sha256=QT1pbll_8rf_3ZsGtLQoAeQ1OSqCqeAGtMTzPAE1I_w,19683
156
- numpy/_core/_multiarray_umath.cpython-314-darwin.so,sha256=G4VJh_0pE6fRvQJOx5e5KUaiFyybi58PTQc6lSDDTS8,3467576
156
+ numpy/_core/_multiarray_umath.cpython-314-darwin.so,sha256=6GzcLZsnYLmmz_5UjtRSbCyDmNsLgHEJMQv8deOq9G8,3467576
157
157
  numpy/_core/_simd.cpython-314-darwin.so,sha256=tQLuFCgdhc1-OYD_f-8tfFwEyUYEsvAURhAmI4WPVqo,339592
158
158
  numpy/_core/einsumfunc.py,sha256=heFeCiEKji-qfVk8zAZ1b5bKm-MUMLzCETMQ7yyHBhc,52820
159
159
  numpy/_core/_ufunc_config.py,sha256=hVIyOmLjFYdZQY5plKWuOMk-U7UzeYSEo4ygiXOFcBU,15052
@@ -234,7 +234,7 @@ numpy/_core/tests/test_indexing.py,sha256=lU0jP4UvEe2_MUiAhy4_GD1zvpdIwUrHviu0MJ
234
234
  numpy/_core/tests/test_umath.py,sha256=D7wSX7JvIk80znwd8GsxYZIzp62It75SBzvKOZHeOXE,193840
235
235
  numpy/_core/tests/test_numeric.py,sha256=aM2TfTaSVE2fz0Z3nN72XoxSDvZzAdatwWpLYWGBBws,159748
236
236
  numpy/_core/tests/test_function_base.py,sha256=x6rHdbqXtHj07Oml_5DslnG6y8jm0XfW4RdV0Q_lHHA,17651
237
- numpy/_core/tests/test_datetime.py,sha256=fVk7HADvcuiFzs19MTF4sAvp96jCBWQ7GWeNBQZKBPs,121786
237
+ numpy/_core/tests/test_datetime.py,sha256=gbArTFwyvmbQSkvTwa7oCv6UXDuvYV3_AbFEvK4ImOo,122685
238
238
  numpy/_core/tests/test__exceptions.py,sha256=luMT6vPIdf6LuwFNGyT-xLMZaKZEYYOFzFpMaesojoE,2922
239
239
  numpy/_core/tests/test_extint128.py,sha256=F6TAH3PlGON3CNz-B4hunClNUTQYQ2R8CkvaX2Zqeo4,5625
240
240
  numpy/_core/tests/test_cython.py,sha256=hLdTcd5wbzMXOx_OyQEzNyFWm-rIcWto7LpCl1SNdIU,10186
@@ -252,7 +252,7 @@ numpy/_core/tests/test_dtype.py,sha256=e1ZLn0xj8FrlxK3FeHOOsoQ-xV17-FMM7mh7VpuuV
252
252
  numpy/_core/tests/test_umath_accuracy.py,sha256=QCFAeiPN6rEO8fwDwJun4J1pCKm0bPsQK6-1pTYCMIY,5478
253
253
  numpy/_core/tests/test_simd_module.py,sha256=JjXH4Yq-0K-R8FHqVDinNaqY_grb1fQFFyVTHGQ0pBg,3904
254
254
  numpy/_core/tests/test_getlimits.py,sha256=CAHTLA8QIYVXTLWCGAISUZaAJ-xd_cBnSdYaOGuLWn8,6976
255
- numpy/_core/tests/test_stringdtype.py,sha256=QRBUpyg3vpwECmznarkRC2WT_LTLinmn_LBOWpQxf3I,56863
255
+ numpy/_core/tests/test_stringdtype.py,sha256=NwBb0NsnnnFmjfWAemc_FEHTq_ArJ48mNj33AD_zOYM,57072
256
256
  numpy/_core/tests/test_strings.py,sha256=16hEUxlHI89-8YsoW9RfI-V4eU-GKwnJXEak-dB7lW8,57959
257
257
  numpy/_core/tests/test_dlpack.py,sha256=Lfi3Xd2umxJ4W8fJht5epHlYWwTKx7MB47i7dcOIpq8,5830
258
258
  numpy/_core/tests/test_einsum.py,sha256=Sixz-ZogKZmnFz3t49voD6AsCxmxUl_c_DHxT9rdscE,56277
@@ -300,8 +300,8 @@ numpy/_core/tests/data/umath-validation-set-arccosh.csv,sha256=0GXe7XG1Z3jXAcK-O
300
300
  numpy/_core/tests/data/umath-validation-set-tan.csv,sha256=Hv2WUMIscfvQJ5Y5BipuHk4oE4VY6QKbQp_kNRdCqYQ,60299
301
301
  numpy/_core/tests/data/umath-validation-set-exp.csv,sha256=rUAWIbvyeKh9rPfp2n0Zq7AKq_nvHpgbgzLjAllhsek,17491
302
302
  numpy/_core/tests/data/astype_copy.pkl,sha256=lWSzCcvzRB_wpuRGj92spGIw-rNPFcd9hwJaRVvfWdk,716
303
- numpy/_core/lib/libnpymath.a,sha256=j2yvEhAEgdgP_QuZoiTn3LMiEsArsCf_vKqcH4bEKlo,35456
304
- numpy/_core/lib/pkgconfig/numpy.pc,sha256=85w4PFiYRj_NToadLugN4QNsA7doEeQTZ-ineB4EcYs,191
303
+ numpy/_core/lib/libnpymath.a,sha256=ffyCgDWvJS7Tt0ng5ktney0MFxqsm2KsiE8UrINGia4,35456
304
+ numpy/_core/lib/pkgconfig/numpy.pc,sha256=SBZcZL5NZ_HgJxW6wc5xZJOoOjAxwSTo539d_6v-1tk,191
305
305
  numpy/_core/lib/npy-pkg-config/npymath.ini,sha256=0iMzarBfkkZ_EXO95_kz-SHZRcNIEwIeOjE_esVBkRQ,361
306
306
  numpy/_core/lib/npy-pkg-config/mlib.ini,sha256=_LsWV1eStNqwhdiYPa2538GL46dnfVwT4MrI1zbsoFw,147
307
307
  numpy/_typing/_char_codes.py,sha256=j07npk82Nb7Ira2z7ZTlU3UcOPwt2gM7qZKrPLdjT48,8764
@@ -318,7 +318,7 @@ numpy/_typing/_scalars.py,sha256=LhXY2BTHmeYKzeIZfpjvuMn-5eOLjU2n9z7z1l5bKf8,944
318
318
  numpy/_typing/_shape.py,sha256=6cFv-LbSyG9mlfSBOGGyul9Q_GUrlcHQC9JZa-m20cA,275
319
319
  numpy/_typing/_add_docstring.py,sha256=_3g7D-6HAQ3MT4X6DE07yLua9LqWFhskNVx1TS7X9O4,3999
320
320
  numpy/_typing/_nested_sequence.py,sha256=so1agYGHd5gDo_IBvvHqBB5lsqGbHqN_imyC5UHU-HI,2505
321
- numpy/_typing/_callable.pyi,sha256=Zq3vN0V7VMwFRjyXl2ITcc8DdWKAB0fSlBQ52wmZrMI,11767
321
+ numpy/_typing/_callable.pyi,sha256=_nn_VLm2TgIoGk4BIbZBpgubwoJCiDjIOFTz0WkxjXg,9139
322
322
  numpy/tests/test_warnings.py,sha256=ynGuW4FOgjLcwdyi5AYCGCrmAu7jZlIQWPNK-0Yr800,2328
323
323
  numpy/tests/test_matlib.py,sha256=RMduSGHBJuVFmk__Ug_hVeGD4-Y3f28G0tlDt8F7k7c,1854
324
324
  numpy/tests/test_ctypeslib.py,sha256=RNTHi3cYOEPQno5zZQ_WyekW5E_0bVuwmn1AFgkDzY8,12375
@@ -329,7 +329,7 @@ numpy/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
329
329
  numpy/tests/test_reloading.py,sha256=T0NTsxAZFPY0LuAzbsy0wV_vSIZON7dwWSNjz_yzpDg,2367
330
330
  numpy/tests/test_public_api.py,sha256=KqMtjIjq0_lp2ag4FTtulzypCqyZ43kuUlXgzd_Vkxc,27851
331
331
  numpy/tests/test_scripts.py,sha256=QpjsWc0vgi-IFLdMr81horvHAnjRI7RhYyO-edHxzcU,1665
332
- numpy/tests/test_configtool.py,sha256=vJswcByOu52gdUcO5NX_jxYRbCNNO80IihaBrHrP0AU,1739
332
+ numpy/tests/test_configtool.py,sha256=aVO9XZPUq-T0LXFx-sQbtsOcnwKIFnpKtfuWWlnWDFs,1749
333
333
  numpy/tests/test_numpy_config.py,sha256=y4U3wnNW0Ags4W_ejhQ4CRCPnBc9p-4-B9OFDcLq9fg,1235
334
334
  numpy/_pyinstaller/hook-numpy.pyi,sha256=tAvtMPovoi-sur0D1NAo3_evSmYKLTh0bgRSC7QrCIk,349
335
335
  numpy/_pyinstaller/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -357,7 +357,7 @@ numpy/typing/tests/data/fail/lib_function_base.pyi,sha256=JdvdZlgNUNzlOuY74T6Lt_
357
357
  numpy/typing/tests/data/fail/strings.pyi,sha256=wX9ROrRNhpH9g_ewNGjWuTKU-He4xaNxrtz2Dm3iPo8,2333
358
358
  numpy/typing/tests/data/fail/random.pyi,sha256=IvKXQuxZhuK6M0u2x3Y4PhXvLoC8OFnUdoeneaqDiIE,2903
359
359
  numpy/typing/tests/data/fail/ufunclike.pyi,sha256=ejCb6kb7mmxPH0QrDsYfdFSLLPFKx0IZ9xSLs3YXOzg,649
360
- numpy/typing/tests/data/fail/bitwise_ops.pyi,sha256=fnn3R8bMqRD3TIwhc793zgMYoXk3pG52JjkPynL52mw,404
360
+ numpy/typing/tests/data/fail/bitwise_ops.pyi,sha256=3k-IDummVmwkdm3IVIPWCFp4e48TSTyZJKv1lDoPpvs,399
361
361
  numpy/typing/tests/data/fail/constants.pyi,sha256=OHaBJo6GYW94BlUWKQDat5jiit5ZAy_h-5bb1WUJnLU,78
362
362
  numpy/typing/tests/data/fail/index_tricks.pyi,sha256=RNZLHeMOpSX594Eem4WyJrM_QouqndGRVj2YQakJN-E,517
363
363
  numpy/typing/tests/data/fail/scalars.pyi,sha256=EQy8ovBZX49a7AgtRyI8uHgauQoVzAmjE3NALe97tEw,2849
@@ -393,7 +393,7 @@ numpy/typing/tests/data/fail/comparisons.pyi,sha256=zscovvsL89W8wrL43k4z8z1DLrjX
393
393
  numpy/typing/tests/data/fail/ndarray.pyi,sha256=65IDiOprlv-sg375SBmmh6_hYOzlucTVLe42GymniGM,381
394
394
  numpy/typing/tests/data/fail/shape_base.pyi,sha256=8366-8mCNii1D0W6YrOhCNxo8rrfqQThO-dIVWNRHvA,157
395
395
  numpy/typing/tests/data/fail/memmap.pyi,sha256=uXPLcVx726Bbw93E5kdIc7K0ssvLIZoJfNTULMtAa_8,169
396
- numpy/typing/tests/data/fail/arithmetic.pyi,sha256=HJZH7HOYGyw5z1WAm6ujlXfdkOcqM2YVI92Zv-Wkaj0,3695
396
+ numpy/typing/tests/data/fail/arithmetic.pyi,sha256=B1iRvZyWH_beZWBFsUtF6aHtF99VBjWpHQya6IyY1o8,3690
397
397
  numpy/typing/tests/data/fail/arrayprint.pyi,sha256=i-0R4ExF_gtfXML5qirbsQLmDwJyg6_37HDYsk6g6tI,616
398
398
  numpy/typing/tests/data/pass/fromnumeric.py,sha256=d_hVLyrVDFPVx33aqLIyAGYYQ8XAJFIzrAsE8QCoof4,3991
399
399
  numpy/typing/tests/data/pass/arithmetic.py,sha256=t4UK-TROh0uYPlUNn5CZHdTysECmDZa04uUOCZO58cY,7762
@@ -737,7 +737,7 @@ numpy/lib/array_utils.pyi,sha256=LfY_fzfTdtjoLIi5FSCDsC5weYrmAHFh7fxFfniupbg,296
737
737
  numpy/lib/_npyio_impl.py,sha256=kucazwCufh4mNwECyZxEerxsqa_GxQMz1kYuZURDI8s,99277
738
738
  numpy/lib/stride_tricks.pyi,sha256=FLo0b8NlLPsS58VzjFFchivpBOjjE_meU0EhWEFPQNY,170
739
739
  numpy/lib/_index_tricks_impl.py,sha256=g7Np4E8AG9sgyi9HTUgvOM08pIlAj_cvXw4cc7NrU5I,32186
740
- numpy/lib/_arraysetops_impl.pyi,sha256=gYwt9qhpNQf5krbOK7MAHq9IQn1D4bb-lvbBIK98m3s,12803
740
+ numpy/lib/_arraysetops_impl.pyi,sha256=Yh-w9l43w6vMBLfwzIKQlxHcE6gFqOsfu5gyKpMgc_s,13403
741
741
  numpy/lib/introspect.pyi,sha256=AWVX6b9mzdwsxizOY0LydWKBEpGatHaeeXGc2txYJEM,152
742
742
  numpy/lib/_ufunclike_impl.pyi,sha256=SJ7wbjWFI6WL_rp3CNqbZoKoza4Ou4uDwXvpt4iekys,1288
743
743
  numpy/lib/_twodim_base_impl.py,sha256=3nOLvCD6cfM6MD3o381F48GB8poqsUGDCDOQlOBQXmY,33925
@@ -794,25 +794,25 @@ numpy/fft/tests/test_helper.py,sha256=LeVDCCdHzFhmCQ5ByMtVyA22GphgTQS5dupuxrLE8X
794
794
  numpy/fft/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
795
795
  numpy/doc/ufuncs.py,sha256=9xt8H34GhrXrFq9cWFUGvJFePa9YuH9Tq1DzAnm2E2E,5414
796
796
  numpy/random/_generator.pyi,sha256=aFPqfOxIpOIOmdY1xBcUpllMCv20iTq4PN7Ad_gd7HY,24009
797
- numpy/random/bit_generator.cpython-314-darwin.so,sha256=PnK0K7Za_ObVUCu0Py_ZzvjEfU1l_IrLreBC7r5nbFA,211904
797
+ numpy/random/bit_generator.cpython-314-darwin.so,sha256=iDdqK0NB_ya9hxMb6oqlTvsi_-v2CoYad-VlnGqEXGk,211904
798
798
  numpy/random/LICENSE.md,sha256=EDFmtiuARDr7nrNIjgUuoGvgz_VmuQjxmeVh_eSa8Z8,3511
799
799
  numpy/random/_common.pxd,sha256=7kGArYkBcemrxJcSttwvtDGbimLszdQnZdNvPMgN5xQ,4982
800
800
  numpy/random/_pcg64.pyi,sha256=bIlGJyN2X3gtKEzh6qwDdyXX88al_2vVmCzGNpbNifs,1142
801
801
  numpy/random/__init__.pyi,sha256=5X5UqSDkeruZafGWv9EnYb0RrjRs49r-TlzV3PPQOjs,2109
802
- numpy/random/_mt19937.cpython-314-darwin.so,sha256=9zqia-ck-u6zv5thReak4Kj8alyk84t6J_GLDqHjIR8,134000
803
- numpy/random/_philox.cpython-314-darwin.so,sha256=PHgouNYq_Y78uOIESgYt0BCmAieDxOz4c7OQyRpTuqo,116864
802
+ numpy/random/_mt19937.cpython-314-darwin.so,sha256=pGEOgGLjyXxxNuPu3h80Oy2vUV_OFwKXiHUI2JFnZGY,134000
803
+ numpy/random/_philox.cpython-314-darwin.so,sha256=9WdlUXUJxsWvW7QODFdTMYmhW5N-kgNY6AVu1jAn2mc,116864
804
804
  numpy/random/c_distributions.pxd,sha256=UCtqx0Nf-vHuJVaqPlLFURWnaI1vH-vJRE01BZDTL9o,6335
805
805
  numpy/random/_pickle.py,sha256=Lt47ma_vnnJHdnQlc5jZ_DqBHsdKi0QiUNaIkMf95qA,2742
806
806
  numpy/random/__init__.pxd,sha256=9JbnX540aJNSothGs-7e23ozhilG6U8tINOUEp08M_k,431
807
- numpy/random/_bounded_integers.cpython-314-darwin.so,sha256=r3Tj5J7GniwPSm4Ok84B8o7O3JcFxo_mz6-TflIcXQU,298600
807
+ numpy/random/_bounded_integers.cpython-314-darwin.so,sha256=zwf0RJq2ehNvp1fezWfG797pjYSgiuTTpL9IbBZ7ezA,298600
808
808
  numpy/random/_common.pyi,sha256=02dQDSAflunmZQFWThDLG3650py_DNqCmxjmkv5_XpA,421
809
809
  numpy/random/__init__.py,sha256=WFzntztUVNaiXCpQln8twyL8HSFNS7XAWJlJsQXgbqk,7480
810
- numpy/random/_pcg64.cpython-314-darwin.so,sha256=UsFh7W0F5-cSs0bM8icidWhaYmS_z2Udut5YUJ-4NtA,134480
810
+ numpy/random/_pcg64.cpython-314-darwin.so,sha256=yHmMNKeJWXkgveiLQyITkO8k35PU_StGKoGpSTw9fC4,134480
811
811
  numpy/random/_philox.pyi,sha256=xFogUASfSHdviqexIf4bGgkzbryir7Tik7z0XQR9xx4,1005
812
- numpy/random/_sfc64.cpython-314-darwin.so,sha256=J7gBQtK-uNhqrObG7QB1rAN6jv_XzH4o6E___-jEy4Y,97824
812
+ numpy/random/_sfc64.cpython-314-darwin.so,sha256=v4vcBHwmQIoUB9PpmoIVYs5QSzNeqKxzeBA-KHkZ9QQ,97824
813
813
  numpy/random/_bounded_integers.pxd,sha256=SH_FwJDigFEInhdliSaNH2H2ZIZoX02xYhNQA81g2-g,1678
814
- numpy/random/_common.cpython-314-darwin.so,sha256=D8H0_ktBMrYWjWdJ0dR7_mAMuL1WEjLjGxLfg8jtl58,235488
815
- numpy/random/mtrand.cpython-314-darwin.so,sha256=DweKS-3pS72yzLdZ6pbLhHZbtXXdpEumcKBINMSfcI0,663344
814
+ numpy/random/_common.cpython-314-darwin.so,sha256=NkSJ29d1UUC_OrOz8SeHd1VwisaH_glf3yULbxjBAWU,235488
815
+ numpy/random/mtrand.cpython-314-darwin.so,sha256=zICdiKxEicKB_AyWMwjMiv841SfTTGyV338nszbrxyI,663344
816
816
  numpy/random/_mt19937.pyi,sha256=ZjOCfOQb1KLDywy8ZHy8pQb1C-DZvStqYK3OOB6rETo,775
817
817
  numpy/random/bit_generator.pyi,sha256=tX5lVJDp6J5bNzflo-1rNylceD30oDBYtbiYVA1cWOY,3604
818
818
  numpy/random/_sfc64.pyi,sha256=wRrbkEGLNhjXa7-LyGNtO5El9c8B_hNRQqF0Kmv6hQM,682
@@ -820,7 +820,7 @@ numpy/random/_pickle.pyi,sha256=5obQY7CZRLMDjOgRtNgzV_Bg5O9E8DK_G74j7J7q6qo,1608
820
820
  numpy/random/bit_generator.pxd,sha256=lArpIXSgTwVnJMYc4XX0NGxegXq3h_QsUDK6qeZKbNc,1007
821
821
  numpy/random/mtrand.pyi,sha256=Ds2d-DloxUUE2wNNMA1w6oqqPsgBilkaRMCLioBTiJA,22687
822
822
  numpy/random/_bounded_integers.pyi,sha256=juqd9PbXs4yg45zMJ7BHAOPQjb7sgEbWE9InBtGZhfo,24
823
- numpy/random/_generator.cpython-314-darwin.so,sha256=4BMMV7N3ZV2xfOJFpvQWyUh7Z2kWHEra-IeoqYAjCHQ,807488
823
+ numpy/random/_generator.cpython-314-darwin.so,sha256=THcTRmxRNfrCWgkGrTe5N2PxsOT_WGxtpjWFtfThdJ4,807488
824
824
  numpy/random/tests/test_generator_mt19937.py,sha256=X0AEzi3xy6FzyTpTZNT_lXyXS_LWOWFYc9nZ6QtkILQ,117812
825
825
  numpy/random/tests/test_randomstate.py,sha256=WbZBpZplBlgmhWKXNsj7d0Zw0BHJ2nxEerMRnuwyYnE,85749
826
826
  numpy/random/tests/test_direct.py,sha256=-ugW0cpuYhFSGVDtAbpEy_uFk-cG0JKFpPpQMDyFJh4,19919
@@ -846,7 +846,7 @@ numpy/random/tests/data/pcg64-testset-1.csv,sha256=xB00DpknGUTTCxDr9L6aNo9Hs-sfz
846
846
  numpy/random/tests/data/pcg64-testset-2.csv,sha256=NTdzTKvG2U7_WyU_IoQUtMzU3kEvDH39CgnR6VzhTkw,23845
847
847
  numpy/random/tests/data/pcg64dxsm-testset-1.csv,sha256=vNSUT-gXS_oEw_awR3O30ziVO4seNPUv1UIZ01SfVnI,23833
848
848
  numpy/random/tests/data/pcg64dxsm-testset-2.csv,sha256=uylS8PU2AIKZ185OC04RBr_OePweGRtvn-dE4YN0yYA,23839
849
- numpy/random/lib/libnpyrandom.a,sha256=hsI5kpLjqszoSZDzQqnDB3hxNULTUrEUtPhujYMpuho,55288
849
+ numpy/random/lib/libnpyrandom.a,sha256=3X0VFYUbV8yLFJpFdcuG7914xoVHg7E5CgbLrvjo4RE,55288
850
850
  numpy/random/_examples/cffi/parse.py,sha256=PK9vdUxwmvdnFvH3rOpgnnpISwnid7ri5XOmBrMWpJw,1750
851
851
  numpy/random/_examples/cffi/extending.py,sha256=jpIL1njMhf0nehmlMHkgZkIxns2JC9GEDYgAChX87G8,884
852
852
  numpy/random/_examples/cython/meson.build,sha256=GxZZT_Lu3nZsgcqo_7sTR_IdMJaHA1fxyjwrQTcodPs,1694
File without changes