@@ -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