Skip to content

Commit 449bc10

Browse files
committed
updates to np.array processing
1 parent 8545513 commit 449bc10

File tree

3 files changed

+64
-3
lines changed

3 files changed

+64
-3
lines changed

tests/compliance/date/test_date_compliance.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,23 @@ class TestIndex(base.BaseIndexTests):
7171

7272

7373
class TestInterface(base.BaseInterfaceTests):
74-
pass
74+
def test_array_interface_copy(self, data):
75+
import numpy as np
76+
import warnings
77+
from pandas.compat.numpy import np_version_gt2
78+
79+
result_copy1 = np.array(data, copy=True)
80+
result_copy2 = np.array(data, copy=True)
81+
assert not np.may_share_memory(result_copy1, result_copy2)
82+
83+
if not np_version_gt2:
84+
# copy=False semantics are only supported in NumPy>=2.
85+
return
7586

87+
with pytest.raises(ValueError):
88+
result_nocopy1 = np.array(data, copy=False)
89+
result_nocopy2 = np.array(data, copy=False)
90+
assert np.may_share_memory(result_nocopy1, result_nocopy2)
7691

7792
class TestMissing(base.BaseMissingTests):
7893
pass

tests/compliance/json/test_json_compliance.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,23 @@ def test_array_interface(self, data):
143143
def test_view(self, data):
144144
super().test_view(data)
145145

146+
def test_array_interface_copy(self, data):
147+
import numpy as np
148+
import warnings
149+
from pandas.compat.numpy import np_version_gt2
150+
151+
result_copy1 = np.array(data, copy=True)
152+
result_copy2 = np.array(data, copy=True)
153+
assert not np.may_share_memory(result_copy1, result_copy2)
154+
155+
if not np_version_gt2:
156+
# copy=False semantics are only supported in NumPy>=2.
157+
return
158+
159+
result_nocopy1 = np.array(data, copy=False)
160+
result_nocopy2 = np.array(data, copy=False)
161+
assert not np.may_share_memory(result_nocopy1, result_nocopy2)
162+
146163

147164
class TestJSONArrayParsing(base.BaseParsingTests):
148165
@pytest.mark.xfail(reason="data type 'json' not understood")
@@ -264,7 +281,20 @@ class TestJSONArrayPrinting(base.BasePrintingTests):
264281

265282

266283
class TestJSONArrayReduce(base.BaseReduceTests):
267-
pass
284+
@pytest.mark.filterwarnings("ignore::RuntimeWarning")
285+
@pytest.mark.parametrize("skipna", [True, False])
286+
def test_reduce_series_numeric(self, data, all_numeric_reductions, skipna):
287+
op_name = all_numeric_reductions
288+
ser = pd.Series(data)
289+
290+
if not self._supports_reduction(ser, op_name):
291+
# Sum does not raise an Error (TypeError or otherwise)
292+
if op_name != "sum":
293+
with pytest.raises(TypeError):
294+
getattr(ser, op_name)(skipna=skipna)
295+
else:
296+
# min/max with empty produce numpy warnings
297+
self.check_reduce(ser, op_name, skipna)
268298

269299

270300
class TestJSONArrayReshaping(base.BaseReshapingTests):

tests/compliance/time/test_time_compliance.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,23 @@ class TestIndex(base.BaseIndexTests):
7676

7777

7878
class TestInterface(base.BaseInterfaceTests):
79-
pass
79+
def test_array_interface_copy(self, data):
80+
import numpy as np
81+
import warnings
82+
from pandas.compat.numpy import np_version_gt2
83+
84+
result_copy1 = np.array(data, copy=True)
85+
result_copy2 = np.array(data, copy=True)
86+
assert not np.may_share_memory(result_copy1, result_copy2)
87+
88+
if not np_version_gt2:
89+
# copy=False semantics are only supported in NumPy>=2.
90+
return
91+
92+
with pytest.raises(ValueError):
93+
result_nocopy1 = np.array(data, copy=False)
94+
result_nocopy2 = np.array(data, copy=False)
95+
assert np.may_share_memory(result_nocopy1, result_nocopy2)
8096

8197

8298
class TestMissing(base.BaseMissingTests):

0 commit comments

Comments
 (0)