2626import numpy as np
2727import os
2828import pandas as pd
29+ import re
2930import six
3031import swat
3132import swat .utils .testing as tm
3637
3738patch_pandas_sort ()
3839
40+ pd_version = tuple ([int (x ) for x in re .match (r'^(\d+)\.(\d+)\.(\d+)' ,
41+ pd .__version__ ).groups ()])
42+
3943# Pick sort keys that will match across SAS and Pandas sorting orders
4044SORT_KEYS = ['Origin' , 'MSRP' , 'Horsepower' , 'Model' ]
4145
@@ -178,7 +182,7 @@ def test_groupby_get_group(self):
178182 self .assertEqual (dfgrp .get_group (('Acura' , 22 )).to_csv (index = False ),
179183 tblgrp .get_group (('Acura' , 22 )).to_csv (index = False ))
180184
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' )
182186 def test_column_nlargest (self ):
183187 df = self .get_cars_df ()
184188 tbl = self .table
@@ -210,7 +214,7 @@ def test_column_nlargest(self):
210214 # self.assertEqual(tblgrp.__class__.__name__, 'CASTable')
211215 # self.assertTablesEqual(dfgrp.reset_index(), tblgrp, sortby=None)
212216
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' )
214218 def test_nlargest (self ):
215219 df = self .get_cars_df ()
216220 tbl = self .table
@@ -242,7 +246,7 @@ def test_nlargest(self):
242246 # self.assertEqual(tblgrp.__class__.__name__, 'CASTable')
243247 # self.assertTablesEqual(dfgrp.reset_index(), tblgrp, sortby=None)
244248
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' )
246250 def test_column_nsmallest (self ):
247251 df = self .get_cars_df ()
248252 tbl = self .table
@@ -273,7 +277,7 @@ def test_column_nsmallest(self):
273277 self .assertEqual (tblgrp .__class__ .__name__ , 'CASTable' )
274278 self .assertTablesEqual (dfgrp .reset_index (), tblgrp , sortby = None )
275279
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' )
277281 def test_nsmallest (self ):
278282 df = self .get_cars_df ()
279283 tbl = self .table
@@ -304,7 +308,7 @@ def test_nsmallest(self):
304308 self .assertEqual (tblgrp .__class__ .__name__ , 'CASTable' )
305309 self .assertTablesEqual (dfgrp .reset_index (), tblgrp , sortby = None )
306310
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' )
308312 def test_column_head (self ):
309313 df = self .get_cars_df ().sort_values (SORT_KEYS )
310314 tbl = self .table .sort_values (SORT_KEYS )
@@ -357,7 +361,7 @@ def test_head(self):
357361 'Weight' , 'Wheelbase' , 'Length' ])
358362 self .assertEqual (len (tblgrp ), 30 )
359363
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' )
361365 def test_column_tail (self ):
362366 df = self .get_cars_df ().sort_values (SORT_KEYS )
363367 tbl = self .table .sort_values (SORT_KEYS )
@@ -386,7 +390,7 @@ def test_tail(self):
386390 tblgrp = tbl .groupby ('Origin' ).tail (10 )
387391 self .assertTablesEqual (dfgrp , tblgrp , sortby = None )
388392
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' )
390394 def test_slice (self ):
391395 df = self .get_cars_df ().sort_values (SORT_KEYS )
392396 tbl = self .table .sort_values (SORT_KEYS )
@@ -418,7 +422,7 @@ def test_slice(self):
418422 'Wheelbase' , 'Length' ])
419423 self .assertEqual (len (tblgrp ), 12 )
420424
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' )
422426 def test_column_slice (self ):
423427 df = self .get_cars_df ().sort_values (SORT_KEYS )
424428 tbl = self .table .sort_values (SORT_KEYS )
@@ -445,7 +449,7 @@ def test_column_slice(self):
445449 self .assertEqual (list (tblgrp .columns ), ['Origin' , 'MSRP' ])
446450 self .assertEqual (len (tblgrp ), 12 )
447451
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' )
449453 def test_column_nth (self ):
450454 df = self .get_cars_df ().sort_values (SORT_KEYS )
451455 tbl = self .table .sort_values (SORT_KEYS )
@@ -596,7 +600,7 @@ def test_nunique(self):
596600 with self .assertRaises (AttributeError ):
597601 tbl .groupby ('Origin' ).nunique ()
598602
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' )
600604 def test_column_value_counts (self ):
601605 df = self .get_cars_df ().sort_values (SORT_KEYS )
602606 tbl = self .table .sort_values (SORT_KEYS )
@@ -666,7 +670,8 @@ def test_column_max(self):
666670 self .assertEqual (tblgrp .__class__ .__name__ , 'CASTable' )
667671 self .assertTablesEqual (dfgrp .reset_index (), tblgrp , sortby = ['Origin' , 'EngineSize' ])
668672
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' )
670675 def test_max (self ):
671676 df = self .get_cars_df ().sort_values (SORT_KEYS )
672677 tbl = self .table .sort_values (SORT_KEYS )
@@ -725,7 +730,8 @@ def test_column_min(self):
725730 self .assertEqual (tblgrp .__class__ .__name__ , 'CASTable' )
726731 self .assertTablesEqual (dfgrp .reset_index (), tblgrp , sortby = ['Origin' , 'EngineSize' ])
727732
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' )
729735 def test_min (self ):
730736 df = self .get_cars_df ().sort_values (SORT_KEYS )
731737 tbl = self .table .sort_values (SORT_KEYS )
@@ -854,7 +860,7 @@ def test_median(self):
854860 self .assertEqual (tblgrp .__class__ .__name__ , 'CASTable' )
855861 self .assertTablesEqual (dfgrp , tblgrp , sortby = None )
856862
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' )
858864 def test_column_mode (self ):
859865 df = self .get_cars_df ().sort_values (SORT_KEYS )
860866 tbl = self .table .sort_values (SORT_KEYS )
@@ -880,7 +886,7 @@ def test_column_mode(self):
880886 tblgrp = tbl ['EngineSize' ].query ('Origin ^= "USA"' ).groupby ('Origin' , as_index = False ).mode ()
881887 self .assertTablesEqual (dfgrp .reset_index (level = 0 ), tblgrp , sortby = None )
882888
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' )
884890 def test_mode (self ):
885891 df = self .get_cars_df ().sort_values (SORT_KEYS )
886892 tbl = self .table .sort_values (SORT_KEYS )
@@ -1438,7 +1444,7 @@ def test_probt(self):
14381444 self .assertEqual (tblgrp .__class__ .__name__ , 'CASTable' )
14391445 self .assertEqual (len (tblgrp ), 3 )
14401446
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' )
14421448 def test_column_describe (self ):
14431449 df = self .get_cars_df ().sort_values (SORT_KEYS )
14441450 tbl = self .table .sort_values (SORT_KEYS )
@@ -1464,7 +1470,7 @@ def test_column_describe(self):
14641470# tblgrp = tblgrp.drop('Origin', axis=1)
14651471# self.assertTablesEqual(dfgrp, tblgrp, sortby=False, decimals=5)
14661472
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' )
14681474 def test_describe (self ):
14691475 df = self .get_cars_df ().sort_values (SORT_KEYS )
14701476 tbl = self .table .sort_values (SORT_KEYS )
@@ -1481,7 +1487,7 @@ def test_describe(self):
14811487 tblgrp = tblgrp .drop ('Origin' , axis = 1 )
14821488 self .assertTablesEqual (dfgrp , tblgrp , sortby = None , decimals = 5 )
14831489
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' )
14851491 def test_column_to_frame (self ):
14861492 tbl = self .table .sort_values (SORT_KEYS )
14871493
@@ -1497,7 +1503,7 @@ def test_column_to_frame(self):
14971503 self .assertEqual (len (tblgrp ), 428 )
14981504 self .assertEqual (tblgrp .index .names , [None ])
14991505
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' )
15011507 def test_to_frame (self ):
15021508 tbl = self .table .sort_values (SORT_KEYS )
15031509
@@ -1509,7 +1515,7 @@ def test_to_frame(self):
15091515 self .assertEqual (len (tblgrp ), 428 )
15101516 self .assertEqual (tblgrp .index .names , [None ])
15111517
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' )
15131519 def test_column_to_series (self ):
15141520 tbl = self .table .sort_values (SORT_KEYS )
15151521
@@ -1521,7 +1527,7 @@ def test_column_to_series(self):
15211527 self .assertEqual (len (tblgrp ), 428 )
15221528 self .assertEqual (tblgrp .index .names , ['Origin' ])
15231529
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' )
15251531 def test_to_series (self ):
15261532 tbl = self .table .sort_values (SORT_KEYS )
15271533
0 commit comments