26
26
import numpy as np
27
27
import os
28
28
import pandas as pd
29
+ import re
29
30
import six
30
31
import swat
31
32
import swat .utils .testing as tm
36
37
37
38
patch_pandas_sort ()
38
39
40
+ pd_version = tuple ([int (x ) for x in re .match (r'^(\d+)\.(\d+)\.(\d+)' ,
41
+ pd .__version__ ).groups ()])
42
+
39
43
# Pick sort keys that will match across SAS and Pandas sorting orders
40
44
SORT_KEYS = ['Origin' , 'MSRP' , 'Horsepower' , 'Model' ]
41
45
@@ -178,7 +182,7 @@ def test_groupby_get_group(self):
178
182
self .assertEqual (dfgrp .get_group (('Acura' , 22 )).to_csv (index = False ),
179
183
tblgrp .get_group (('Acura' , 22 )).to_csv (index = False ))
180
184
181
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) <= 16 , 'Need newer version of Pandas' )
185
+ @unittest .skipIf (pd_version [: 2 ] <= ( 0 , 16 ) , 'Need newer version of Pandas' )
182
186
def test_column_nlargest (self ):
183
187
df = self .get_cars_df ()
184
188
tbl = self .table
@@ -210,7 +214,7 @@ def test_column_nlargest(self):
210
214
# self.assertEqual(tblgrp.__class__.__name__, 'CASTable')
211
215
# self.assertTablesEqual(dfgrp.reset_index(), tblgrp, sortby=None)
212
216
213
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) <= 16 , 'Need newer version of Pandas' )
217
+ @unittest .skipIf (pd_version [: 2 ] <= ( 0 , 16 ) , 'Need newer version of Pandas' )
214
218
def test_nlargest (self ):
215
219
df = self .get_cars_df ()
216
220
tbl = self .table
@@ -242,7 +246,7 @@ def test_nlargest(self):
242
246
# self.assertEqual(tblgrp.__class__.__name__, 'CASTable')
243
247
# self.assertTablesEqual(dfgrp.reset_index(), tblgrp, sortby=None)
244
248
245
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) <= 16 , 'Need newer version of Pandas' )
249
+ @unittest .skipIf (pd_version [: 2 ] <= ( 0 , 16 ) , 'Need newer version of Pandas' )
246
250
def test_column_nsmallest (self ):
247
251
df = self .get_cars_df ()
248
252
tbl = self .table
@@ -273,7 +277,7 @@ def test_column_nsmallest(self):
273
277
self .assertEqual (tblgrp .__class__ .__name__ , 'CASTable' )
274
278
self .assertTablesEqual (dfgrp .reset_index (), tblgrp , sortby = None )
275
279
276
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) <= 16 , 'Need newer version of Pandas' )
280
+ @unittest .skipIf (pd_version [: 2 ] <= ( 0 , 16 ) , 'Need newer version of Pandas' )
277
281
def test_nsmallest (self ):
278
282
df = self .get_cars_df ()
279
283
tbl = self .table
@@ -304,7 +308,7 @@ def test_nsmallest(self):
304
308
self .assertEqual (tblgrp .__class__ .__name__ , 'CASTable' )
305
309
self .assertTablesEqual (dfgrp .reset_index (), tblgrp , sortby = None )
306
310
307
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
311
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
308
312
def test_column_head (self ):
309
313
df = self .get_cars_df ().sort_values (SORT_KEYS )
310
314
tbl = self .table .sort_values (SORT_KEYS )
@@ -357,7 +361,7 @@ def test_head(self):
357
361
'Weight' , 'Wheelbase' , 'Length' ])
358
362
self .assertEqual (len (tblgrp ), 30 )
359
363
360
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
364
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
361
365
def test_column_tail (self ):
362
366
df = self .get_cars_df ().sort_values (SORT_KEYS )
363
367
tbl = self .table .sort_values (SORT_KEYS )
@@ -386,7 +390,7 @@ def test_tail(self):
386
390
tblgrp = tbl .groupby ('Origin' ).tail (10 )
387
391
self .assertTablesEqual (dfgrp , tblgrp , sortby = None )
388
392
389
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
393
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
390
394
def test_slice (self ):
391
395
df = self .get_cars_df ().sort_values (SORT_KEYS )
392
396
tbl = self .table .sort_values (SORT_KEYS )
@@ -418,7 +422,7 @@ def test_slice(self):
418
422
'Wheelbase' , 'Length' ])
419
423
self .assertEqual (len (tblgrp ), 12 )
420
424
421
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
425
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
422
426
def test_column_slice (self ):
423
427
df = self .get_cars_df ().sort_values (SORT_KEYS )
424
428
tbl = self .table .sort_values (SORT_KEYS )
@@ -445,7 +449,7 @@ def test_column_slice(self):
445
449
self .assertEqual (list (tblgrp .columns ), ['Origin' , 'MSRP' ])
446
450
self .assertEqual (len (tblgrp ), 12 )
447
451
448
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
452
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
449
453
def test_column_nth (self ):
450
454
df = self .get_cars_df ().sort_values (SORT_KEYS )
451
455
tbl = self .table .sort_values (SORT_KEYS )
@@ -596,7 +600,7 @@ def test_nunique(self):
596
600
with self .assertRaises (AttributeError ):
597
601
tbl .groupby ('Origin' ).nunique ()
598
602
599
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) <= 16 , 'Need newer version of Pandas' )
603
+ @unittest .skipIf (pd_version [: 2 ] <= ( 0 , 16 ) , 'Need newer version of Pandas' )
600
604
def test_column_value_counts (self ):
601
605
df = self .get_cars_df ().sort_values (SORT_KEYS )
602
606
tbl = self .table .sort_values (SORT_KEYS )
@@ -666,7 +670,8 @@ def test_column_max(self):
666
670
self .assertEqual (tblgrp .__class__ .__name__ , 'CASTable' )
667
671
self .assertTablesEqual (dfgrp .reset_index (), tblgrp , sortby = ['Origin' , 'EngineSize' ])
668
672
669
- @unittest .skipIf (int (pd .__version__ .split ('.' )[1 ]) < 16 , 'Need newer version of Pandas' )
673
+ @unittest .skipIf (pd_version < (0 , 16 , 0 ), 'Need newer version of Pandas' )
674
+ @unittest .skipIf (pd_version >= (1 , 0 , 0 ), 'Raises AssertionError in Pandas 1' )
670
675
def test_max (self ):
671
676
df = self .get_cars_df ().sort_values (SORT_KEYS )
672
677
tbl = self .table .sort_values (SORT_KEYS )
@@ -725,7 +730,8 @@ def test_column_min(self):
725
730
self .assertEqual (tblgrp .__class__ .__name__ , 'CASTable' )
726
731
self .assertTablesEqual (dfgrp .reset_index (), tblgrp , sortby = ['Origin' , 'EngineSize' ])
727
732
728
- @unittest .skipIf (int (pd .__version__ .split ('.' )[1 ]) < 16 , 'Need newer version of Pandas' )
733
+ @unittest .skipIf (pd_version < (0 , 16 , 0 ), 'Need newer version of Pandas' )
734
+ @unittest .skipIf (pd_version >= (1 , 0 , 0 ), 'Raises AssertionError in Pandas 1' )
729
735
def test_min (self ):
730
736
df = self .get_cars_df ().sort_values (SORT_KEYS )
731
737
tbl = self .table .sort_values (SORT_KEYS )
@@ -854,7 +860,7 @@ def test_median(self):
854
860
self .assertEqual (tblgrp .__class__ .__name__ , 'CASTable' )
855
861
self .assertTablesEqual (dfgrp , tblgrp , sortby = None )
856
862
857
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
863
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
858
864
def test_column_mode (self ):
859
865
df = self .get_cars_df ().sort_values (SORT_KEYS )
860
866
tbl = self .table .sort_values (SORT_KEYS )
@@ -880,7 +886,7 @@ def test_column_mode(self):
880
886
tblgrp = tbl ['EngineSize' ].query ('Origin ^= "USA"' ).groupby ('Origin' , as_index = False ).mode ()
881
887
self .assertTablesEqual (dfgrp .reset_index (level = 0 ), tblgrp , sortby = None )
882
888
883
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
889
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
884
890
def test_mode (self ):
885
891
df = self .get_cars_df ().sort_values (SORT_KEYS )
886
892
tbl = self .table .sort_values (SORT_KEYS )
@@ -1438,7 +1444,7 @@ def test_probt(self):
1438
1444
self .assertEqual (tblgrp .__class__ .__name__ , 'CASTable' )
1439
1445
self .assertEqual (len (tblgrp ), 3 )
1440
1446
1441
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
1447
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
1442
1448
def test_column_describe (self ):
1443
1449
df = self .get_cars_df ().sort_values (SORT_KEYS )
1444
1450
tbl = self .table .sort_values (SORT_KEYS )
@@ -1464,7 +1470,7 @@ def test_column_describe(self):
1464
1470
# tblgrp = tblgrp.drop('Origin', axis=1)
1465
1471
# self.assertTablesEqual(dfgrp, tblgrp, sortby=False, decimals=5)
1466
1472
1467
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
1473
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
1468
1474
def test_describe (self ):
1469
1475
df = self .get_cars_df ().sort_values (SORT_KEYS )
1470
1476
tbl = self .table .sort_values (SORT_KEYS )
@@ -1481,7 +1487,7 @@ def test_describe(self):
1481
1487
tblgrp = tblgrp .drop ('Origin' , axis = 1 )
1482
1488
self .assertTablesEqual (dfgrp , tblgrp , sortby = None , decimals = 5 )
1483
1489
1484
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
1490
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
1485
1491
def test_column_to_frame (self ):
1486
1492
tbl = self .table .sort_values (SORT_KEYS )
1487
1493
@@ -1497,7 +1503,7 @@ def test_column_to_frame(self):
1497
1503
self .assertEqual (len (tblgrp ), 428 )
1498
1504
self .assertEqual (tblgrp .index .names , [None ])
1499
1505
1500
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
1506
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
1501
1507
def test_to_frame (self ):
1502
1508
tbl = self .table .sort_values (SORT_KEYS )
1503
1509
@@ -1509,7 +1515,7 @@ def test_to_frame(self):
1509
1515
self .assertEqual (len (tblgrp ), 428 )
1510
1516
self .assertEqual (tblgrp .index .names , [None ])
1511
1517
1512
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
1518
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
1513
1519
def test_column_to_series (self ):
1514
1520
tbl = self .table .sort_values (SORT_KEYS )
1515
1521
@@ -1521,7 +1527,7 @@ def test_column_to_series(self):
1521
1527
self .assertEqual (len (tblgrp ), 428 )
1522
1528
self .assertEqual (tblgrp .index .names , ['Origin' ])
1523
1529
1524
- @unittest .skipIf (int ( pd . __version__ . split ( '.' )[ 1 ]) < 16 , 'Need newer version of Pandas' )
1530
+ @unittest .skipIf (pd_version < ( 0 , 16 , 0 ) , 'Need newer version of Pandas' )
1525
1531
def test_to_series (self ):
1526
1532
tbl = self .table .sort_values (SORT_KEYS )
1527
1533
0 commit comments