summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authorSebastian Berg <sebastian@sipsolutions.net>2022-06-29 08:15:15 -0700
committerSebastian Berg <sebastianb@nvidia.com>2022-10-12 10:41:40 +0200
commit89cfcf0a31f07dfd33dd0b462619e7202d807b6b (patch)
treea3fd999aedcf2e5ee3cf7e0380d5a5396decb46f /numpy
parent0a0f96fe86cea5009730def695c27b5a334bd6c1 (diff)
downloadnumpy-89cfcf0a31f07dfd33dd0b462619e7202d807b6b.tar.gz
MAINT: Use Python integers for int to array of uint32 calculation
The new weak promotion preserves the original type, this makes the `//= 2**32` fail for certain inputs. The alternative would be typing that as `np.int64(2**32)`, but using Python integers seems easier and cleaner. The code was effectively OK before, since the inputs were guaranteed signed (or Python integers) at that point and 2**32 would have been considered like a NumPy `int64`. (Which would be an alternative fix.)
Diffstat (limited to 'numpy')
-rw-r--r--numpy/random/bit_generator.pyx8
1 files changed, 4 insertions, 4 deletions
diff --git a/numpy/random/bit_generator.pyx b/numpy/random/bit_generator.pyx
index c698f6b61..3da4fabce 100644
--- a/numpy/random/bit_generator.pyx
+++ b/numpy/random/bit_generator.pyx
@@ -68,12 +68,12 @@ def _int_to_uint32_array(n):
raise ValueError("expected non-negative integer")
if n == 0:
arr.append(np.uint32(n))
- if isinstance(n, np.unsignedinteger):
- # Cannot do n & MASK32, convert to python int
- n = int(n)
+
+ # NumPy ints may not like `n & MASK32` or ``//= 2**32` so use Python int
+ n = int(n)
while n > 0:
arr.append(np.uint32(n & MASK32))
- n //= (2**32)
+ n //= 2**32
return np.array(arr, dtype=np.uint32)
def _coerce_to_uint32_array(x):