@@ -1528,7 +1528,7 @@ def _replacer(data, key):
1528
1528
return key
1529
1529
1530
1530
1531
- def unpack_labeled_data (func ):
1531
+ def unpack_labeled_data (wl_args = None , wl_kwargs = 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,20 +1537,33 @@ def foo(ax, *args, **kwargs)
1537
1537
1538
1538
so this is suitable for use with Axes methods.
1539
1539
"""
1540
- @functools .wraps (func )
1541
- def inner (ax , * args , ** kwargs ):
1542
- data = kwargs .pop ('data' , None )
1543
- if data is not None :
1544
- if rcParams ['unpack_labeled' ]:
1545
- args = tuple (_replacer (data , a ) for a in args )
1546
- kwargs = dict ((k , _replacer (data , v ))
1547
- for k , v in six .iteritems (kwargs ))
1548
- else :
1549
- raise ValueError ("Trying to unpack labeled data, but "
1550
- "rcParams['unpack_labeled'] is False" )
1551
-
1552
- return func (ax , * args , ** kwargs )
1553
- return inner
1540
+ if wl_kwargs is not None :
1541
+ wl_kwargs = set (wl_kwargs )
1542
+ if wl_args is not None :
1543
+ wl_args = set (wl_args )
1544
+
1545
+ def param (func ):
1546
+ @functools .wraps (func )
1547
+ def inner (ax , * args , ** kwargs ):
1548
+ data = kwargs .pop ('data' , None )
1549
+ if data is not None :
1550
+ if wl_args is None :
1551
+ args = tuple (_replacer (data , a ) for a in args )
1552
+ else :
1553
+ args = tuple (_replacer (data , a ) if j in wl_args else a
1554
+ for j , a in enumerate (args ))
1555
+
1556
+ if wl_kwargs is None :
1557
+ kwargs = dict ((k , _replacer (data , v ))
1558
+ for k , v in six .iteritems (kwargs ))
1559
+ else :
1560
+ kwargs = dict (
1561
+ (k , _replacer (data , v ) if k in wl_kwargs else v )
1562
+ for k , v in six .iteritems (kwargs ))
1563
+
1564
+ return func (ax , * args , ** kwargs )
1565
+ return inner
1566
+ return param
1554
1567
1555
1568
verbose .report ('matplotlib version %s' % __version__ )
1556
1569
verbose .report ('verbose.level %s' % verbose .level )
0 commit comments