Skip to content

Commit f61e6a6

Browse files
committed
Change tests away from classes; reorder conftest.py
1 parent 92d708c commit f61e6a6

File tree

2 files changed

+144
-144
lines changed

2 files changed

+144
-144
lines changed

pandas/conftest.py

+14-17
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,19 @@ def tz_aware_fixture(request):
248248
return request.param
249249

250250

251-
@pytest.fixture(params=[str, 'str', 'U'])
251+
UNSIGNED_INT_DTYPES = ["uint8", "uint16", "uint32", "uint64"]
252+
SIGNED_INT_DTYPES = [int, "int8", "int16", "int32", "int64"]
253+
ALL_INT_DTYPES = UNSIGNED_INT_DTYPES + SIGNED_INT_DTYPES
254+
255+
FLOAT_DTYPES = [float, "float32", "float64"]
256+
COMPLEX_DTYPES = [complex, "complex64", "complex128"]
257+
STRING_DTYPES = [str, 'str', 'U']
258+
259+
ALL_REAL_DTYPES = FLOAT_DTYPES + ALL_INT_DTYPES
260+
ALL_NUMPY_DTYPES = ALL_REAL_DTYPES + STRING_DTYPES + COMPLEX_DTYPES
261+
262+
263+
@pytest.fixture(params=STRING_DTYPES)
252264
def string_dtype(request):
253265
"""Parametrized fixture for string dtypes.
254266
@@ -259,9 +271,6 @@ def string_dtype(request):
259271
return request.param
260272

261273

262-
FLOAT_DTYPES = [float, "float32", "float64"]
263-
264-
265274
@pytest.fixture(params=FLOAT_DTYPES)
266275
def float_dtype(request):
267276
"""
@@ -274,7 +283,7 @@ def float_dtype(request):
274283
return request.param
275284

276285

277-
@pytest.fixture(params=[complex, "complex64", "complex128"])
286+
@pytest.fixture(params=COMPLEX_DTYPES)
278287
def complex_dtype(request):
279288
"""
280289
Parameterized fixture for complex dtypes.
@@ -286,11 +295,6 @@ def complex_dtype(request):
286295
return request.param
287296

288297

289-
UNSIGNED_INT_DTYPES = ["uint8", "uint16", "uint32", "uint64"]
290-
SIGNED_INT_DTYPES = [int, "int8", "int16", "int32", "int64"]
291-
ALL_INT_DTYPES = UNSIGNED_INT_DTYPES + SIGNED_INT_DTYPES
292-
293-
294298
@pytest.fixture(params=SIGNED_INT_DTYPES)
295299
def sint_dtype(request):
296300
"""
@@ -337,13 +341,6 @@ def any_int_dtype(request):
337341
return request.param
338342

339343

