rspec/rules/S2837/python/comments-and-links.adoc
2021-06-08 14:23:48 +02:00

37 lines
920 B
Plaintext

=== on 21 Nov 2019, 18:13:10 Nicolas Harraudeau wrote:
Closing this rule as it would raise many False Positives. I see multiple cases where passing ``++**kwargs++`` or ``++*args++`` is perfectly fine:
1/ building an argument list on the fly. Example:
----
options = {}
if condition:
options[key] = value
myfunction(**options)
# One could argue that this is equivalent:
key = default
if condition:
key = value
myfunction(key = value)
# But actually this overrides the default value of "key" set in myfunction.
----
2/ It is very common to forward arguments you don't know much about from a caller to another method/function.
----
def myfilter(func):
def decorator(*args, c=None, **kwargs):
if c is None or c < 0:
return None
return func(c=c, *args, **kwargs)
return decorator
@myfilter
def myfunction(a, b, *args, c=None):
return 42
print(myfunction(1,2,c=-1))
----