Skip to content

Commit ac51ec2

Browse files
committed
-
1 parent 6dc9eac commit ac51ec2

File tree

3 files changed

+20
-205
lines changed

3 files changed

+20
-205
lines changed

source_py2/python_toolbox/monkeypatching_tools.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,13 @@ def change_defaults_(function_, new_defaults_):
113113
force_dict_type=collections.OrderedDict
114114
)
115115

116+
non_existing_arguments = set(new_defaults) - set(defaultful_parameters)
117+
if non_existing_arguments:
118+
raise Exception("Arguments %s are not defined, or do not have a "
119+
"default defined. (Can't create default value for "
120+
"argument that has no existing default.)"
121+
% non_existing_arguments)
122+
116123
for i, parameter_name in \
117124
enumerate(non_keyword_only_defaultful_parameters):
118125
if parameter_name in new_defaults_:

source_py2/test_python_toolbox/test_monkeypatching_tools.py

Lines changed: 0 additions & 205 deletions
This file was deleted.

source_py2/test_python_toolbox/test_monkeypatching_tools/test_change_defaults.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,17 @@ def f2(alpha, beta, gamma=10, delta=20, *args, **kwargs):
2323
def f3(alpha, beta, gamma=10, delta=20, *args, **kwargs):
2424
return (alpha, beta, args, gamma, delta, kwargs)
2525
assert f3(1, 2) == (1, 2, (), 1000, 20, {})
26+
27+
@monkeypatching_tools.change_defaults(new_defaults={'x': 'A', 'z': 'C'})
28+
def f4(x='a', y='b', z='c'):
29+
return (x, y, z)
30+
assert f4() == ('A', 'b', 'C')
31+
32+
with cute_testing.RaiseAssertor(Exception):
33+
@monkeypatching_tools.change_defaults(new_defaults={'x': 'A', 'z': 'C',
34+
'nonexistant': 7,})
35+
def f5(x='a', y='b', z='c'):
36+
return (x, y, z)
37+
38+
2639

0 commit comments

Comments
 (0)