summaryrefslogtreecommitdiff
path: root/tests/functional/k/kwarg_superseded_by_positional_arg.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functional/k/kwarg_superseded_by_positional_arg.py')
-rw-r--r--tests/functional/k/kwarg_superseded_by_positional_arg.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/functional/k/kwarg_superseded_by_positional_arg.py b/tests/functional/k/kwarg_superseded_by_positional_arg.py
new file mode 100644
index 000000000..050b2066c
--- /dev/null
+++ b/tests/functional/k/kwarg_superseded_by_positional_arg.py
@@ -0,0 +1,39 @@
+"""
+The `kwarg-superseded-by-positional-arg` warning message is emitted when a function is called with
+a keyword argument which shares a name with a positional-only parameter and
+the function contains a keyword variadic parameter dictionary.
+It may be surprising behaviour when the keyword argument is added to the
+keyword variadic parameter dictionary.
+"""
+
+
+def name1(apple, /, banana="Yellow banana", **kwargs):
+ """
+ Positional-only parameter, positional-or-keyword parameter and `**kwargs`.
+
+ >>> name1("Red apple", apple="Green apple", banana="Green banana")
+ Red apple
+ Green banana
+ {"apple": "Green apple"}
+ """
+
+ print(apple)
+ print(banana)
+ print(kwargs)
+
+
+# +1: [kwarg-superseded-by-positional-arg]
+name1("Red apple", apple="Green apple", banana="Green banana")
+name1("Red apple", banana="Green banana")
+
+
+def name2(apple="Green apple", /, **kwargs):
+ """
+ >>> name2(apple="Red apple")
+ Green apple
+ {'apple': 'Red apple'}
+ """
+ print(apple)
+ print(kwargs)
+
+name2(apple="Red apple") # [kwarg-superseded-by-positional-arg]