287 lines
7.8 KiB
Diff
287 lines
7.8 KiB
Diff
From efc78eb26886e59a303a280466c4837e1671890f Mon Sep 17 00:00:00 2001
|
|
From: Jasper Phelps <jasper.s.phelps@gmail.com>
|
|
Date: Mon, 1 Jul 2024 18:01:33 +0200
|
|
Subject: [PATCH] Grant basic compatibility with numpy2.0.0
|
|
|
|
This commit includes the results of running
|
|
`ruff check --select NPY201 --fix` on the code in this repo,
|
|
plus the removal of `np.{dtype}0` aliases that currently aren't
|
|
caught by the NPY201 ruff rule (see
|
|
https://github.com/numpy/numpy/issues/26800 where this is mentioned)
|
|
plus removing the `numpy<2.0.0` pin from `requirements.txt`.
|
|
After this commit, `import nptyping` succeeds in an environment with
|
|
`numpy==2.0.0`. No additional testing has been done at this time,
|
|
and additional changes could very well be necessary before nptyping
|
|
is fully compatible with numpy2.0.0. But this should be a start!
|
|
---
|
|
dependencies/requirements.txt | 2 +-
|
|
nptyping/__init__.py | 14 --------------
|
|
nptyping/typing_.py | 32 +++++++++-----------------------
|
|
nptyping/typing_.pyi | 18 +++++++++---------
|
|
tests/test_ndarray.py | 2 +-
|
|
5 files changed, 20 insertions(+), 48 deletions(-)
|
|
|
|
diff --git a/dependencies/requirements.txt b/dependencies/requirements.txt
|
|
index 14a87b7..8a6f6b6 100644
|
|
--- a/dependencies/requirements.txt
|
|
+++ b/dependencies/requirements.txt
|
|
@@ -1,3 +1,3 @@
|
|
numpy==1.21.5; python_version<'3.8'
|
|
-numpy>=1.20.0,<2.0.0; python_version>='3.8'
|
|
+numpy>=1.20.0; python_version>='3.8'
|
|
typing_extensions>=4.0.0,<5.0.0; python_version<'3.10'
|
|
diff --git a/nptyping/__init__.py b/nptyping/__init__.py
|
|
index 5fd5b2c..feb5f12 100644
|
|
--- a/nptyping/__init__.py
|
|
+++ b/nptyping/__init__.py
|
|
@@ -41,10 +41,8 @@
|
|
from nptyping.structure import Structure
|
|
from nptyping.typing_ import (
|
|
Bool,
|
|
- Bool8,
|
|
Byte,
|
|
Bytes,
|
|
- Bytes0,
|
|
CDouble,
|
|
CFloat,
|
|
Character,
|
|
@@ -67,7 +65,6 @@
|
|
Half,
|
|
Inexact,
|
|
Int,
|
|
- Int0,
|
|
Int8,
|
|
Int16,
|
|
Int32,
|
|
@@ -81,17 +78,14 @@
|
|
LongLong,
|
|
Number,
|
|
Object,
|
|
- Object0,
|
|
Short,
|
|
SignedInteger,
|
|
Single,
|
|
SingleComplex,
|
|
- Str0,
|
|
String,
|
|
Timedelta64,
|
|
UByte,
|
|
UInt,
|
|
- UInt0,
|
|
UInt8,
|
|
UInt16,
|
|
UInt32,
|
|
@@ -103,7 +97,6 @@
|
|
UnsignedInteger,
|
|
UShort,
|
|
Void,
|
|
- Void0,
|
|
)
|
|
|
|
__all__ = [
|
|
@@ -123,9 +116,7 @@
|
|
"DType",
|
|
"Number",
|
|
"Bool",
|
|
- "Bool8",
|
|
"Object",
|
|
- "Object0",
|
|
"Datetime64",
|
|
"Integer",
|
|
"SignedInteger",
|
|
@@ -137,7 +128,6 @@
|
|
"Short",
|
|
"IntC",
|
|
"IntP",
|
|
- "Int0",
|
|
"Int",
|
|
"LongLong",
|
|
"Timedelta64",
|
|
@@ -150,7 +140,6 @@
|
|
"UShort",
|
|
"UIntC",
|
|
"UIntP",
|
|
- "UInt0",
|
|
"UInt",
|
|
"ULongLong",
|
|
"Inexact",
|
|
@@ -177,12 +166,9 @@
|
|
"LongComplex",
|
|
"Flexible",
|
|
"Void",
|
|
- "Void0",
|
|
"Character",
|
|
"Bytes",
|
|
"String",
|
|
- "Bytes0",
|
|
"Unicode",
|
|
- "Str0",
|
|
"DataFrame",
|
|
]
|
|
diff --git a/nptyping/typing_.py b/nptyping/typing_.py
|
|
index 2639e07..e40126e 100644
|
|
--- a/nptyping/typing_.py
|
|
+++ b/nptyping/typing_.py
|
|
@@ -48,10 +48,8 @@
|
|
|
|
Number = np.number
|
|
Bool = np.bool_
|
|
-Bool8 = np.bool8
|
|
Obj = np.object_ # Obj is a common abbreviation and should be usable.
|
|
Object = np.object_
|
|
-Object0 = np.object0
|
|
Datetime64 = np.datetime64
|
|
Integer = np.integer
|
|
SignedInteger = np.signedinteger
|
|
@@ -63,7 +61,6 @@
|
|
Short = np.short
|
|
IntC = np.intc
|
|
IntP = np.intp
|
|
-Int0 = np.int0
|
|
Int = np.integer # Int should translate to the "generic" int type.
|
|
Int_ = np.int_
|
|
LongLong = np.longlong
|
|
@@ -77,7 +74,6 @@
|
|
UShort = np.ushort
|
|
UIntC = np.uintc
|
|
UIntP = np.uintp
|
|
-UInt0 = np.uint0
|
|
UInt = np.uint
|
|
ULongLong = np.ulonglong
|
|
Inexact = np.inexact
|
|
@@ -88,38 +84,33 @@
|
|
Half = np.half
|
|
Single = np.single
|
|
Double = np.double
|
|
-Float = np.float_
|
|
+Float = np.float64
|
|
LongDouble = np.longdouble
|
|
-LongFloat = np.longfloat
|
|
+LongFloat = np.longdouble
|
|
ComplexFloating = np.complexfloating
|
|
Complex64 = np.complex64
|
|
Complex128 = np.complex128
|
|
CSingle = np.csingle
|
|
-SingleComplex = np.singlecomplex
|
|
+SingleComplex = np.complex64
|
|
CDouble = np.cdouble
|
|
-Complex = np.complex_
|
|
-CFloat = np.cfloat
|
|
+Complex = np.complex128
|
|
+CFloat = np.complex128
|
|
CLongDouble = np.clongdouble
|
|
-CLongFloat = np.clongfloat
|
|
-LongComplex = np.longcomplex
|
|
+CLongFloat = np.clongdouble
|
|
+LongComplex = np.clongdouble
|
|
Flexible = np.flexible
|
|
Void = np.void
|
|
-Void0 = np.void0
|
|
Character = np.character
|
|
Bytes = np.bytes_
|
|
Str = np.str_
|
|
-String = np.string_
|
|
-Bytes0 = np.bytes0
|
|
-Unicode = np.unicode_
|
|
-Str0 = np.str0
|
|
+String = np.bytes_
|
|
+Unicode = np.str_
|
|
|
|
dtypes = [
|
|
(Number, "Number"),
|
|
(Bool, "Bool"),
|
|
- (Bool8, "Bool8"),
|
|
(Obj, "Obj"),
|
|
(Object, "Object"),
|
|
- (Object0, "Object0"),
|
|
(Datetime64, "Datetime64"),
|
|
(Integer, "Integer"),
|
|
(SignedInteger, "SignedInteger"),
|
|
@@ -131,7 +122,6 @@
|
|
(Short, "Short"),
|
|
(IntC, "IntC"),
|
|
(IntP, "IntP"),
|
|
- (Int0, "Int0"),
|
|
(Int, "Int"),
|
|
(LongLong, "LongLong"),
|
|
(Timedelta64, "Timedelta64"),
|
|
@@ -144,7 +134,6 @@
|
|
(UShort, "UShort"),
|
|
(UIntC, "UIntC"),
|
|
(UIntP, "UIntP"),
|
|
- (UInt0, "UInt0"),
|
|
(UInt, "UInt"),
|
|
(ULongLong, "ULongLong"),
|
|
(Inexact, "Inexact"),
|
|
@@ -171,14 +160,11 @@
|
|
(LongComplex, "LongComplex"),
|
|
(Flexible, "Flexible"),
|
|
(Void, "Void"),
|
|
- (Void0, "Void0"),
|
|
(Character, "Character"),
|
|
(Bytes, "Bytes"),
|
|
(String, "String"),
|
|
(Str, "Str"),
|
|
- (Bytes0, "Bytes0"),
|
|
(Unicode, "Unicode"),
|
|
- (Str0, "Str0"),
|
|
]
|
|
|
|
name_per_dtype = dict(dtypes)
|
|
diff --git a/nptyping/typing_.pyi b/nptyping/typing_.pyi
|
|
index fcf83ce..157641a 100644
|
|
--- a/nptyping/typing_.pyi
|
|
+++ b/nptyping/typing_.pyi
|
|
@@ -85,29 +85,29 @@ Float64: TypeAlias = np.dtype[np.float64]
|
|
Half: TypeAlias = np.dtype[np.half]
|
|
Single: TypeAlias = np.dtype[np.single]
|
|
Double: TypeAlias = np.dtype[np.double]
|
|
-Float: TypeAlias = np.dtype[np.float_]
|
|
+Float: TypeAlias = np.dtype[np.float64]
|
|
LongDouble: TypeAlias = np.dtype[np.longdouble]
|
|
-LongFloat: TypeAlias = np.dtype[np.longfloat]
|
|
+LongFloat: TypeAlias = np.dtype[np.longdouble]
|
|
ComplexFloating: TypeAlias = np.dtype[np.complexfloating[Any, Any]]
|
|
Complex64: TypeAlias = np.dtype[np.complex64]
|
|
Complex128: TypeAlias = np.dtype[np.complex128]
|
|
CSingle: TypeAlias = np.dtype[np.csingle]
|
|
-SingleComplex: TypeAlias = np.dtype[np.singlecomplex]
|
|
+SingleComplex: TypeAlias = np.dtype[np.complex64]
|
|
CDouble: TypeAlias = np.dtype[np.cdouble]
|
|
-Complex: TypeAlias = np.dtype[np.complex_]
|
|
-CFloat: TypeAlias = np.dtype[np.cfloat]
|
|
+Complex: TypeAlias = np.dtype[np.complex128]
|
|
+CFloat: TypeAlias = np.dtype[np.complex128]
|
|
CLongDouble: TypeAlias = np.dtype[np.clongdouble]
|
|
-CLongFloat: TypeAlias = np.dtype[np.clongfloat]
|
|
-LongComplex: TypeAlias = np.dtype[np.longcomplex]
|
|
+CLongFloat: TypeAlias = np.dtype[np.clongdouble]
|
|
+LongComplex: TypeAlias = np.dtype[np.clongdouble]
|
|
Flexible: TypeAlias = np.dtype[np.flexible]
|
|
Void: TypeAlias = np.dtype[np.void]
|
|
Void0: TypeAlias = np.dtype[np.void0]
|
|
Character: TypeAlias = np.dtype[np.character]
|
|
Bytes: TypeAlias = np.dtype[np.bytes_]
|
|
Str: TypeAlias = np.dtype[np.str_]
|
|
-String: TypeAlias = np.dtype[np.string_]
|
|
+String: TypeAlias = np.dtype[np.bytes_]
|
|
Bytes0: TypeAlias = np.dtype[np.bytes0]
|
|
-Unicode: TypeAlias = np.dtype[np.unicode_]
|
|
+Unicode: TypeAlias = np.dtype[np.str_]
|
|
Str0: TypeAlias = np.dtype[np.str0]
|
|
|
|
dtype_per_name: Dict[str, np.dtype[Any]]
|
|
diff --git a/tests/test_ndarray.py b/tests/test_ndarray.py
|
|
index f4f7676..c957e19 100644
|
|
--- a/tests/test_ndarray.py
|
|
+++ b/tests/test_ndarray.py
|
|
@@ -264,7 +264,7 @@ def test_str(self):
|
|
|
|
def test_types_with_numpy_dtypes(self):
|
|
self.assertIsInstance(np.array([42]), NDArray[Any, np.int_])
|
|
- self.assertIsInstance(np.array([42.0]), NDArray[Any, np.float_])
|
|
+ self.assertIsInstance(np.array([42.0]), NDArray[Any, np.float64])
|
|
self.assertIsInstance(np.array([np.uint8(42)]), NDArray[Any, np.uint8])
|
|
self.assertIsInstance(np.array([True]), NDArray[Any, np.bool_])
|
|
|