Skip to content

Commit bf248a1

Browse files
authored
TST: Simplify tests, remove unnecessary minversions (#55871)
* Remove unnecessary minversion * Create MI instead of using stack * Use _SIZE_CUTOFF in test_integrity * Reduce data size of test_left_join_multi_index * Split and reduce data size of pandas/tests/groupby/test_filters.py * test test_engine_reference_cycle via weakref instead of gc
1 parent 51f3d03 commit bf248a1

File tree

10 files changed

+65
-48
lines changed

10 files changed

+65
-48
lines changed

pandas/tests/arrays/masked/test_arrow_compat.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import pandas as pd
55
import pandas._testing as tm
66

7-
pa = pytest.importorskip("pyarrow", minversion="1.0.1")
7+
pa = pytest.importorskip("pyarrow")
88

99
from pandas.core.arrays.arrow._arrow_utils import pyarrow_array_to_numpy_and_mask
1010

pandas/tests/arrays/string_/test_string_arrow.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def test_constructor_valid_string_type_value_dictionary(chunked):
9595

9696
def test_constructor_from_list():
9797
# GH#27673
98-
pytest.importorskip("pyarrow", minversion="1.0.0")
98+
pytest.importorskip("pyarrow")
9999
result = pd.Series(["E"], dtype=StringDtype(storage="pyarrow"))
100100
assert isinstance(result.dtype, StringDtype)
101101
assert result.dtype.storage == "pyarrow"

pandas/tests/extension/test_arrow.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
)
6161
from pandas.tests.extension import base
6262

63-
pa = pytest.importorskip("pyarrow", minversion="10.0.1")
63+
pa = pytest.importorskip("pyarrow")
6464

6565
from pandas.core.arrays.arrow.array import ArrowExtensionArray
6666
from pandas.core.arrays.arrow.extension_types import ArrowPeriodType

pandas/tests/groupby/test_filters.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,9 @@ def test_filter_pdna_is_false():
190190
tm.assert_series_equal(res, ser[[]])
191191

192192

193-
def test_filter_against_workaround():
193+
def test_filter_against_workaround_ints():
194194
# Series of ints
195-
s = Series(np.random.default_rng(2).integers(0, 100, 1000))
195+
s = Series(np.random.default_rng(2).integers(0, 100, 100))
196196
grouper = s.apply(lambda x: np.round(x, -1))
197197
grouped = s.groupby(grouper)
198198
f = lambda x: x.mean() > 10
@@ -201,18 +201,22 @@ def test_filter_against_workaround():
201201
new_way = grouped.filter(f)
202202
tm.assert_series_equal(new_way.sort_values(), old_way.sort_values())
203203

204+
205+
def test_filter_against_workaround_floats():
204206
# Series of floats
205-
s = 100 * Series(np.random.default_rng(2).random(1000))
207+
s = 100 * Series(np.random.default_rng(2).random(100))
206208
grouper = s.apply(lambda x: np.round(x, -1))
207209
grouped = s.groupby(grouper)
208210
f = lambda x: x.mean() > 10
209211
old_way = s[grouped.transform(f).astype("bool")]
210212
new_way = grouped.filter(f)
211213
tm.assert_series_equal(new_way.sort_values(), old_way.sort_values())
212214

215+
216+
def test_filter_against_workaround_dataframe():
213217
# Set up DataFrame of ints, floats, strings.
214218
letters = np.array(list(ascii_lowercase))
215-
N = 1000
219+
N = 100
216220
random_letters = letters.take(
217221
np.random.default_rng(2).integers(0, 26, N, dtype=int)
218222
)

pandas/tests/indexes/datetimes/test_partial_slicing.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
DataFrame,
1010
DatetimeIndex,
1111
Index,
12+
MultiIndex,
1213
Series,
1314
Timedelta,
1415
Timestamp,
@@ -360,10 +361,12 @@ def test_partial_slicing_with_multiindex(self):
360361
def test_partial_slicing_with_multiindex_series(self):
361362
# GH 4294
362363
# partial slice on a series mi
363-
ser = DataFrame(
364-
np.random.default_rng(2).random((1000, 1000)),
365-
index=date_range("2000-1-1", periods=1000),
366-
).stack(future_stack=True)
364+
ser = Series(
365+
range(250),
366+
index=MultiIndex.from_product(
367+
[date_range("2000-1-1", periods=50), range(5)]
368+
),
369+
)
367370

