Reports discrepancies between declared parameters and actual arguments, as well as incorrect arguments, for example, duplicate named arguments, and incorrect argument order.
Example:
class Foo:
def __call__(self, p1: int, *, p2: str = "%"):
return p2 * p1
bar = Foo()
bar.__call__() # unfilled parameter
bar(5, "#") # unexpected argument
The correct code fragment looks at follows:
class Foo:
def __call__(self, p1: int, *, p2: str = "%"):
return p2 * p1
bar = Foo()
bar.__call__(5)
bar(5, p2="#")