summaryrefslogtreecommitdiff
path: root/dev-python/jsonpickle/files/jsonpickle-3.2.1-numpy-2.patch
blob: 6fdc989d990ec73e6702c4f244e36046f4391465 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
From 0ab3cf0ffcdb364a8a75e71acfb267e5aaabc0a0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Mon, 10 Jun 2024 03:55:47 +0200
Subject: [PATCH 1/2] Fix data types in tests for NumPy 2

Fix a number of test compatibility issues with NumPy 2.  That is:

- replace `np.float_` with `np.float64`,
- replace `np.complex_` with `np.complex128`,
- remove `np.unicode_` as equivalent to `np.str_`.

The LHS types are also aliases to the RHS types in NumPy 1.x, so this
is NFC on NumPy 1.x.  These aliases were removed in 2.x, so the code
needs to be updated for tests to pass on NumPy 2.x.
---
 tests/numpy_test.py  |  7 ++-----
 tests/pandas_test.py | 13 +++++--------
 2 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/tests/numpy_test.py b/tests/numpy_test.py
index e271725..dd50d5e 100644
--- a/tests/numpy_test.py
+++ b/tests/numpy_test.py
@@ -32,9 +32,7 @@ def test_dtype_roundtrip():
     dtypes = [
         np.int_,
         np.int32,
-        np.float_,
         np.float64,
-        np.complex_,
         np.complex128,
         np.str_,
         np.object_,
@@ -86,15 +84,14 @@ def test_generic_roundtrip():
     values = [
         np.int_(1),
         np.int32(-2),
-        np.float_(2.5),
+        np.float64(2.5),
         np.nan,
         -np.inf,
         np.inf,
         np.datetime64('2014-01-01'),
         np.str_('foo'),
-        np.unicode_('bar'),
         np.object_({'a': 'b'}),
-        np.complex_(1 - 2j),
+        np.complex128(1 - 2j),
     ]
     for value in values:
         decoded = roundtrip(value)
diff --git a/tests/pandas_test.py b/tests/pandas_test.py
index 532563f..414bd65 100644
--- a/tests/pandas_test.py
+++ b/tests/pandas_test.py
@@ -34,14 +34,13 @@ def test_series_roundtrip():
     ser = pd.Series(
         {
             'an_int': np.int_(1),
-            'a_float': np.float_(2.5),
+            'a_float': np.float64(2.5),
             'a_nan': np.nan,
             'a_minus_inf': -np.inf,
             'an_inf': np.inf,
             'a_str': np.str_('foo'),
-            'a_unicode': np.unicode_('bar'),
             'date': np.datetime64('2014-01-01'),
-            'complex': np.complex_(1 - 2j),
+            'complex': np.complex128(1 - 2j),
             # TODO: the following dtypes are not currently supported.
             # 'object': np.object_({'a': 'b'}),
         }
@@ -54,14 +53,13 @@ def test_dataframe_roundtrip():
     df = pd.DataFrame(
         {
             'an_int': np.int_([1, 2, 3]),
-            'a_float': np.float_([2.5, 3.5, 4.5]),
+            'a_float': np.float64([2.5, 3.5, 4.5]),
             'a_nan': np.array([np.nan] * 3),
             'a_minus_inf': np.array([-np.inf] * 3),
             'an_inf': np.array([np.inf] * 3),
             'a_str': np.str_('foo'),
-            'a_unicode': np.unicode_('bar'),
             'date': np.array([np.datetime64('2014-01-01')] * 3, dtype="datetime64[s]"),
-            'complex': np.complex_([1 - 2j, 2 - 1.2j, 3 - 1.3j]),
+            'complex': np.complex128([1 - 2j, 2 - 1.2j, 3 - 1.3j]),
             # TODO: the following dtypes are not currently supported.
             # 'object': np.object_([{'a': 'b'}]*3),
         }
@@ -76,12 +74,11 @@ def test_multindex_dataframe_roundtrip():
             'idx_lvl0': ['a', 'b', 'c'],
             'idx_lvl1': np.int_([1, 1, 2]),
             'an_int': np.int_([1, 2, 3]),
-            'a_float': np.float_([2.5, 3.5, 4.5]),
+            'a_float': np.float64([2.5, 3.5, 4.5]),
             'a_nan': np.array([np.nan] * 3),
             'a_minus_inf': np.array([-np.inf] * 3),
             'an_inf': np.array([np.inf] * 3),
             'a_str': np.str_('foo'),
-            'a_unicode': np.unicode_('bar'),
         }
     )
     df = df.set_index(['idx_lvl0', 'idx_lvl1'])

From 8bc2bdd42bc111d90edbcef8005640d5a51627bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Mon, 10 Jun 2024 04:02:17 +0200
Subject: [PATCH 2/2] Fix `newbyteorder()` use for NumPy 2.x

Replace the `arr.newbyteorder()` use with:

    arr.view(arr.dtype.newbyteorder())

as suggested in the exception that's raised when the tests are run
in NumPy 2.x.  With this change, the code works both with NumPy 1.x
and NumPy 2.x.
---
 tests/numpy_test.py | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/tests/numpy_test.py b/tests/numpy_test.py
index dd50d5e..2e6725b 100644
--- a/tests/numpy_test.py
+++ b/tests/numpy_test.py
@@ -306,18 +306,22 @@ def test_immutable():
 def test_byteorder():
     """Test the byteorder for text and binary encodings"""
     # small arr is stored as text
-    a = np.arange(10).newbyteorder()
-    b = a[:].newbyteorder()
-    _a, _b = roundtrip([a, b])
-    npt.assert_array_equal(a, _a)
-    npt.assert_array_equal(b, _b)
+    a = np.arange(10)
+    av = a.view(a.dtype.newbyteorder())
+    b = a[:]
+    bv = b.view(b.dtype.newbyteorder())
+    _av, _bv = roundtrip([av, bv])
+    npt.assert_array_equal(av, _av)
+    npt.assert_array_equal(bv, _bv)
 
     # bigger arr is stored as binary
-    a = np.arange(100).newbyteorder()
-    b = a[:].newbyteorder()
-    _a, _b = roundtrip([a, b])
-    npt.assert_array_equal(a, _a)
-    npt.assert_array_equal(b, _b)
+    a = np.arange(100)
+    av = a.view(a.dtype.newbyteorder())
+    b = a[:]
+    bv = b.view(b.dtype.newbyteorder())
+    _av, _bv = roundtrip([av, bv])
+    npt.assert_array_equal(av, _av)
+    npt.assert_array_equal(bv, _bv)
 
 
 def test_zero_dimensional_array():