@@ -1528,7 +1528,7 @@ def _replacer(data, key):
1528
1528
return key
1529
1529
1530
1530
1531
- def unpack_labeled_data (wl_args = None , wl_kwargs = None ):
1531
+ def unpack_labeled_data (wl_args = None , wl_kwargs = None , label_pos = None ):
1532
1532
"""
1533
1533
A decorator to add a 'data' kwarg to any a function. The signature
1534
1534
of the input function must be ::
@@ -1537,6 +1537,9 @@ def foo(ax, *args, **kwargs)
1537
1537
1538
1538
so this is suitable for use with Axes methods.
1539
1539
"""
1540
+ if label_pos is not None :
1541
+ label_arg , label_kwarg = label_pos
1542
+
1540
1543
if wl_kwargs is not None :
1541
1544
wl_kwargs = set (wl_kwargs )
1542
1545
if wl_args is not None :
@@ -1560,6 +1563,18 @@ def inner(ax, *args, **kwargs):
1560
1563
kwargs = dict (
1561
1564
(k , _replacer (data , v ) if k in wl_kwargs else v )
1562
1565
for k , v in six .iteritems (kwargs ))
1566
+ if (label_pos is not None and ('label' not in kwargs or
1567
+ kwargs ['label' ] is None )):
1568
+ if len (args ) > label_arg :
1569
+ try :
1570
+ kwargs ['label' ] = args [label_arg ].name
1571
+ except AttributeError :
1572
+ pass
1573
+ elif label_kwarg in kwargs :
1574
+ try :
1575
+ kwargs ['label' ] = args [label_kwarg ].name
1576
+ except AttributeError :
1577
+ pass
1563
1578
1564
1579
return func (ax , * args , ** kwargs )
1565
1580
return inner
0 commit comments