def test_get_signature_infers_defaults(): def func(foo="bar"): pass signature = get_signature(func) assert signature.parameters == ("foo",) assert signature.required == tuple() assert signature.optional == {"foo": "bar"}
def test_get_signature_works_with_mixed_arg_kwarg(): def func(foo, bar, baz="buz"): pass signature = get_signature(func) assert signature.parameters == ("foo", "bar", "baz") assert signature.required == ("foo", "bar") assert signature.optional == {"baz": "buz"}
def test_get_signature_returns_empty_dict_for_no_defaults(): def func(foo, bar, baz): pass signature = get_signature(func) assert signature.parameters == ("foo", "bar", "baz") assert signature.required == ("foo", "bar", "baz") assert signature.optional == {}
def test_get_signature_infers_defaults(): def func(foo='bar'): pass signature = get_signature(func) assert signature.parameters == ('foo', ) assert signature.required == tuple() assert signature.optional == {'foo': 'bar'}
def test_get_signature_works_with_mixed_arg_kwarg(): def func(foo, bar, baz='buz'): pass signature = get_signature(func) assert signature.parameters == ('foo', 'bar', 'baz') assert signature.required == ('foo', 'bar') assert signature.optional == {'baz': 'buz'}
def test_get_signature_returns_empty_dict_for_no_defaults(): def func(foo, bar, baz): pass signature = get_signature(func) assert signature.parameters == ('foo', 'bar', 'baz') assert signature.required == ('foo', 'bar', 'baz') assert signature.optional == {}
def test_get_signature_doesnt_conflate_objects_defined_inside(): def func(foo, bar, baz=2): blah = foo * 42 return blah signature = get_signature(func) assert signature.parameters == ("foo", "bar", "baz") assert signature.required == ("foo", "bar") assert signature.optional == {"baz": 2}
def test_get_signature_doesnt_conflate_objects_defined_inside(): def func(foo, bar, baz=2): blah = foo * 42 return blah signature = get_signature(func) assert signature.parameters == ('foo', 'bar', 'baz') assert signature.required == ('foo', 'bar') assert signature.optional == {'baz': 2}
def loop(in_except): signatures = self._signatures for function, prev_func in functions_iter: if _return_after is not None and prev_func is not _NO_PREVIOUS: if prev_func.__name__ == _return_after: break try: if function not in signatures: signatures[function] = get_signature(function) deps = resolve_dependencies(signatures[function], state) skip = ( # When function wants exception but we don't have it. not in_except and 'exception' in deps.signature.required or # When function doesn't want exception but we have it. in_except and 'exception' not in deps.signature.parameters ) if not skip: new_state = function(**deps.as_kwargs) if new_state is not None: state.update(new_state) if in_except and state['exception'] is None: # exception is cleared, return to normal flow if PYTHON_2: sys.exc_clear() return except: if _raise_immediately: raise state['exception'] = sys.exc_info()[1] loop(True) if in_except: # an exception occurred while we were handling another # exception, but now it's been cleared, so we return to # the normal flow return if in_except: raise # exception hasn't been handled, reraise