Skip to content

Commit 7bd4076

Browse files
alixdammangdementen
authored andcommitted
deprecated Axis.group and Axis.all (closes #148)
1 parent b1c7202 commit 7bd4076

File tree

3 files changed

+123
-149
lines changed

3 files changed

+123
-149
lines changed

doc/source/changes/version_0_21.rst.inc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ Miscellaneous improvements
9797
The axes are transposed compared to what they used to, because the last axis is often used for time series.
9898
Also it considers a 1D array like a single series, not N series of 1 point.
9999

100-
* Axis.group is now deprecated (Syntax "age[10:19] >> 'teens'" must be used instead)
100+
* Axis.group and Axis.all are now deprecated
101+
(Syntax "age[10:19] >> 'teens'" or "age[:] >> 'all'" must be used instead)
101102
(closes :issue:`148`).
102103

103104
Fixes

larray/core.py

Lines changed: 43 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,10 +1046,9 @@ def extend(self, labels):
10461046
def iswildcard(self):
10471047
return self._iswildcard
10481048

1049-
# XXX: not sure I should offer an *args version
1050-
def group(self, *args, **kwargs):
1049+
def _group(self, *args, **kwargs):
10511050
"""
1052-
Returns a group (list or unique element) of label(s) usable in .sum or .filter
1051+
Deprecated.
10531052
10541053
Parameters
10551054
----------
@@ -1058,48 +1057,26 @@ def group(self, *args, **kwargs):
10581057
**kwargs
10591058
name of the group. There is no other accepted keywords.
10601059
1061-
Returns
1062-
-------
1063-
LGroup
1064-
group containing selected label(s).
1065-
1066-
Notes
1067-
-----
1068-
key is label-based (slice and fancy indexing are supported)
1069-
1070-
See Also
1071-
--------
1072-
LGroup
1073-
10741060
Examples
10751061
--------
10761062
>>> time = Axis('time', [2007, 2008, 2009, 2010])
1077-
>>> odd_years = time.group([2007, 2009], name='odd_years')
1063+
>>> odd_years = time._group([2007, 2009], name='odd_years')
10781064
>>> odd_years
10791065
time[2007, 2009] >> 'odd_years'
10801066
"""
10811067
name = kwargs.pop('name', None)
10821068
if kwargs:
1083-
raise ValueError("invalid keyword argument(s): %s"
1084-
% list(kwargs.keys()))
1069+
raise ValueError("invalid keyword argument(s): %s" % list(kwargs.keys()))
10851070
key = args[0] if len(args) == 1 else args
1086-
if isinstance(key, basestring):
1087-
key = to_keys(key)
1071+
return self[key] >> name if name else self[key]
10881072

1089-
if isinstance(key, (tuple, list)):
1090-
if any(isinstance(k, Group) for k in key):
1091-
k0 = key[0]
1092-
assert isinstance(k0, Group)
1093-
cls_ = k0.__class__
1094-
assert all(isinstance(k, cls_) for k in key[1:])
1095-
res = [k.with_axis(self) for k in key]
1096-
res = tuple(res) if isinstance(key, tuple) else res
1097-
return res
1098-
1099-
if isinstance(key, Group):
1100-
name = name if name is not None else key.name
1101-
return key.__class__(key.key, name, self)
1102-
return LGroup(key, name, self)
1073+
def group(self, *args, **kwargs):
1074+
group_name = kwargs.pop('name', None)
1075+
key = args[0] if len(args) == 1 else args
1076+
syntax = '{}[{}]'.format(self.name if self.name else 'axis', key)
1077+
if group_name is not None:
1078+
syntax += ' >> {}'.format(repr(group_name))
1079+
raise NotImplementedError('Axis.group is deprecated. Use {} instead.'.format(syntax))
11031080

11041081
def all(self, name=None):
11051082
"""
@@ -1114,7 +1091,10 @@ def all(self, name=None):
11141091
--------
11151092
Axis.group
11161093
"""
1117-
return self.group(slice(None), name=name if name is not None else "all")
1094+
axis_name = self.name if self.name else 'axis'
1095+
group_name = name if name else 'all'
1096+
raise NotImplementedError('Axis.all is deprecated. '
1097+
'Use {}[:] >> {} instead.'.format(axis_name, repr(group_name)))
11181098

11191099
def subaxis(self, key, name=None):
11201100
"""
@@ -1333,9 +1313,35 @@ def __iter__(self):
13331313

13341314
def __getitem__(self, key):
13351315
"""
1316+
Returns a group (list or unique element) of label(s) usable in .sum or .filter
1317+
13361318
key is a label-based key (slice and fancy indexing are supported)
1319+
1320+
Returns
1321+
-------
1322+
Group
1323+
group containing selected label(s)/position(s).
1324+
1325+
Notes
1326+
-----
1327+
key is label-based (slice and fancy indexing are supported)
13371328
"""
1338-
return self.group(key)
1329+
if isinstance(key, basestring):
1330+
key = to_keys(key)
1331+
1332+
if isinstance(key, (tuple, list)):
1333+
if any(isinstance(k, Group) for k in key):
1334+
k0 = key[0]
1335+
assert isinstance(k0, Group)
1336+
cls_ = k0.__class__
1337+
assert all(isinstance(k, cls_) for k in key[1:])
1338+
res = [k.with_axis(self) for k in key]
1339+
res = tuple(res) if isinstance(key, tuple) else res
1340+
return res
1341+
1342+
if isinstance(key, Group):
1343+
return key.__class__(key.key, key.name, self)
1344+
return LGroup(key, axis=self)
13391345

13401346
def __contains__(self, key):
13411347
return _to_tick(key) in self._mapping

0 commit comments

Comments
 (0)