Skip to content

Commit c2ea8fb

Browse files
sinhrksjreback
authored andcommitted
TST: Make numpy_array test strict
assert_numpy_array_equal now checks input is np.ndarray assert_almost_equal now checks inputs are the same class. Author: sinhrks <[email protected]> Closes pandas-dev#13311 from sinhrks/test_ndarray and squashes the following commits: 7ae4e93 [sinhrks] TST: Make numpy_array test strict
1 parent ae2ca83 commit c2ea8fb

File tree

88 files changed

+2332
-2178
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+2332
-2178
lines changed

pandas/computation/tests/test_eval.py

+13-3
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,16 @@ def test_chained_cmp_op(self):
185185
mids, cmp_ops, self.rhses):
186186
self.check_chained_cmp_op(lhs, cmp1, mid, cmp2, rhs)
187187

188+
def check_equal(self, result, expected):
189+
if isinstance(result, DataFrame):
190+
tm.assert_frame_equal(result, expected)
191+
elif isinstance(result, Series):
192+
tm.assert_series_equal(result, expected)
193+
elif isinstance(result, np.ndarray):
194+
tm.assert_numpy_array_equal(result, expected)
195+
else:
196+
self.assertEqual(result, expected)
197+
188198
def check_complex_cmp_op(self, lhs, cmp1, rhs, binop, cmp2):
189199
skip_these = _scalar_skip
190200
ex = '(lhs {cmp1} rhs) {binop} (lhs {cmp2} rhs)'.format(cmp1=cmp1,
@@ -218,7 +228,7 @@ def check_complex_cmp_op(self, lhs, cmp1, rhs, binop, cmp2):
218228
expected = _eval_single_bin(
219229
lhs_new, binop, rhs_new, self.engine)
220230
result = pd.eval(ex, engine=self.engine, parser=self.parser)
221-
tm.assert_numpy_array_equal(result, expected)
231+
self.check_equal(result, expected)
222232

223233
def check_chained_cmp_op(self, lhs, cmp1, mid, cmp2, rhs):
224234
skip_these = _scalar_skip
@@ -249,7 +259,7 @@ def check_simple_cmp_op(self, lhs, cmp1, rhs):
249259
else:
250260
expected = _eval_single_bin(lhs, cmp1, rhs, self.engine)
251261
result = pd.eval(ex, engine=self.engine, parser=self.parser)
252-
tm.assert_numpy_array_equal(result, expected)
262+
self.check_equal(result, expected)
253263

254264
def check_binary_arith_op(self, lhs, arith1, rhs):
255265
ex = 'lhs {0} rhs'.format(arith1)
@@ -293,7 +303,7 @@ def check_floor_division(self, lhs, arith1, rhs):
293303
if self.engine == 'python':
294304
res = pd.eval(ex, engine=self.engine, parser=self.parser)
295305
expected = lhs // rhs
296-
tm.assert_numpy_array_equal(res, expected)
306+
self.check_equal(res, expected)
297307
else:
298308
self.assertRaises(TypeError, pd.eval, ex, local_dict={'lhs': lhs,
299309
'rhs': rhs},

pandas/core/common.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,8 @@ def array_equivalent(left, right, strict_nan=False):
316316

317317
if not strict_nan:
318318
# pd.isnull considers NaN and None to be equivalent.
319-
return lib.array_equivalent_object(
320-
_ensure_object(left.ravel()), _ensure_object(right.ravel()))
319+
return lib.array_equivalent_object(_ensure_object(left.ravel()),
320+
_ensure_object(right.ravel()))
321321

322322
for left_value, right_value in zip(left, right):
323323
if left_value is tslib.NaT and right_value is not tslib.NaT:

pandas/io/tests/json/test_pandas.py

+8-9
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ def test_frame_non_unique_index(self):
9999
assert_frame_equal(df, read_json(df.to_json(orient='split'),
100100
orient='split'))
101101
unser = read_json(df.to_json(orient='records'), orient='records')
102-
self.assertTrue(df.columns.equals(unser.columns))
103-
tm.assert_numpy_array_equal(df.values, unser.values)
102+
self.assert_index_equal(df.columns, unser.columns)
103+
np.testing.assert_equal(df.values, unser.values)
104104
unser = read_json(df.to_json(orient='values'), orient='values')
105105
tm.assert_numpy_array_equal(df.values, unser.values)
106106

@@ -183,7 +183,8 @@ def _check_orient(df, orient, dtype=None, numpy=False,
183183
# index is not captured in this orientation
184184
assert_almost_equal(df.values, unser.values,
185185
check_dtype=check_numpy_dtype)
186-
self.assertTrue(df.columns.equals(unser.columns))
186+
self.assert_index_equal(df.columns, unser.columns,
187+
exact=check_column_type)
187188
elif orient == "values":
188189
# index and cols are not captured in this orientation
189190
if numpy is True and df.shape == (0, 0):
@@ -302,12 +303,10 @@ def _check_all_orients(df, dtype=None, convert_axes=True,
302303

303304
# mixed data
304305
index = pd.Index(['a', 'b', 'c', 'd', 'e'])
305-
data = {
306-
'A': [0., 1., 2., 3., 4.],
307-
'B': [0., 1., 0., 1., 0.],
308-
'C': ['foo1', 'foo2', 'foo3', 'foo4', 'foo5'],
309-
'D': [True, False, True, False, True]
310-
}
306+
data = {'A': [0., 1., 2., 3., 4.],
307+
'B': [0., 1., 0., 1., 0.],
308+
'C': ['foo1', 'foo2', 'foo3', 'foo4', 'foo5'],
309+
'D': [True, False, True, False, True]}
311310
df = DataFrame(data=data, index=index)
312311
_check_orient(df, "split", check_dtype=False)
313312
_check_orient(df, "records", check_dtype=False)

pandas/io/tests/json/test_ujson.py

+45-41
Original file line numberDiff line numberDiff line change
@@ -1201,28 +1201,28 @@ def testDataFrame(self):
12011201
# column indexed
12021202
outp = DataFrame(ujson.decode(ujson.encode(df)))
12031203
self.assertTrue((df == outp).values.all())
1204-
tm.assert_numpy_array_equal(df.columns, outp.columns)
1205-
tm.assert_numpy_array_equal(df.index, outp.index)
1204+
tm.assert_index_equal(df.columns, outp.columns)
1205+
tm.assert_index_equal(df.index, outp.index)
12061206

12071207
dec = _clean_dict(ujson.decode(ujson.encode(df, orient="split")))
12081208
outp = DataFrame(**dec)
12091209
self.assertTrue((df == outp).values.all())
1210-
tm.assert_numpy_array_equal(df.columns, outp.columns)
1211-
tm.assert_numpy_array_equal(df.index, outp.index)
1210+
tm.assert_index_equal(df.columns, outp.columns)
1211+
tm.assert_index_equal(df.index, outp.index)
12121212

12131213
outp = DataFrame(ujson.decode(ujson.encode(df, orient="records")))
12141214
outp.index = df.index
12151215
self.assertTrue((df == outp).values.all())
1216-
tm.assert_numpy_array_equal(df.columns, outp.columns)
1216+
tm.assert_index_equal(df.columns, outp.columns)
12171217

12181218
outp = DataFrame(ujson.decode(ujson.encode(df, orient="values")))
12191219
outp.index = df.index
12201220
self.assertTrue((df.values == outp.values).all())
12211221

12221222
outp = DataFrame(ujson.decode(ujson.encode(df, orient="index")))
12231223
self.assertTrue((df.transpose() == outp).values.all())
1224-
tm.assert_numpy_array_equal(df.transpose().columns, outp.columns)
1225-
tm.assert_numpy_array_equal(df.transpose().index, outp.index)
1224+
tm.assert_index_equal(df.transpose().columns, outp.columns)
1225+
tm.assert_index_equal(df.transpose().index, outp.index)
12261226

12271227
def testDataFrameNumpy(self):
12281228
df = DataFrame([[1, 2, 3], [4, 5, 6]], index=[
@@ -1231,21 +1231,21 @@ def testDataFrameNumpy(self):
12311231
# column indexed
12321232
outp = DataFrame(ujson.decode(ujson.encode(df), numpy=True))
12331233
self.assertTrue((df == outp).values.all())
1234-
tm.assert_numpy_array_equal(df.columns, outp.columns)
1235-
tm.assert_numpy_array_equal(df.index, outp.index)
1234+
tm.assert_index_equal(df.columns, outp.columns)
1235+
tm.assert_index_equal(df.index, outp.index)
12361236

12371237
dec = _clean_dict(ujson.decode(ujson.encode(df, orient="split"),
12381238
numpy=True))
12391239
outp = DataFrame(**dec)
12401240
self.assertTrue((df == outp).values.all())
1241-
tm.assert_numpy_array_equal(df.columns, outp.columns)
1242-
tm.assert_numpy_array_equal(df.index, outp.index)
1241+
tm.assert_index_equal(df.columns, outp.columns)
1242+
tm.assert_index_equal(df.index, outp.index)
12431243

1244-
outp = DataFrame(ujson.decode(
1245-
ujson.encode(df, orient="index"), numpy=True))
1244+
outp = DataFrame(ujson.decode(ujson.encode(df, orient="index"),
1245+
numpy=True))
12461246
self.assertTrue((df.transpose() == outp).values.all())
1247-
tm.assert_numpy_array_equal(df.transpose().columns, outp.columns)
1248-
tm.assert_numpy_array_equal(df.transpose().index, outp.index)
1247+
tm.assert_index_equal(df.transpose().columns, outp.columns)
1248+
tm.assert_index_equal(df.transpose().index, outp.index)
12491249

12501250
def testDataFrameNested(self):
12511251
df = DataFrame([[1, 2, 3], [4, 5, 6]], index=[
@@ -1285,20 +1285,20 @@ def testDataFrameNumpyLabelled(self):
12851285
outp = DataFrame(*ujson.decode(ujson.encode(df),
12861286
numpy=True, labelled=True))
12871287
self.assertTrue((df.T == outp).values.all())
1288-
tm.assert_numpy_array_equal(df.T.columns, outp.columns)
1289-
tm.assert_numpy_array_equal(df.T.index, outp.index)
1288+
tm.assert_index_equal(df.T.columns, outp.columns)
1289+
tm.assert_index_equal(df.T.index, outp.index)
12901290

12911291
outp = DataFrame(*ujson.decode(ujson.encode(df, orient="records"),
12921292
numpy=True, labelled=True))
12931293
outp.index = df.index
12941294
self.assertTrue((df == outp).values.all())
1295-
tm.assert_numpy_array_equal(df.columns, outp.columns)
1295+
tm.assert_index_equal(df.columns, outp.columns)
12961296

12971297
outp = DataFrame(*ujson.decode(ujson.encode(df, orient="index"),
12981298
numpy=True, labelled=True))
12991299
self.assertTrue((df == outp).values.all())
1300-
tm.assert_numpy_array_equal(df.columns, outp.columns)
1301-
tm.assert_numpy_array_equal(df.index, outp.index)
1300+
tm.assert_index_equal(df.columns, outp.columns)
1301+
tm.assert_index_equal(df.index, outp.index)
13021302

13031303
def testSeries(self):
13041304
s = Series([10, 20, 30, 40, 50, 60], name="series",
@@ -1378,42 +1378,46 @@ def testIndex(self):
13781378
i = Index([23, 45, 18, 98, 43, 11], name="index")
13791379

13801380
# column indexed
1381-
outp = Index(ujson.decode(ujson.encode(i)))
1382-
self.assertTrue(i.equals(outp))
1381+
outp = Index(ujson.decode(ujson.encode(i)), name='index')
1382+
tm.assert_index_equal(i, outp)
13831383

1384-
outp = Index(ujson.decode(ujson.encode(i), numpy=True))
1385-
self.assertTrue(i.equals(outp))
1384+
outp = Index(ujson.decode(ujson.encode(i), numpy=True), name='index')
1385+
tm.assert_index_equal(i, outp)
13861386

13871387
dec = _clean_dict(ujson.decode(ujson.encode(i, orient="split")))
13881388
outp = Index(**dec)
1389-
self.assertTrue(i.equals(outp))
1389+
tm.assert_index_equal(i, outp)
13901390
self.assertTrue(i.name == outp.name)
13911391

13921392
dec = _clean_dict(ujson.decode(ujson.encode(i, orient="split"),
13931393
numpy=True))
13941394
outp = Index(**dec)
1395-
self.assertTrue(i.equals(outp))
1395+
tm.assert_index_equal(i, outp)
13961396
self.assertTrue(i.name == outp.name)
13971397

1398-
outp = Index(ujson.decode(ujson.encode(i, orient="values")))
1399-
self.assertTrue(i.equals(outp))
1398+
outp = Index(ujson.decode(ujson.encode(i, orient="values")),
1399+
name='index')
1400+
tm.assert_index_equal(i, outp)
14001401

1401-
outp = Index(ujson.decode(ujson.encode(
1402-
i, orient="values"), numpy=True))
1403-
self.assertTrue(i.equals(outp))
1402+
outp = Index(ujson.decode(ujson.encode(i, orient="values"),
1403+
numpy=True), name='index')
1404+
tm.assert_index_equal(i, outp)
14041405

1405-
outp = Index(ujson.decode(ujson.encode(i, orient="records")))
1406-
self.assertTrue(i.equals(outp))
1406+
outp = Index(ujson.decode(ujson.encode(i, orient="records")),
1407+
name='index')
1408+
tm.assert_index_equal(i, outp)
14071409

1408-
outp = Index(ujson.decode(ujson.encode(
1409-
i, orient="records"), numpy=True))
1410-
self.assertTrue(i.equals(outp))
1410+
outp = Index(ujson.decode(ujson.encode(i, orient="records"),
1411+
numpy=True), name='index')
1412+
tm.assert_index_equal(i, outp)
14111413

1412-
outp = Index(ujson.decode(ujson.encode(i, orient="index")))
1413-
self.assertTrue(i.equals(outp))
1414+
outp = Index(ujson.decode(ujson.encode(i, orient="index")),
1415+
name='index')
1416+
tm.assert_index_equal(i, outp)
14141417

1415-
outp = Index(ujson.decode(ujson.encode(i, orient="index"), numpy=True))
1416-
self.assertTrue(i.equals(outp))
1418+
outp = Index(ujson.decode(ujson.encode(i, orient="index"),
1419+
numpy=True), name='index')
1420+
tm.assert_index_equal(i, outp)
14171421

14181422
def test_datetimeindex(self):
14191423
from pandas.tseries.index import date_range
@@ -1423,7 +1427,7 @@ def test_datetimeindex(self):
14231427
encoded = ujson.encode(rng, date_unit='ns')
14241428
decoded = DatetimeIndex(np.array(ujson.decode(encoded)))
14251429

1426-
self.assertTrue(rng.equals(decoded))
1430+
tm.assert_index_equal(rng, decoded)
14271431

14281432
ts = Series(np.random.randn(len(rng)), index=rng)
14291433
decoded = Series(ujson.decode(ujson.encode(ts, date_unit='ns')))

pandas/io/tests/parser/comment.py

+16-16
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ def test_comment(self):
1919
1,2.,4.#hello world
2020
5.,NaN,10.0
2121
"""
22-
expected = [[1., 2., 4.],
23-
[5., np.nan, 10.]]
22+
expected = np.array([[1., 2., 4.],
23+
[5., np.nan, 10.]])
2424
df = self.read_csv(StringIO(data), comment='#')
25-
tm.assert_almost_equal(df.values, expected)
25+
tm.assert_numpy_array_equal(df.values, expected)
2626

2727
df = self.read_table(StringIO(data), sep=',', comment='#',
2828
na_values=['NaN'])
29-
tm.assert_almost_equal(df.values, expected)
29+
tm.assert_numpy_array_equal(df.values, expected)
3030

3131
def test_line_comment(self):
3232
data = """# empty
@@ -35,10 +35,10 @@ def test_line_comment(self):
3535
#ignore this line
3636
5.,NaN,10.0
3737
"""
38-
expected = [[1., 2., 4.],
39-
[5., np.nan, 10.]]
38+
expected = np.array([[1., 2., 4.],
39+
[5., np.nan, 10.]])
4040
df = self.read_csv(StringIO(data), comment='#')
41-
tm.assert_almost_equal(df.values, expected)
41+
tm.assert_numpy_array_equal(df.values, expected)
4242

4343
# check with delim_whitespace=True
4444
df = self.read_csv(StringIO(data.replace(',', ' ')), comment='#',
@@ -48,11 +48,11 @@ def test_line_comment(self):
4848
# custom line terminator is not supported
4949
# with the Python parser yet
5050
if self.engine == 'c':
51-
expected = [[1., 2., 4.],
52-
[5., np.nan, 10.]]
51+
expected = np.array([[1., 2., 4.],
52+
[5., np.nan, 10.]])
5353
df = self.read_csv(StringIO(data.replace('\n', '*')),
5454
comment='#', lineterminator='*')
55-
tm.assert_almost_equal(df.values, expected)
55+
tm.assert_numpy_array_equal(df.values, expected)
5656

5757
def test_comment_skiprows(self):
5858
data = """# empty
@@ -64,9 +64,9 @@ def test_comment_skiprows(self):
6464
5.,NaN,10.0
6565
"""
6666
# this should ignore the first four lines (including comments)
67-
expected = [[1., 2., 4.], [5., np.nan, 10.]]
67+
expected = np.array([[1., 2., 4.], [5., np.nan, 10.]])
6868
df = self.read_csv(StringIO(data), comment='#', skiprows=4)
69-
tm.assert_almost_equal(df.values, expected)
69+
tm.assert_numpy_array_equal(df.values, expected)
7070

7171
def test_comment_header(self):
7272
data = """# empty
@@ -77,9 +77,9 @@ def test_comment_header(self):
7777
5.,NaN,10.0
7878
"""
7979
# header should begin at the second non-comment line
80-
expected = [[1., 2., 4.], [5., np.nan, 10.]]
80+
expected = np.array([[1., 2., 4.], [5., np.nan, 10.]])
8181
df = self.read_csv(StringIO(data), comment='#', header=1)
82-
tm.assert_almost_equal(df.values, expected)
82+
tm.assert_numpy_array_equal(df.values, expected)
8383

8484
def test_comment_skiprows_header(self):
8585
data = """# empty
@@ -94,9 +94,9 @@ def test_comment_skiprows_header(self):
9494
# skiprows should skip the first 4 lines (including comments), while
9595
# header should start from the second non-commented line starting
9696
# with line 5
97-
expected = [[1., 2., 4.], [5., np.nan, 10.]]
97+
expected = np.array([[1., 2., 4.], [5., np.nan, 10.]])
9898
df = self.read_csv(StringIO(data), comment='#', skiprows=4, header=1)
99-
tm.assert_almost_equal(df.values, expected)
99+
tm.assert_numpy_array_equal(df.values, expected)
100100

101101
def test_custom_comment_char(self):
102102
data = "a,b,c\n1,2,3#ignore this!\n4,5,6#ignorethistoo"

0 commit comments

Comments
 (0)