Skip to content

Commit

Permalink
Merge 97b752d into 360747b
Browse files Browse the repository at this point in the history
  • Loading branch information
jlstevens committed May 18, 2017
2 parents 360747b + 97b752d commit 2bb9f71
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
9 changes: 5 additions & 4 deletions holoviews/core/spaces.py
Expand Up @@ -458,7 +458,8 @@ def __init__(self, callable, **params):
**dict(params, name=util.callable_name(callable)))
self._memoized = {}
self._is_overlay = False

self.args = None
self.kwargs = None

@property
def argspec(self):
Expand All @@ -485,7 +486,7 @@ def clone(self, callable=None, **overrides):

def __call__(self, *args, **kwargs):
# Nothing to do for callbacks that accept no arguments
(inargs, inkwargs) = (args, kwargs)
(self.args, self.kwargs) = (args, kwargs)
if not args and not kwargs: return self.callable()
inputs = [i for i in self.inputs if isinstance(i, DynamicMap)]
streams = []
Expand Down Expand Up @@ -518,8 +519,8 @@ def __call__(self, *args, **kwargs):
try:
ret = self.callable(*args, **kwargs)
except:
posstr = ', '.join(['%r' % el for el in inargs]) if inargs else ''
kwstr = ', '.join('%s=%r' % (k,v) for k,v in inkwargs.items())
posstr = ', '.join(['%r' % el for el in self.args]) if self.args else ''
kwstr = ', '.join('%s=%r' % (k,v) for k,v in self.kwargs.items())
argstr = ', '.join([el for el in [posstr, kwstr] if el])
message = ("Exception raised in callable '{name}' of type '{ctype}'.\n"
"Invoked as {name}({argstr})")
Expand Down
21 changes: 21 additions & 0 deletions tests/testcallable.py
Expand Up @@ -198,6 +198,27 @@ def mixed_example(a,b, c=10, d=20):
self.assertEqual(Callable(mixed_example)(3,5,5), 33)


class TestLastArgsKwargs(ComparisonTestCase):

def test_args_none_before_invocation(self):
c = Callable(lambda x,y: x+y)
self.assertEqual(c.args, None)

def test_kwargs_none_before_invocation(self):
c = Callable(lambda x,y: x+y)
self.assertEqual(c.kwargs, None)

def test_args_invocation(self):
c = Callable(lambda x,y: x+y)
c(1,2)
self.assertEqual(c.args, (1,2))

def test_kwargs_invocation(self):
c = Callable(lambda x,y: x+y)
c(x=1,y=4)
self.assertEqual(c.kwargs, dict(x=1,y=4))


class TestDynamicMapInvocation(ComparisonTestCase):
"""
Test that DynamicMap passes kdims and stream parameters correctly to
Expand Down

0 comments on commit 2bb9f71

Please sign in to comment.