340-
FLOAT_DTYPES = [float, "float32", "float64"]
341-
COMPLEX_DTYPES = [complex, "complex64", "complex128"]
342-
STRING_DTYPES = [str, 'str', 'U']
343-
ALL_REAL_DTYPES = FLOAT_DTYPES + ALL_INT_DTYPES
344-
ALL_NUMPY_DTYPES = ALL_REAL_DTYPES + STRING_DTYPES + COMPLEX_DTYPES
345-
346-
347344
@pytest.fixture(params=ALL_REAL_DTYPES)
348345
def any_real_dtype(request):
349346
"""

pandas/tests/series/test_duplicates.py

+130-127
Original file line numberDiff line numberDiff line change
@@ -10,133 +10,136 @@
1010

1111
from pandas.util.testing import assert_series_equal
1212
import pandas.util.testing as tm
13-
from .common import TestData
14-
15-
16-
class TestSeriesDuplicates(TestData):
17-
18-
def test_value_counts_nunique(self):
19-
20-
# basics.rst doc example
21-
series = Series(np.random.randn(500))
22-
series[20:500] = np.nan
23-
series[10:20] = 5000
24-
result = series.nunique()
25-
assert result == 11
26-
27-
# GH 18051
28-
s = pd.Series(pd.Categorical([]))
29-
assert s.nunique() == 0
30-
s = pd.Series(pd.Categorical([np.nan]))
31-
assert s.nunique() == 0
32-
33-
def test_unique(self):
34-
35-
# 714 also, dtype=float
36-
s = Series([1.2345] * 100)
37-
s[::2] = np.nan
38-
result = s.unique()
39-
assert len(result) == 2
40-
41-
s = Series([1.2345] * 100, dtype='f4')
42-
s[::2] = np.nan
43-
result = s.unique()
44-
assert len(result) == 2
45-
46-
# NAs in object arrays #714
47-
s = Series(['foo'] * 100, dtype='O')
48-
s[::2] = np.nan
49-
result = s.unique()
50-
assert len(result) == 2
51-
52-
# decision about None
53-
s = Series([1, 2, 3, None, None, None], dtype=object)
54-
result = s.unique()
55-
expected = np.array([1, 2, 3, None], dtype=object)
56-
tm.assert_numpy_array_equal(result, expected)
57-
58-
# GH 18051
59-
s = pd.Series(pd.Categorical([]))
60-
tm.assert_categorical_equal(s.unique(), pd.Categorical([]),
61-
check_dtype=False)
62-
s = pd.Series(pd.Categorical([np.nan]))
63-
tm.assert_categorical_equal(s.unique(), pd.Categorical([np.nan]),
64-
check_dtype=False)
65-
66-
def test_unique_data_ownership(self):
67-
# it works! #1807
68-
Series(Series(["a", "c", "b"]).unique()).sort_values()
69-
70-
def test_is_unique(self):
71-
# GH11946
72-
s = Series(np.random.randint(0, 10, size=1000))
73-
assert not s.is_unique
74-
s = Series(np.arange(1000))
75-
assert s.is_unique
76-
77-
def test_is_unique_class_ne(self, capsys):
78-
# GH 20661
79-
class Foo(object):
80-
def __init__(self, val):
81-
self._value = val
82-
83-
def __ne__(self, other):
84-
raise Exception("NEQ not supported")
85-
86-
li = [Foo(i) for i in range(5)]
87-
s = pd.Series(li, index=[i for i in range(5)])
88-
_, err = capsys.readouterr()
89-
s.is_unique
90-
_, err = capsys.readouterr()
91-
assert len(err) == 0
92-
93-
@pytest.mark.parametrize(
94-
'keep, expected',
95-
[
96-
('first', Series([False, False, False, False, True, True, False])),
97-
('last', Series([False, True, True, False, False, False, False])),
98-
(False, Series([False, True, True, False, True, True, False]))
99-
])
100-
def test_drop_duplicates_non_bool(self, any_numpy_dtype, keep, expected):
101-
tc = Series([1, 2, 3, 5, 3, 2, 4], dtype=np.dtype(any_numpy_dtype))
102-
103-
assert_series_equal(tc.duplicated(keep=keep), expected)
104-
assert_series_equal(tc.drop_duplicates(keep=keep), tc[~expected])
105-
sc = tc.copy()
106-
sc.drop_duplicates(keep=keep, inplace=True)
107-
assert_series_equal(sc, tc[~expected])
108-
109-
@pytest.mark.parametrize('keep, expected',
110-
[('first', Series([False, False, True, True])),
111-
('last', Series([True, True, False, False])),
112-
(False, Series([True, True, True, True]))])
113-
def test_drop_duplicates_bool(self, keep, expected):
114-
tc = Series([True, False, True, False])
115-
116-
assert_series_equal(tc.duplicated(keep=keep), expected)
117-
assert_series_equal(tc.drop_duplicates(keep=keep), tc[~expected])
118-
sc = tc.copy()
119-
sc.drop_duplicates(keep=keep, inplace=True)
120-
assert_series_equal(sc, tc[~expected])
121-
122-
@pytest.mark.parametrize('keep, expected', [
123-
('first', Series([False, False, True, False, True], name='name')),
124-
('last', Series([True, True, False, False, False], name='name')),
125-
(False, Series([True, True, True, False, True], name='name'))
126-
])
127-
def test_duplicated_keep(self, keep, expected):
128-
s = Series(['a', 'b', 'b', 'c', 'a'], name='name')
12913

130-
result = s.duplicated(keep=keep)
131-
tm.assert_series_equal(result, expected)
13214

133-
@pytest.mark.parametrize('keep, expected', [
134-
('first', Series([False, False, True, False, True])),
135-
('last', Series([True, True, False, False, False])),
136-
(False, Series([True, True, True, False, True]))
15+
def test_value_counts_nunique():
16+
# basics.rst doc example
17+
series = Series(np.random.randn(500))
18+
series[20:500] = np.nan
19+
series[10:20] = 5000
20+
result = series.nunique()
21+
assert result == 11
22+
23+
# GH 18051
24+
s = pd.Series(pd.Categorical([]))
25+
assert s.nunique() == 0
26+
s = pd.Series(pd.Categorical([np.nan]))
27+
assert s.nunique() == 0
28+
29+
30+
def test_unique():
31+
# GH714 also, dtype=float
32+
s = Series([1.2345] * 100)
33+
s[::2] = np.nan
34+
result = s.unique()
35+
assert len(result) == 2
36+
37+
s = Series([1.2345] * 100, dtype='f4')
38+
s[::2] = np.nan
39+
result = s.unique()
40+
assert len(result) == 2
41+
42+
# NAs in object arrays #714
43+
s = Series(['foo'] * 100, dtype='O')
44+
s[::2] = np.nan
45+
result = s.unique()
46+
assert len(result) == 2
47+
48+
# decision about None
49+
s = Series([1, 2, 3, None, None, None], dtype=object)
50+
result = s.unique()
51+
expected = np.array([1, 2, 3, None], dtype=object)
52+
tm.assert_numpy_array_equal(result, expected)
53+
54+
# GH 18051
55+
s = pd.Series(pd.Categorical([]))
56+
tm.assert_categorical_equal(s.unique(), pd.Categorical([]),
57+
check_dtype=False)
58+
s = pd.Series(pd.Categorical([np.nan]))
59+
tm.assert_categorical_equal(s.unique(), pd.Categorical([np.nan]),
60+
check_dtype=False)
61+
62+
63+
def test_unique_data_ownership():
64+
# it works! #1807
65+
Series(Series(["a", "c", "b"]).unique()).sort_values()
66+
67+
68+
def test_is_unique():
69+
# GH11946
70+
s = Series(np.random.randint(0, 10, size=1000))
71+
assert not s.is_unique
72+
s = Series(np.arange(1000))
73+
assert s.is_unique
74+
75+
76+
def test_is_unique_class_ne(capsys):
77+
# GH 20661
78+
class Foo(object):
79+
def __init__(self, val):
80+
self._value = val
81+
82+
def __ne__(self, other):
83+
raise Exception("NEQ not supported")
84+
85+
li = [Foo(i) for i in range(5)]
86+
s = pd.Series(li, index=[i for i in range(5)])
87+
_, err = capsys.readouterr()
88+
s.is_unique
89+
_, err = capsys.readouterr()
90+
assert len(err) == 0
91+
92+
93+
@pytest.mark.parametrize(
94+
'keep, expected',
95+
[
96+
('first', Series([False, False, False, False, True, True, False])),
97+
('last', Series([False, True, True, False, False, False, False])),
98+
(False, Series([False, True, True, False, True, True, False]))
13799
])
138-
def test_duplicated_nan_none(self, keep, expected):
139-
s = Series([np.nan, 3, 3, None, np.nan], dtype=object)
140-
141-
result = s.duplicated(keep=keep)
142-
tm.assert_series_equal(result, expected)
100+
def test_drop_duplicates_non_bool(any_numpy_dtype, keep, expected):
101+
tc = Series([1, 2, 3, 5, 3, 2, 4], dtype=np.dtype(any_numpy_dtype))
102+
103+
assert_series_equal(tc.duplicated(keep=keep), expected)
104+
assert_series_equal(tc.drop_duplicates(keep=keep), tc[~expected])
105+
sc = tc.copy()
106+
sc.drop_duplicates(keep=keep, inplace=True)
107+
assert_series_equal(sc, tc[~expected])
108+
109+
110+
@pytest.mark.parametrize('keep, expected',
111+
[('first', Series([False, False, True, True])),
112+
('last', Series([True, True, False, False])),
113+
(False, Series([True, True, True, True]))])
114+
def test_drop_duplicates_bool(keep, expected):
115+
tc = Series([True, False, True, False])
116+
117+
assert_series_equal(tc.duplicated(keep=keep), expected)
118+
assert_series_equal(tc.drop_duplicates(keep=keep), tc[~expected])
119+
sc = tc.copy()
120+
sc.drop_duplicates(keep=keep, inplace=True)
121+
assert_series_equal(sc, tc[~expected])
122+
123+
124+
@pytest.mark.parametrize('keep, expected', [
125+
('first', Series([False, False, True, False, True], name='name')),
126+
('last', Series([True, True, False, False, False], name='name')),
127+
(False, Series([True, True, True, False, True], name='name'))
128+
])
129+
def test_duplicated_keep(keep, expected):
130+
s = Series(['a', 'b', 'b', 'c', 'a'], name='name')
131+
132+
result = s.duplicated(keep=keep)
133+
tm.assert_series_equal(result, expected)
134+
135+
136+
@pytest.mark.parametrize('keep, expected', [
137+
('first', Series([False, False, True, False, True])),
138+
('last', Series([True, True, False, False, False])),
139+
(False, Series([True, True, True, False, True]))
140+
])
141+
def test_duplicated_nan_none(keep, expected):
142+
s = Series([np.nan, 3, 3, None, np.nan], dtype=object)
143+
144+
result = s.duplicated(keep=keep)
145+
tm.assert_series_equal(result, expected)

0 commit comments

Comments
 (0)