Thcipriani has uploaded a new change for review. https://gerrit.wikimedia.org/r/241076
Change subject: Fix log_context to detect positional argument ...................................................................... Fix log_context to detect positional argument If you add the `@log_context` decorator to a function with a logger argument and then pass logger as a positional argument you get: <TypeError> "[fn name] got multiple values for keyword argument 'logger'" This makes sure that keyword and positional arguments for logger are checked before passing logger as a keyword argument. Change-Id: Ibd36464538e7b0cdbb3e588f6761eb56f67e5bdc --- M scap/utils.py 1 file changed, 14 insertions(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/tools/scap refs/changes/76/241076/1 diff --git a/scap/utils.py b/scap/utils.py index 33ddd89..e811caf 100644 --- a/scap/utils.py +++ b/scap/utils.py @@ -9,6 +9,7 @@ import errno import fcntl import hashlib +import inspect import json import logging import os @@ -313,7 +314,19 @@ def arg_wrapper(func): @wraps(func) def context_wrapper(*args, **kwargs): - if 'logger' in kwargs: + argspec = inspect.getargspec(func) + + # Check if logger was passed as a positional argument + try: + l = args[argspec.args.index('logger')] + except IndexError: + l = None + + # Check if logger was passed as a keywork argument + if l is None: + l = kwargs.get('logger', None) + + if l is not None: return func(*args, **kwargs) with context_logger(context_name) as logger: -- To view, visit https://gerrit.wikimedia.org/r/241076 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibd36464538e7b0cdbb3e588f6761eb56f67e5bdc Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/tools/scap Gerrit-Branch: master Gerrit-Owner: Thcipriani <tcipri...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits