Fix issue with parameters being False values

This commit is contained in:
Alessandro Molina 2014-12-03 17:17:56 +01:00
parent bb0f8dfb0f
commit 044094627f
2 changed files with 17 additions and 7 deletions

View File

@ -17,6 +17,10 @@ __all__ = [
_PY2 = bool(sys.version_info[0] == 2)
class _NotFound(object):
pass
_cached_argspecs = {}
def get_argspec(func):
try:
@ -77,12 +81,12 @@ def remove_argspec_params_from_params(func, params, remainder):
remainder = list(remainder)
remainder_len = len(remainder)
for i, var in enumerate(required_vars):
val = params.get(var, None)
if i < remainder_len and val:
remainder[i] = val
elif val:
remainder.append(val)
if val:
val = params.get(var, _NotFound)
if val is not _NotFound:
if i < remainder_len:
remainder[i] = val
else:
remainder.append(val)
del params[var]
# remove the optional positional variables (remainder) from the named parameters

View File

@ -37,6 +37,12 @@ def test_remove_argspec_params_from_params_none_remainder():
assert params == {'a': 1, 'b': 2}, params
assert remainder == None, repr(remainder)
def test_remove_argspec_params_from_params_none_param():
params, remainder = remove_argspec_params_from_params(mock_f, {'b':None}, [3, 3])
assert params == {}, params
assert remainder == (3, None), repr(remainder)
def mock_f2(self, a, b):
pass
@ -212,4 +218,4 @@ def test_path_translation():
assert translated == 'a_b', translated
translated = default_path_translator(u('f.ö.ö'))
assert translated == u('f_ö_ö'), translated
assert translated == u('f_ö_ö'), translated