Skip to content

Commit 286c9d3

Browse files
authored
Merge pull request #157 from bkemper24/main
cleanup deprecation warnings
2 parents d07a669 + 4cd9daf commit 286c9d3

File tree

5 files changed

+219
-87
lines changed

5 files changed

+219
-87
lines changed

swat/cas/connection.py

100644100755
Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import six
3737
import warnings
3838
import weakref
39+
import pandas as pd
3940
from six.moves.urllib.parse import urlparse, urlencode, urljoin
4041
from . import rest
4142
from .. import clib
@@ -63,6 +64,9 @@
6364
RETRY_ACTION_CODE = 0x280034
6465
SESSION_ABORTED_CODE = 0x2D51AC
6566

67+
pd_version = tuple([int(x) for x in re.match(r'^(\d+)\.(\d+)\.(\d+)',
68+
pd.__version__).groups()])
69+
6670

6771
def _option_handler(key, value):
6872
''' Handle option changes '''
@@ -282,8 +286,8 @@ def _get_connection_info(cls, hostname, port, username, password, protocol, path
282286
port = port or cf.get_option('cas.port')
283287

284288
logger.debug('Connection info: hostname=%s port=%s protocol=%s '
285-
'username=%s password=%s path=%s',
286-
hostname, port, protocol, username, password, path)
289+
'username=%s path=%s',
290+
hostname, port, protocol, username, path)
287291

288292
# Always make hostname a list
289293
if not isinstance(hostname, items_types):
@@ -1480,7 +1484,12 @@ def _extract_dtypes(self, df):
14801484
'''
14811485
out = collections.OrderedDict()
14821486

1483-
for key, value in df.dtypes.iteritems():
1487+
# iteritems is deprecated in pandas 1.5.0, use items instead;
1488+
# items available in 0.21.1
1489+
dtype_iter = (df.dtypes.items() if pd_version >= (0, 21, 1)
1490+
else df.dtypes.iteritems())
1491+
1492+
for key, value in dtype_iter:
14841493
value = value.name
14851494

14861495
if value == 'object':
@@ -1647,11 +1656,21 @@ def upload(self, data, importoptions=None, casout=None, date_format=None, **kwar
16471656
delete = True
16481657
filename = tmp.name
16491658
name = os.path.splitext(os.path.basename(filename))[0]
1650-
data.to_csv(filename, encoding='utf-8',
1651-
index=False, sep=a2n(',', 'utf-8'),
1652-
decimal=a2n('.', 'utf-8'),
1653-
date_format=a2n(date_format, 'utf-8'),
1654-
line_terminator=a2n('\r\n', 'utf-8'))
1659+
1660+
# line_terminator changed to lineterminator in pandas 1.5.0
1661+
if pd_version >= (1, 5, 0):
1662+
data.to_csv(filename, encoding='utf-8',
1663+
index=False, sep=a2n(',', 'utf-8'),
1664+
decimal=a2n('.', 'utf-8'),
1665+
date_format=a2n(date_format, 'utf-8'),
1666+
lineterminator=a2n('\r\n', 'utf-8'))
1667+
else:
1668+
data.to_csv(filename, encoding='utf-8',
1669+
index=False, sep=a2n(',', 'utf-8'),
1670+
decimal=a2n('.', 'utf-8'),
1671+
date_format=a2n(date_format, 'utf-8'),
1672+
line_terminator=a2n('\r\n', 'utf-8'))
1673+
16551674
df_dtypes = self._extract_dtypes(data)
16561675
importoptions['locale'] = 'EN-us'
16571676

swat/cas/results.py

100644100755
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,12 @@ def _repr_html_(self):
9090
try:
9191
import IPython
9292
from pandas.io.formats import console
93-
from distutils.version import LooseVersion
93+
import packaging.version
9494
except ImportError:
9595
pass
9696
else:
97-
if LooseVersion(IPython.__version__) < LooseVersion('3.0'):
97+
if (packaging.version.parse(IPython.__version__)
98+
< packaging.version.parse('3.0')):
9899
if console.in_qtconsole():
99100
# 'HTML output is disabled in QtConsole'
100101
return None

swat/cas/table.py

100644100755
Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ def merge(left, right, how='inner', on=None, left_on=None, right_on=None,
295295
The key from `left` to join on. This is used if the
296296
column names to join on are different in each table.
297297
right_on : string, optional
298-
The key from `right` to join on. This s used if the
298+
The key from `right` to join on. This is used if the
299299
column names to join on are different in each table.
300300
left_index : boolean, optional
301301
Not supported.
@@ -337,11 +337,17 @@ def merge(left, right, how='inner', on=None, left_on=None, right_on=None,
337337
if on is None and left_on is None and right_on is None:
338338
raise SWATError('A column name is required for joining tables.')
339339
elif left_on is None and right_on is None:
340+
if not isinstance(on, str):
341+
raise TypeError('`on` parameter must be a string')
340342
left_on = on
341343
right_on = on
342344
elif left_on is None and right_on is not None:
345+
if not isinstance(right_on, str):
346+
raise TypeError('`right_on` parameter must be a string')
343347
left_on = right_on or on
344348
elif left_on is not None and right_on is None:
349+
if not isinstance(left_on, str):
350+
raise TypeError('`left_on` parameter must be a string')
345351
right_on = left_on or on
346352

347353
# Find overlapping columns
@@ -3506,7 +3512,13 @@ def abs(self):
35063512
'''
35073513
tbl = self._materialize(prefix='_ABS')
35083514
code = []
3509-
for name, dtype in tbl.dtypes.iteritems():
3515+
3516+
# iteritems is deprecated in pandas 1.5.0, use items instead;
3517+
# items available in 0.21.1
3518+
dtype_iter = (tbl.dtypes.items() if pd_version >= (0, 21, 1)
3519+
else tbl.dtypes.iteritems())
3520+
3521+
for name, dtype in dtype_iter:
35103522
if dtype not in ['char', 'varchar', 'binary', 'varbinary',
35113523
'date', 'time', 'datetime']:
35123524
code.append(' %s = ABS(%s);' % (_nlit(name), _nlit(name)))
@@ -3524,7 +3536,13 @@ def _bool(self):
35243536
cvars = []
35253537
ccode = []
35263538
groups = self.get_groupby_vars()
3527-
for name, dtype in self.dtypes.iteritems():
3539+
3540+
# iteritems is deprecated in pandas 1.5.0, use items instead;
3541+
# items available in 0.21.1
3542+
dtype_iter = (self.dtypes.items() if pd_version >= (0, 21, 1)
3543+
else self.dtypes.iteritems())
3544+
3545+
for name, dtype in dtype_iter:
35283546
if name in groups:
35293547
continue
35303548
boolname = _nlit('%s__bool__' % name)
@@ -3665,7 +3683,12 @@ def clip(self, lower=None, upper=None, axis=None):
36653683

36663684
tbl = self._materialize(prefix='_CLIP')
36673685
code = []
3668-
for name, dtype in tbl.dtypes.iteritems():
3686+
3687+
# iteritems is deprecated in 1.5.0, use items instead;
3688+
dtype_iter = (tbl.dtypes.items() if pd_version >= (0, 21, 1)
3689+
else tbl.dtypes.iteritems())
3690+
3691+
for name, dtype in dtype_iter:
36693692
if dtype not in ['char', 'varchar', 'binary', 'varbinary',
36703693
'date', 'time', 'datetime']:
36713694
code.append(fmt % (_nlit(name), _nlit(name), _nlit(name)))
@@ -3857,7 +3880,7 @@ def _percentiles(self, percentiles=None, format_labels=True):
38573880
out = out.unstack()
38583881

38593882
if len(out.index.names) > 1:
3860-
if pd_version >= (1, 0, 0):
3883+
if pd_version >= (0, 24, 0):
38613884
out = out.set_index(pd.MultiIndex(levels=out.index.levels,
38623885
codes=out.index.codes,
38633886
names=out.index.names[:-1] + [None]))
@@ -6212,8 +6235,11 @@ def to_re_sub(patt, to):
62126235
# Cache column list
62136236
if col is None and columns is None:
62146237
dtypes = self.dtypes
6215-
columns = [x[0] for x in dtypes.iteritems()]
6216-
dtypes = [x[1] for x in dtypes.iteritems()]
6238+
# iteritems is deprecated in pandas 1.5.0, use items instead;
6239+
columns = [x[0] for x in (dtypes.items()
6240+
if pd_version >= (0, 21, 1) else dtypes.iteritems())]
6241+
dtypes = [x[1] for x in (dtypes.items()
6242+
if pd_version >= (0, 21, 1) else dtypes.iteritems())]
62176243

62186244
# Apply replacements for each column
62196245
for from_, to in repl_dict.items():
@@ -10187,7 +10213,8 @@ def value_counts(self, normalize=False, sort=True, ascending=False,
1018710213
groups = self.get_groupby_vars()
1018810214
if groups:
1018910215
out.name = tmpname
10190-
sum = out.sum(level=list(range(len(out.index.names) - 1))).to_frame()
10216+
sum = out.groupby(level=list(range(len(out.index.names) - 1))).\
10217+
sum().to_frame()
1019110218
out = out.reset_index(level=-1)
1019210219
out = pd.merge(out, sum, left_index=True, right_index=True, how='inner')
1019310220
out[tmpname] = out[tmpname + '_x'] / out[tmpname + '_y']

swat/tests/cas/test_bygroups.py

100644100755
Lines changed: 52 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -818,11 +818,17 @@ def test_mean(self):
818818
df = self.get_cars_df().sort_values(SORT_KEYS)
819819
tbl = self.table.sort_values(SORT_KEYS)
820820

821-
dfgrp = df.groupby('Origin').mean()
821+
if pd_version >= (1, 1, 0):
822+
dfgrp = df.groupby('Origin').mean(numeric_only=True)
823+
else:
824+
dfgrp = df.groupby('Origin').mean()
822825
tblgrp = tbl.groupby('Origin').mean()
823826
self.assertTablesEqual(dfgrp, tblgrp, sortby=None, include_index=True, decimals=5)
824827

825-
dfgrp = df.groupby('Origin', as_index=False).mean()
828+
if pd_version >= (1, 1, 0):
829+
dfgrp = df.groupby('Origin', as_index=False).mean(numeric_only=True)
830+
else:
831+
dfgrp = df.groupby('Origin', as_index=False).mean()
826832
tblgrp = tbl.groupby('Origin', as_index=False).mean()
827833
self.assertTablesEqual(dfgrp, tblgrp, sortby=None, decimals=5)
828834

@@ -831,7 +837,10 @@ def test_mean(self):
831837
#
832838
swat.options.cas.dataset.bygroup_casout_threshold = 2
833839

834-
dfgrp = df.groupby('Origin', as_index=False).mean()
840+
if pd_version >= (1, 1, 0):
841+
dfgrp = df.groupby('Origin', as_index=False).mean(numeric_only=True)
842+
else:
843+
dfgrp = df.groupby('Origin', as_index=False).mean()
835844
tblgrp = tbl.groupby('Origin', as_index=False).mean()
836845
self.assertEqual(tblgrp.__class__.__name__, 'CASTable')
837846
self.assertTablesEqual(dfgrp, tblgrp,
@@ -866,11 +875,17 @@ def test_median(self):
866875
df = self.get_cars_df().sort_values(SORT_KEYS)
867876
tbl = self.table.sort_values(SORT_KEYS)
868877

869-
dfgrp = df.groupby('Origin').median()
878+
if pd_version >= (1, 1, 0):
879+
dfgrp = df.groupby('Origin').median(numeric_only=True)
880+
else:
881+
dfgrp = df.groupby('Origin').median()
870882
tblgrp = tbl.groupby('Origin').median()
871883
self.assertTablesEqual(dfgrp, tblgrp, sortby=None, include_index=True)
872884

873-
dfgrp = df.groupby('Origin', as_index=False).median()
885+
if pd_version >= (1, 1, 0):
886+
dfgrp = df.groupby('Origin', as_index=False).median(numeric_only=True)
887+
else:
888+
dfgrp = df.groupby('Origin', as_index=False).median()
874889
tblgrp = tbl.groupby('Origin', as_index=False).median()
875890
self.assertTablesEqual(dfgrp, tblgrp, sortby=None)
876891

@@ -879,7 +894,10 @@ def test_median(self):
879894
#
880895
swat.options.cas.dataset.bygroup_casout_threshold = 2
881896

882-
dfgrp = df.groupby('Origin', as_index=False).median()
897+
if pd_version >= (1, 1, 0):
898+
dfgrp = df.groupby('Origin', as_index=False).median(numeric_only=True)
899+
else:
900+
dfgrp = df.groupby('Origin', as_index=False).median()
883901
tblgrp = tbl.groupby('Origin', as_index=False).median()
884902
self.assertEqual(tblgrp.__class__.__name__, 'CASTable')
885903
self.assertTablesEqual(dfgrp, tblgrp, sortby=['Origin'])
@@ -1028,11 +1046,17 @@ def test_sum(self):
10281046
df = self.get_cars_df().sort_values(SORT_KEYS)
10291047
tbl = self.table.sort_values(SORT_KEYS)
10301048

1031-
dfgrp = df.groupby('Origin').sum()
1049+
if pd_version >= (1, 1, 0):
1050+
dfgrp = df.groupby('Origin').sum(numeric_only=True)
1051+
else:
1052+
dfgrp = df.groupby('Origin').sum()
10321053
tblgrp = tbl.groupby('Origin').sum()
10331054
self.assertTablesEqual(dfgrp, tblgrp, sortby=None, decimals=5)
10341055

1035-
dfgrp = df.groupby('Origin', as_index=False).sum()
1056+
if pd_version >= (1, 1, 0):
1057+
dfgrp = df.groupby('Origin', as_index=False).sum(numeric_only=True)
1058+
else:
1059+
dfgrp = df.groupby('Origin', as_index=False).sum()
10361060
tblgrp = tbl.groupby('Origin', as_index=False).sum()
10371061
self.assertTablesEqual(dfgrp, tblgrp, decimals=5, sortby=None)
10381062

@@ -1041,7 +1065,10 @@ def test_sum(self):
10411065
#
10421066
swat.options.cas.dataset.bygroup_casout_threshold = 2
10431067

1044-
dfgrp = df.groupby('Origin', as_index=False).sum()
1068+
if pd_version >= (1, 1, 0):
1069+
dfgrp = df.groupby('Origin', as_index=False).sum(numeric_only=True)
1070+
else:
1071+
dfgrp = df.groupby('Origin', as_index=False).sum()
10451072
tblgrp = tbl.groupby('Origin', as_index=False).sum()
10461073
self.assertEqual(tblgrp.__class__.__name__, 'CASTable')
10471074
self.assertTablesEqual(dfgrp, tblgrp, decimals=5,
@@ -1076,7 +1103,10 @@ def test_std(self):
10761103
df = self.get_cars_df().sort_values(SORT_KEYS)
10771104
tbl = self.table.sort_values(SORT_KEYS)
10781105

1079-
dfgrp = df.groupby('Origin').std()
1106+
if pd_version >= (1, 5, 0):
1107+
dfgrp = df.groupby('Origin').std(numeric_only=True)
1108+
else:
1109+
dfgrp = df.groupby('Origin').std()
10801110
tblgrp = tbl.groupby('Origin').std()
10811111
self.assertTablesEqual(dfgrp, tblgrp, decimals=5, sortby=None)
10821112

@@ -1127,11 +1157,17 @@ def test_var(self):
11271157
df = self.get_cars_df().sort_values(SORT_KEYS)
11281158
tbl = self.table.sort_values(SORT_KEYS)
11291159

1130-
dfgrp = df.groupby('Origin').var()
1160+
if pd_version >= (1, 5, 0):
1161+
dfgrp = df.groupby('Origin').var(numeric_only=True)
1162+
else:
1163+
dfgrp = df.groupby('Origin').var()
11311164
tblgrp = tbl.groupby('Origin').var()
11321165
self.assertTablesEqual(dfgrp, tblgrp, decimals=3, sortby=None)
11331166

1134-
dfgrp = df.groupby('Origin', as_index=False).var()
1167+
if pd_version >= (1, 5, 0):
1168+
dfgrp = df.groupby('Origin', as_index=False).var(numeric_only=True)
1169+
else:
1170+
dfgrp = df.groupby('Origin', as_index=False).var()
11351171
tblgrp = tbl.groupby('Origin', as_index=False).var()
11361172
self.assertTablesEqual(dfgrp, tblgrp, decimals=3, sortby=None)
11371173

@@ -1140,7 +1176,10 @@ def test_var(self):
11401176
#
11411177
swat.options.cas.dataset.bygroup_casout_threshold = 2
11421178

1143-
dfgrp = df.groupby('Origin', as_index=False).var()
1179+
if pd_version >= (1, 5, 0):
1180+
dfgrp = df.groupby('Origin', as_index=False).var(numeric_only=True)
1181+
else:
1182+
dfgrp = df.groupby('Origin', as_index=False).var()
11441183
tblgrp = tbl.groupby('Origin', as_index=False).var()
11451184
self.assertEqual(tblgrp.__class__.__name__, 'CASTable')
11461185
self.assertTablesEqual(dfgrp, tblgrp, decimals=3,

0 commit comments

Comments
 (0)