From 9bdc82bf1c54cc93ce324d268049901646a459dd Mon Sep 17 00:00:00 2001 From: Denis Alexeev Date: Wed, 3 Mar 2021 14:53:57 +0300 Subject: [PATCH 1/2] issue-440 --- allure-python-commons/src/utils.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/allure-python-commons/src/utils.py b/allure-python-commons/src/utils.py index a920d8f0..e5df1148 100644 --- a/allure-python-commons/src/utils.py +++ b/allure-python-commons/src/utils.py @@ -224,6 +224,9 @@ def func_parameters(func, *args, **kwargs): >>> args_kwargs(1, 2, 5, 6) [('a', '1'), ('b', '2'), ('c', '5'), ('d', '6')] + >>> args_kwargs(1, b=2) + [('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')] + >>> @helper ... def varargs(*a): ... pass @@ -307,7 +310,7 @@ def func_parameters(func, *args, **kwargs): args_dict = dict(zip(arg_spec.args, args)) if arg_spec.defaults: - kwargs_defaults_dict = dict(zip(arg_spec.args[len(args):], arg_spec.defaults)) + kwargs_defaults_dict = dict(zip(arg_spec.args[-len(arg_spec.defaults):], arg_spec.defaults)) parameters.update(kwargs_defaults_dict) if arg_spec.varargs: @@ -319,13 +322,17 @@ def func_parameters(func, *args, **kwargs): args_dict.pop(arg_spec.args[0], None) if kwargs: + keys = list(kwargs.keys()) + for key in tuple(keys): + if key in arg_order: + keys.remove(key) if sys.version_info < (3, 6): # Sort alphabetically as old python versions does # not preserve call order for kwargs - arg_order.extend(sorted(list(kwargs.keys()))) + arg_order.extend(sorted(keys)) else: # Keep py3.6 behaviour to preserve kwargs order - arg_order.extend(list(kwargs.keys())) + arg_order.extend(keys) parameters.update(kwargs) parameters.update(args_dict) From 15654590015b0f01c6c9343013189c17493c254f Mon Sep 17 00:00:00 2001 From: Denis Alexeev Date: Wed, 3 Mar 2021 17:13:11 +0300 Subject: [PATCH 2/2] issue-440 (delete redundant code) --- allure-python-commons/src/utils.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/allure-python-commons/src/utils.py b/allure-python-commons/src/utils.py index e5df1148..47278c05 100644 --- a/allure-python-commons/src/utils.py +++ b/allure-python-commons/src/utils.py @@ -322,17 +322,13 @@ def func_parameters(func, *args, **kwargs): args_dict.pop(arg_spec.args[0], None) if kwargs: - keys = list(kwargs.keys()) - for key in tuple(keys): - if key in arg_order: - keys.remove(key) if sys.version_info < (3, 6): # Sort alphabetically as old python versions does # not preserve call order for kwargs - arg_order.extend(sorted(keys)) + arg_order.extend(sorted(list(kwargs.keys()))) else: # Keep py3.6 behaviour to preserve kwargs order - arg_order.extend(keys) + arg_order.extend(list(kwargs.keys())) parameters.update(kwargs) parameters.update(args_dict)