summaryrefslogtreecommitdiff
path: root/tests/functional/m/missing/missing_kwoa.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functional/m/missing/missing_kwoa.py')
-rw-r--r--tests/functional/m/missing/missing_kwoa.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/functional/m/missing/missing_kwoa.py b/tests/functional/m/missing/missing_kwoa.py
new file mode 100644
index 000000000..b4dc604cd
--- /dev/null
+++ b/tests/functional/m/missing/missing_kwoa.py
@@ -0,0 +1,73 @@
+# pylint: disable=missing-docstring,unused-argument,too-few-public-methods
+import typing
+
+
+def target(pos, *, keyword):
+ return pos + keyword
+
+
+def forwarding_kwds(pos, **kwds):
+ target(pos, **kwds)
+
+
+def forwarding_args(*args, keyword):
+ target(*args, keyword=keyword)
+
+def forwarding_conversion(*args, **kwargs):
+ target(*args, **dict(kwargs))
+
+
+def not_forwarding_kwargs(*args, **kwargs):
+ target(*args) # [missing-kwoa]
+
+
+target(1, keyword=2)
+
+PARAM = 1
+target(2, PARAM) # [too-many-function-args, missing-kwoa]
+
+
+def some_function(*, param):
+ return param + 2
+
+
+def other_function(**kwargs):
+ return some_function(**kwargs) # Does not trigger missing-kwoa
+
+
+other_function(param=2)
+
+
+class Parent:
+
+ @typing.overload
+ def __init__( self, *, first, second, third):
+ pass
+
+ @typing.overload
+ def __init__(self, *, first, second):
+ pass
+
+ @typing.overload
+ def __init__(self, *, first):
+ pass
+
+ def __init__(
+ self,
+ *,
+ first,
+ second: typing.Optional[str] = None,
+ third: typing.Optional[str] = None):
+ self._first = first
+ self._second = second
+ self._third = third
+
+
+class Child(Parent):
+ def __init__(
+ self,
+ *,
+ first,
+ second):
+ super().__init__(first=first, second=second)
+ self._first = first + second