-
-
Notifications
You must be signed in to change notification settings - Fork 33.2k
Closed
Labels
3.12only security fixesonly security fixesrelease-blockertopic-tkintertype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
turtle.teleport added in #103974 seems not quite correct.
Why?
- It is produced automagically from
Turtle.teleportinstance method. It has this signature:def teleport(self, x=None, y=None, *, fill_gap: bool = False) -> None: - The result function
turtle.teleporthas this signature:def teleport(x, y=None, fill_gap=None)
Notice that it is missing x=None default and for some reason fill_gap is not a kw-only anymore.
The second problem happens because inside it uses inspect.getargs:
Line 3927 in 52fbcf6
| args, varargs, varkw = inspect.getargs(ob.__code__) |
So, when I try to run turtle.teleport I get:
Traceback (most recent call last):
File "/Users/sobolev/Desktop/cpython/ex.py", line 60, in <module>
print(teleport())
^^^^^^^^^^
TypeError: teleport() missing 1 required positional argument: 'x'
And with just one arg:
Traceback (most recent call last):
File "/Users/sobolev/Desktop/cpython/ex.py", line 60, in <module>
print(teleport(1))
^^^^^^^^^^^
File "<string>", line 4, in teleport
TypeError: Turtle.teleport() takes from 1 to 3 positional arguments but 4 were given
Annotations are also missing. It is not a big problem, but it is inconvenient.
I propose using inspect.signature instead. It will allow us using pos-only and keyword-only params with ease.
I have a PR ready.
Found while working on python/typeshed#10548
CC @AlexWaygood and @terryjreedy
Linked PRs
gpshead
Metadata
Metadata
Assignees
Labels
3.12only security fixesonly security fixesrelease-blockertopic-tkintertype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Projects
Status
Done