@@ -88,6 +88,8 @@ def set_trace():
88
88
89
89
#------------------------------------------------------------------------------
90
90
# contextmanager to ensure the file cleanup
91
+
92
+
91
93
@contextmanager
92
94
def ensure_clean (filename = None ):
93
95
# if we are not passed a filename, generate a temporary
@@ -114,6 +116,8 @@ def get_data_path(f=''):
114
116
115
117
#------------------------------------------------------------------------------
116
118
# Comparators
119
+
120
+
117
121
def equalContents (arr1 , arr2 ):
118
122
"""Checks if the set of unique elements of arr1 and arr2 are equivalent.
119
123
"""
@@ -127,6 +131,20 @@ def assert_isinstance(obj, class_type_or_tuple):
127
131
type (obj ), class_type_or_tuple ))
128
132
129
133
134
+ def assert_index_equal (left , right ):
135
+ assert left .equals (
136
+ right ), "[index] left [{0}], right [{0}]" .format (left , right )
137
+
138
+
139
+ def assert_attr_equal (attr , left , right ):
140
+ left_attr = getattr (left , attr , None )
141
+ right_attr = getattr (right , attr , None )
142
+ assert left_attr == right_attr , "[{0}] left [{1}], right [{2}]" .format (
143
+ attr ,
144
+ left_attr ,
145
+ right_attr )
146
+
147
+
130
148
def isiterable (obj ):
131
149
return hasattr (obj , '__iter__' )
132
150
@@ -137,7 +155,7 @@ def assert_isinstance(obj, class_type_or_tuple):
137
155
"Expected object to be of type %r, found %r instead" % (type (obj ), class_type_or_tuple ))
138
156
139
157
140
- def assert_almost_equal (a , b , check_less_precise = False ):
158
+ def assert_almost_equal (a , b , check_less_precise = False ):
141
159
if isinstance (a , dict ) or isinstance (b , dict ):
142
160
return assert_dict_equal (a , b )
143
161
@@ -212,18 +230,18 @@ def assert_series_equal(left, right, check_dtype=True,
212
230
assert_isinstance (left , type (right ))
213
231
assert_almost_equal (left .values , right .values , check_less_precise )
214
232
if check_dtype :
215
- assert ( left . dtype == right . dtype )
233
+ assert_attr_equal ( ' dtype' , left , right )
216
234
if check_less_precise :
217
- assert_almost_equal (left .index .values , right .index .values , check_less_precise )
235
+ assert_almost_equal (
236
+ left .index .values , right .index .values , check_less_precise )
218
237
else :
219
- assert (left .index . equals ( right .index ) )
238
+ assert_index_equal (left .index , right .index )
220
239
if check_index_type :
221
240
assert_isinstance (left .index , type (right .index ))
222
- assert ( left .index . dtype == right .index . dtype )
223
- assert ( left .index . inferred_type == right .index . inferred_type )
241
+ assert_attr_equal ( 'dtype' , left .index , right .index )
242
+ assert_attr_equal ( 'inferred_type' , left .index , right .index )
224
243
if check_index_freq :
225
- assert (getattr (left , 'freqstr' , None ) ==
226
- getattr (right , 'freqstr' , None ))
244
+ assert_attr_equal ('freqstr' , left .index , right .index )
227
245
228
246
229
247
def assert_frame_equal (left , right , check_dtype = True ,
@@ -238,11 +256,11 @@ def assert_frame_equal(left, right, check_dtype=True,
238
256
assert_isinstance (right , DataFrame )
239
257
240
258
if check_less_precise :
241
- assert_almost_equal (left .columns ,right .columns )
242
- assert_almost_equal (left .index ,right .index )
259
+ assert_almost_equal (left .columns , right .columns )
260
+ assert_almost_equal (left .index , right .index )
243
261
else :
244
- assert (left .columns . equals ( right .columns ) )
245
- assert (left .index . equals ( right .index ) )
262
+ assert_index_equal (left .columns , right .columns )
263
+ assert_index_equal (left .index , right .index )
246
264
247
265
for i , col in enumerate (left .columns ):
248
266
assert (col in right )
@@ -255,15 +273,15 @@ def assert_frame_equal(left, right, check_dtype=True,
255
273
256
274
if check_index_type :
257
275
assert_isinstance (left .index , type (right .index ))
258
- assert ( left .index . dtype == right .index . dtype )
259
- assert ( left .index . inferred_type == right .index . inferred_type )
276
+ assert_attr_equal ( 'dtype' , left .index , right .index )
277
+ assert_attr_equal ( 'inferred_type' , left .index , right .index )
260
278
if check_column_type :
261
279
assert_isinstance (left .columns , type (right .columns ))
262
- assert ( left .columns . dtype == right .columns . dtype )
263
- assert ( left .columns . inferred_type == right .columns . inferred_type )
280
+ assert_attr_equal ( 'dtype' , left .columns , right .columns )
281
+ assert_attr_equal ( 'inferred_type' , left .columns , right .columns )
264
282
if check_names :
265
- assert ( left .index . names == right .index . names )
266
- assert ( left .columns . names == right .columns . names )
283
+ assert_attr_equal ( 'names' , left .index , right .index )
284
+ assert_attr_equal ( 'names' , left .columns , right .columns )
267
285
268
286
269
287
def assert_panel_equal (left , right ,
@@ -272,28 +290,30 @@ def assert_panel_equal(left, right,
272
290
if check_panel_type :
273
291
assert_isinstance (left , type (right ))
274
292
275
- assert ( left . items . equals ( right . items ))
276
- assert ( left . major_axis . equals ( right . major_axis ))
277
- assert (left . minor_axis . equals (right . minor_axis ))
293
+ for axis in [ ' items' , 'major_axis' , 'minor_axis' ]:
294
+ assert_index_equal (
295
+ getattr (left , axis , None ), getattr (right , axis , None ))
278
296
279
297
for col , series in compat .iteritems (left ):
280
298
assert (col in right )
281
- assert_frame_equal (series , right [col ], check_less_precise = check_less_precise , check_names = False ) # TODO strangely check_names fails in py3 ?
299
+ # TODO strangely check_names fails in py3 ?
300
+ assert_frame_equal (
301
+ series , right [col ], check_less_precise = check_less_precise , check_names = False )
282
302
283
303
for col in right :
284
304
assert (col in left )
285
305
286
306
287
307
def assert_panel4d_equal (left , right ,
288
308
check_less_precise = False ):
289
- assert (left .labels .equals (right .labels ))
290
- assert (left .items .equals (right .items ))
291
- assert (left .major_axis .equals (right .major_axis ))
292
- assert (left .minor_axis .equals (right .minor_axis ))
309
+ for axis in ['labels' , 'items' , 'major_axis' , 'minor_axis' ]:
310
+ assert_index_equal (
311
+ getattr (left , axis , None ), getattr (right , axis , None ))
293
312
294
313
for col , series in compat .iteritems (left ):
295
314
assert (col in right )
296
- assert_panel_equal (series , right [col ], check_less_precise = check_less_precise )
315
+ assert_panel_equal (
316
+ series , right [col ], check_less_precise = check_less_precise )
297
317
298
318
for col in right :
299
319
assert (col in left )
@@ -487,8 +507,8 @@ def makeCustomIndex(nentries, nlevels, prefix='#', names=False, ndupe_l=None,
487
507
for i in range (nlevels ):
488
508
def keyfunc (x ):
489
509
import re
490
- numeric_tuple = re .sub ("[^\d_]_?" ,"" ,x ).split ("_" )
491
- return lmap (int ,numeric_tuple )
510
+ numeric_tuple = re .sub ("[^\d_]_?" , "" , x ).split ("_" )
511
+ return lmap (int , numeric_tuple )
492
512
493
513
# build a list of lists to create the index from
494
514
div_factor = nentries // ndupe_l [i ] + 1
@@ -604,6 +624,7 @@ def add_nans_panel4d(panel4d):
604
624
605
625
606
626
class TestSubDict (dict ):
627
+
607
628
def __init__ (self , * args , ** kwargs ):
608
629
dict .__init__ (self , * args , ** kwargs )
609
630
@@ -677,6 +698,7 @@ def skip_if_no_package(*args, **kwargs):
677
698
# Additional tags decorators for nose
678
699
#
679
700
701
+
680
702
def optional_args (decorator ):
681
703
"""allows a decorator to take optional positional and keyword arguments.
682
704
Assumes that taking a single, callable, positional argument means that
@@ -705,6 +727,7 @@ def dec(f):
705
727
706
728
_network_error_classes = IOError , HTTPException
707
729
730
+
708
731
@optional_args
709
732
def network (t , raise_on_error = _RAISE_NETWORK_ERROR_DEFAULT ,
710
733
error_classes = _network_error_classes , num_runs = 2 ):
@@ -796,9 +819,9 @@ def network_wrapper(*args, **kwargs):
796
819
raise
797
820
except Exception as e :
798
821
if runs < num_runs :
799
- print ("Failed: %r" % e )
822
+ print ("Failed: %r" % e )
800
823
else :
801
- raise
824
+ raise
802
825
803
826
runs += 1
804
827
@@ -913,6 +936,7 @@ def wrapper(*args, **kwargs):
913
936
914
937
915
938
class SimpleMock (object ):
939
+
916
940
"""
917
941
Poor man's mocking object
918
942
@@ -926,6 +950,7 @@ class SimpleMock(object):
926
950
>>> a.attr1 == "fizz" and a.attr2 == "buzz"
927
951
True
928
952
"""
953
+
929
954
def __init__ (self , obj , * args , ** kwds ):
930
955
assert (len (args ) % 2 == 0 )
931
956
attrs = kwds .get ("attrs" , {})
@@ -1010,7 +1035,8 @@ def assertRaisesRegexp(exception, regexp, callable, *args, **kwargs):
1010
1035
raise AssertionError ('"%s" does not match "%s"' %
1011
1036
(expected_regexp .pattern , str (e )))
1012
1037
else :
1013
- # Apparently some exceptions don't have a __name__ attribute? Just aping unittest library here
1038
+ # Apparently some exceptions don't have a __name__ attribute? Just
1039
+ # aping unittest library here
1014
1040
name = getattr (exception , "__name__" , str (exception ))
1015
1041
raise AssertionError ("{0} not raised" .format (name ))
1016
1042
0 commit comments