368371
s2 = ser[:-1].copy()
369372
expected = s2["2000-1-4"]

pandas/tests/indexes/multi/test_integrity.py

+34-25
Original file line numberDiff line numberDiff line change
@@ -125,18 +125,20 @@ def test_consistency():
125125

126126

127127
@pytest.mark.slow
128-
def test_hash_collisions():
128+
def test_hash_collisions(monkeypatch):
129129
# non-smoke test that we don't get hash collisions
130+
size_cutoff = 50
131+
with monkeypatch.context() as m:
132+
m.setattr(libindex, "_SIZE_CUTOFF", size_cutoff)
133+
index = MultiIndex.from_product(
134+
[np.arange(8), np.arange(8)], names=["one", "two"]
135+
)
136+
result = index.get_indexer(index.values)
137+
tm.assert_numpy_array_equal(result, np.arange(len(index), dtype="intp"))
130138

131-
index = MultiIndex.from_product(
132-
[np.arange(1000), np.arange(1000)], names=["one", "two"]
133-
)
134-
result = index.get_indexer(index.values)
135-
tm.assert_numpy_array_equal(result, np.arange(len(index), dtype="intp"))
136-
137-
for i in [0, 1, len(index) - 2, len(index) - 1]:
138-
result = index.get_loc(index[i])
139-
assert result == i
139+
for i in [0, 1, len(index) - 2, len(index) - 1]:
140+
result = index.get_loc(index[i])
141+
assert result == i
140142

141143

142144
def test_dims():
@@ -170,22 +172,29 @@ def test_isna_behavior(idx):
170172
pd.isna(idx)
171173

172174

173-
def test_large_multiindex_error():
175+
def test_large_multiindex_error(monkeypatch):
174176
# GH12527
175-
df_below_1000000 = pd.DataFrame(
176-
1, index=MultiIndex.from_product([[1, 2], range(499999)]), columns=["dest"]
177-
)
178-
with pytest.raises(KeyError, match=r"^\(-1, 0\)$"):
179-
df_below_1000000.loc[(-1, 0), "dest"]
180-
with pytest.raises(KeyError, match=r"^\(3, 0\)$"):
181-
df_below_1000000.loc[(3, 0), "dest"]
182-
df_above_1000000 = pd.DataFrame(
183-
1, index=MultiIndex.from_product([[1, 2], range(500001)]), columns=["dest"]
184-
)
185-
with pytest.raises(KeyError, match=r"^\(-1, 0\)$"):
186-
df_above_1000000.loc[(-1, 0), "dest"]
187-
with pytest.raises(KeyError, match=r"^\(3, 0\)$"):
188-
df_above_1000000.loc[(3, 0), "dest"]
177+
size_cutoff = 50
178+
with monkeypatch.context() as m:
179+
m.setattr(libindex, "_SIZE_CUTOFF", size_cutoff)
180+
df_below_cutoff = pd.DataFrame(
181+
1,
182+
index=MultiIndex.from_product([[1, 2], range(size_cutoff - 1)]),
183+
columns=["dest"],
184+
)
185+
with pytest.raises(KeyError, match=r"^\(-1, 0\)$"):
186+
df_below_cutoff.loc[(-1, 0), "dest"]
187+
with pytest.raises(KeyError, match=r"^\(3, 0\)$"):
188+
df_below_cutoff.loc[(3, 0), "dest"]
189+
df_above_cutoff = pd.DataFrame(
190+
1,
191+
index=MultiIndex.from_product([[1, 2], range(size_cutoff + 1)]),
192+
columns=["dest"],
193+
)
194+
with pytest.raises(KeyError, match=r"^\(-1, 0\)$"):
195+
df_above_cutoff.loc[(-1, 0), "dest"]
196+
with pytest.raises(KeyError, match=r"^\(3, 0\)$"):
197+
df_above_cutoff.loc[(3, 0), "dest"]
189198

190199

191200
def test_mi_hashtable_populated_attribute_error(monkeypatch):

pandas/tests/indexes/test_old_base.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
from datetime import datetime
4-
import gc
4+
import weakref
55

66
import numpy as np
77
import pytest
@@ -744,10 +744,11 @@ def test_is_unique(self, simple_index):
744744
@pytest.mark.arm_slow
745745
def test_engine_reference_cycle(self, simple_index):
746746
# GH27585
747-
index = simple_index
748-
nrefs_pre = len(gc.get_referrers(index))
747+
index = simple_index.copy()
748+
ref = weakref.ref(index)
749749
index._engine
750-
assert len(gc.get_referrers(index)) == nrefs_pre
750+
del index
751+
assert ref() is None
751752

752753
def test_getitem_2d_deprecated(self, simple_index):
753754
# GH#30588, GH#31479

pandas/tests/io/conftest.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def s3_base(worker_id, monkeysession):
9696
yield "http://localhost:5000"
9797
else:
9898
requests = pytest.importorskip("requests")
99-
pytest.importorskip("moto", minversion="1.3.14")
99+
pytest.importorskip("moto")
100100
pytest.importorskip("flask") # server mode needs flask too
101101

102102
# Launching moto in server mode, i.e., as a separate process

pandas/tests/reshape/merge/test_multi.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def test_left_join_multi_index(self, sort):
9595
def bind_cols(df):
9696
iord = lambda a: 0 if a != a else ord(a)
9797
f = lambda ts: ts.map(iord) - ord("a")
98-
return f(df["1st"]) + f(df["3rd"]) * 1e2 + df["2nd"].fillna(0) * 1e4
98+
return f(df["1st"]) + f(df["3rd"]) * 1e2 + df["2nd"].fillna(0) * 10
9999

100100
def run_asserts(left, right, sort):
101101
res = left.join(right, on=icols, how="left", sort=sort)
@@ -119,13 +119,13 @@ def run_asserts(left, right, sort):
119119

120120
lc = list(map(chr, np.arange(ord("a"), ord("z") + 1)))
121121
left = DataFrame(
122-
np.random.default_rng(2).choice(lc, (5000, 2)), columns=["1st", "3rd"]
122+
np.random.default_rng(2).choice(lc, (50, 2)), columns=["1st", "3rd"]
123123
)
124124
# Explicit cast to float to avoid implicit cast when setting nan
125125
left.insert(
126126
1,
127127
"2nd",
128-
np.random.default_rng(2).integers(0, 1000, len(left)).astype("float"),
128+
np.random.default_rng(2).integers(0, 10, len(left)).astype("float"),
129129
)
130130

131131
i = np.random.default_rng(2).permutation(len(left))
@@ -138,9 +138,9 @@ def run_asserts(left, right, sort):
138138
run_asserts(left, right, sort)
139139

140140
# inject some nulls
141-
left.loc[1::23, "1st"] = np.nan
142-
left.loc[2::37, "2nd"] = np.nan
143-
left.loc[3::43, "3rd"] = np.nan
141+
left.loc[1::4, "1st"] = np.nan
142+
left.loc[2::5, "2nd"] = np.nan
143+
left.loc[3::6, "3rd"] = np.nan
144144
left["4th"] = bind_cols(left)
145145

146146
i = np.random.default_rng(2).permutation(len(left))

pandas/tests/test_downstream.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def test_xarray(df):
100100
def test_xarray_cftimeindex_nearest():
101101
# https://github.com/pydata/xarray/issues/3751
102102
cftime = pytest.importorskip("cftime")
103-
xarray = pytest.importorskip("xarray", minversion="0.21.0")
103+
xarray = pytest.importorskip("xarray")
104104

105105
times = xarray.cftime_range("0001", periods=2)
106106
key = cftime.DatetimeGregorian(2000, 1, 1)

0 commit comments

Comments
 (0)