summaryrefslogtreecommitdiff
path: root/tests/functional/k/kwarg_superseded_by_positional_arg.py
blob: 050b2066cc54202d380873118b16d25028efd7e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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]