-
-
Notifications
You must be signed in to change notification settings - Fork 30k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
more argument error improving #56565
Comments
After completing bpo-12265, it was pointed out to me that the error message is still not perfect: >>> def f(a, b, c=3, d=4, e=6, f=3, g=32): pass
...
>>> f(1, f=4, d=90)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() takes from 2 to 7 positional arguments but 3 were given Here is a new patch. Some samples: >>> def f(a): pass
...
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() missing 1 required positional argument: 'a'
>>> def f(a, b): pass
...
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() missing 2 required positional arguments: 'a' and 'b'
>>> def f(a, b, c): pass
...
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() missing 3 required positional arguments: 'a', 'b', and 'c
>>> def f(a, b, c, d): pass
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() missing 4 required positional arguments: 'a', 'b', 'c', and 'd' Same with kwonly: >>> def f(*, w): pass
...
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() missing 1 required keyword-only argument: 'w'
>>> def f(*, a, b, c, d, e): pass
...
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() missing 5 required keyword-only arguments: 'a', 'b', 'c', 'd', and 'e' For too many positional arguments, the old (new) error is retained: >>> def f(a): pass
...
>>> f(1, 2, 3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() takes 1 positional argument but 3 were given
>>> f(3, 4, 5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() takes from 1 to 2 positional arguments but 3 were given |
Nick (or anyone else), do you want to look at this? |
Revised error messages and tests look reasonable and the code seems fine on a visual scan. +1 from me. |
New changeset 52744a5a9260 by Benjamin Peterson in branch 'default': |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: