Skip to content

Commit 1f189f1

Browse files
committed
fix(func): 1-item outs broke with token modifiers...
+ _norm_kwargs: + use isinstance() instead of type-equality checks, to support new modier classes; + avoid excessive dict searches with local vars.
1 parent ebfca45 commit 1f189f1

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

graphkit/functional.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,18 +84,20 @@ def __init__(self, fn=None, **kwargs):
8484
def _normalize_kwargs(self, kwargs):
8585

8686
# Allow single value for needs parameter
87-
if 'needs' in kwargs and type(kwargs['needs']) == str:
88-
assert kwargs['needs'], "empty string provided for `needs` parameters"
89-
kwargs['needs'] = [kwargs['needs']]
87+
needs = kwargs['needs']
88+
if isinstance(needs, str) and not isinstance(needs, optional):
89+
assert needs, "empty string provided for `needs` parameters"
90+
kwargs['needs'] = [needs]
9091

9192
# Allow single value for provides parameter
92-
if 'provides' in kwargs and type(kwargs['provides']) == str:
93-
assert kwargs['provides'], "empty string provided for `needs` parameters"
94-
kwargs['provides'] = [kwargs['provides']]
93+
provides = kwargs.get('provides')
94+
if isinstance(provides, str):
95+
assert provides, "empty string provided for `needs` parameters"
96+
kwargs['provides'] = [provides]
9597

9698
assert kwargs['name'], "operation needs a name"
97-
assert type(kwargs['needs']) == list, "no `needs` parameter provided"
98-
assert type(kwargs['provides']) == list, "no `provides` parameter provided"
99+
assert isinstance(kwargs['needs'], list), "no `needs` parameter provided"
100+
assert isinstance(kwargs['provides'], list), "no `provides` parameter provided"
99101
assert hasattr(kwargs['fn'], '__call__'), "operation was not provided with a callable"
100102

101103
if type(kwargs['params']) is not dict:

0 commit comments

Comments
 (0)