Skip to content

Commit ac234f2

Browse files
authored
turtle: various improvements (#3677)
* turtle: add None and default value to overloads * turtle: add default value to write_docstringdict * turtle: fix _Screen.setup
1 parent b3a9bfd commit ac234f2

File tree

1 file changed

+40
-32
lines changed

1 file changed

+40
-32
lines changed

stdlib/2and3/turtle.pyi

+40-32
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ class TurtleScreen(TurtleScreenBase):
4747
def __init__(self, cv: Canvas, mode: str = ..., colormode: float = ..., delay: int = ...) -> None: ...
4848
def clear(self) -> None: ...
4949
@overload
50-
def mode(self) -> str: ...
50+
def mode(self, mode: None = ...) -> str: ...
5151
@overload
5252
def mode(self, mode: str) -> None: ...
5353
def setworldcoordinates(self, llx: float, lly: float, urx: float, ury: float) -> None: ...
5454
def register_shape(self, name: str, shape: Union[_PolygonCoords, Shape, None] = ...) -> None: ...
5555
@overload
56-
def colormode(self) -> float: ...
56+
def colormode(self, cmode: None = ...) -> float: ...
5757
@overload
5858
def colormode(self, cmode: float) -> None: ...
5959
def reset(self) -> None: ...
@@ -65,11 +65,11 @@ class TurtleScreen(TurtleScreenBase):
6565
@overload
6666
def bgcolor(self, r: float, g: float, b: float) -> None: ...
6767
@overload
68-
def tracer(self) -> int: ...
68+
def tracer(self, n: None = ...) -> int: ...
6969
@overload
7070
def tracer(self, n: int, delay: Optional[int] = ...) -> None: ...
7171
@overload
72-
def delay(self) -> int: ...
72+
def delay(self, delay: None = ...) -> int: ...
7373
@overload
7474
def delay(self, delay: int) -> None: ...
7575
def update(self) -> None: ...
@@ -82,11 +82,12 @@ class TurtleScreen(TurtleScreenBase):
8282
def listen(self, xdummy: Optional[float] = ..., ydummy: Optional[float] = ...) -> None: ...
8383
def ontimer(self, fun: Callable[[], Any], t: int = ...) -> None: ...
8484
@overload
85-
def bgpic(self) -> str: ...
85+
def bgpic(self, picname: None = ...) -> str: ...
8686
@overload
8787
def bgpic(self, picname: str) -> None: ...
8888
@overload
89-
def screensize(self) -> Tuple[int, int]: ...
89+
def screensize(self, canvwidth: None = ..., canvheight: None = ..., bg: None = ...) -> Tuple[int, int]: ...
90+
# Looks like if self.cv is not a ScrolledCanvas, this could return a tuple as well
9091
@overload
9192
def screensize(self, canvwidth: int, canvheight: int, bg: Optional[_Color] = ...) -> None: ...
9293
onscreenclick = onclick
@@ -114,18 +115,18 @@ class TNavigator(object):
114115
def xcor(self) -> float: ...
115116
def ycor(self) -> float: ...
116117
@overload
117-
def goto(self, x: Tuple[float, float]) -> None: ...
118+
def goto(self, x: Tuple[float, float], y: None = ...) -> None: ...
118119
@overload
119120
def goto(self, x: float, y: float) -> None: ...
120121
def home(self) -> None: ...
121122
def setx(self, x: float) -> None: ...
122123
def sety(self, y: float) -> None: ...
123124
@overload
124-
def distance(self, x: Union[TNavigator, Tuple[float, float]]) -> float: ...
125+
def distance(self, x: Union[TNavigator, Tuple[float, float]], y: None = ...) -> float: ...
125126
@overload
126127
def distance(self, x: float, y: float) -> float: ...
127128
@overload
128-
def towards(self, x: Union[TNavigator, Tuple[float, float]]) -> float: ...
129+
def towards(self, x: Union[TNavigator, Tuple[float, float]], y: None = ...) -> float: ...
129130
@overload
130131
def towards(self, x: float, y: float) -> float: ...
131132
def heading(self) -> float: ...
@@ -145,18 +146,18 @@ class TNavigator(object):
145146
class TPen(object):
146147
def __init__(self, resizemode: str = ...) -> None: ...
147148
@overload
148-
def resizemode(self) -> str: ...
149+
def resizemode(self, rmode: None = ...) -> str: ...
149150
@overload
150151
def resizemode(self, rmode: str) -> None: ...
151152
@overload
152-
def pensize(self) -> int: ...
153+
def pensize(self, width: None = ...) -> int: ...
153154
@overload
154155
def pensize(self, width: int) -> None: ...
155156
def penup(self) -> None: ...
156157
def pendown(self) -> None: ...
157158
def isdown(self) -> bool: ...
158159
@overload
159-
def speed(self) -> int: ...
160+
def speed(self, speed: None = ...) -> int: ...
160161
@overload
161162
def speed(self, speed: _Speed) -> None: ...
162163
@overload
@@ -208,7 +209,7 @@ class RawTurtle(TPen, TNavigator):
208209
def clear(self) -> None: ...
209210
def clone(self: _T) -> _T: ...
210211
@overload
211-
def shape(self) -> str: ...
212+
def shape(self, name: None = ...) -> str: ...
212213
@overload
213214
def shape(self, name: str) -> None: ...
214215
# Unsafely overlaps when no arguments are provided
@@ -218,7 +219,7 @@ class RawTurtle(TPen, TNavigator):
218219
def shapesize(self, stretch_wid: Optional[float] = ..., stretch_len: Optional[float] = ..., outline: Optional[float] = ...) -> None: ...
219220
if sys.version_info >= (3,):
220221
@overload
221-
def shearfactor(self) -> float: ...
222+
def shearfactor(self, shear: None = ...) -> float: ...
222223
@overload
223224
def shearfactor(self, shear: float) -> None: ...
224225
# Unsafely overlaps when no arguments are provided
@@ -229,7 +230,7 @@ class RawTurtle(TPen, TNavigator):
229230
def get_shapepoly(self) -> Optional[_PolygonCoords]: ...
230231
def settiltangle(self, angle: float) -> None: ...
231232
@overload
232-
def tiltangle(self) -> float: ...
233+
def tiltangle(self, angle: None = ...) -> float: ...
233234
@overload
234235
def tiltangle(self, angle: float) -> None: ...
235236
def tilt(self, angle: float) -> None: ...
@@ -258,7 +259,14 @@ class RawTurtle(TPen, TNavigator):
258259

259260
class _Screen(TurtleScreen):
260261
def __init__(self) -> None: ...
261-
def setup(self, width: int = ..., height: int = ..., startx: int = ..., starty: int = ...) -> None: ...
262+
# Note int and float are interpreted differently, hence the Union instead of just float
263+
def setup(
264+
self,
265+
width: Union[int, float] = ...,
266+
height: Union[int, float] = ...,
267+
startx: Optional[int] = ...,
268+
starty: Optional[int] = ...
269+
) -> None: ...
262270
def title(self, titlestring: str) -> None: ...
263271
def bye(self) -> None: ...
264272
def exitonclick(self) -> None: ...
@@ -271,7 +279,7 @@ class Turtle(RawTurtle):
271279
RawPen = RawTurtle
272280
Pen = Turtle
273281

274-
def write_docstringdict(filename: str) -> None: ...
282+
def write_docstringdict(filename: str = ...) -> None: ...
275283

276284
# Note: it's somewhat unfortunate that we have to copy the function signatures.
277285
# It would be nice if we could partially reduce the redundancy by doing something
@@ -295,13 +303,13 @@ if sys.version_info >= (3,):
295303

296304
def clear() -> None: ...
297305
@overload
298-
def mode() -> str: ...
306+
def mode(mode: None = ...) -> str: ...
299307
@overload
300308
def mode(mode: str) -> None: ...
301309
def setworldcoordinates(llx: float, lly: float, urx: float, ury: float) -> None: ...
302310
def register_shape(name: str, shape: Union[_PolygonCoords, Shape, None] = ...) -> None: ...
303311
@overload
304-
def colormode() -> float: ...
312+
def colormode(cmode: None = ...) -> float: ...
305313
@overload
306314
def colormode(cmode: float) -> None: ...
307315
def reset() -> None: ...
@@ -313,11 +321,11 @@ def bgcolor(color: _Color) -> None: ...
313321
@overload
314322
def bgcolor(r: float, g: float, b: float) -> None: ...
315323
@overload
316-
def tracer() -> int: ...
324+
def tracer(n: None = ...) -> int: ...
317325
@overload
318326
def tracer(n: int, delay: Optional[int] = ...) -> None: ...
319327
@overload
320-
def delay() -> int: ...
328+
def delay(delay: None = ...) -> int: ...
321329
@overload
322330
def delay(delay: int) -> None: ...
323331
def update() -> None: ...
@@ -330,11 +338,11 @@ def onkey(fun: Callable[[], Any], key: str) -> None: ...
330338
def listen(xdummy: Optional[float] = ..., ydummy: Optional[float] = ...) -> None: ...
331339
def ontimer(fun: Callable[[], Any], t: int = ...) -> None: ...
332340
@overload
333-
def bgpic() -> str: ...
341+
def bgpic(picname: None = ...) -> str: ...
334342
@overload
335343
def bgpic(picname: str) -> None: ...
336344
@overload
337-
def screensize() -> Tuple[int, int]: ...
345+
def screensize(canvwidth: None = ..., canvheight: None = ..., bg: None = ...) -> Tuple[int, int]: ...
338346
@overload
339347
def screensize(canvwidth: int, canvheight: int, bg: Optional[_Color] = ...) -> None: ...
340348
onscreenclick = onclick
@@ -357,18 +365,18 @@ def pos() -> Vec2D: ...
357365
def xcor() -> float: ...
358366
def ycor() -> float: ...
359367
@overload
360-
def goto(x: Tuple[float, float]) -> None: ...
368+
def goto(x: Tuple[float, float], y: None = ...) -> None: ...
361369
@overload
362370
def goto(x: float, y: float) -> None: ...
363371
def home() -> None: ...
364372
def setx(x: float) -> None: ...
365373
def sety(y: float) -> None: ...
366374
@overload
367-
def distance(x: Union[TNavigator, Tuple[float, float]]) -> float: ...
375+
def distance(x: Union[TNavigator, Tuple[float, float]], y: None = ...) -> float: ...
368376
@overload
369377
def distance(x: float, y: float) -> float: ...
370378
@overload
371-
def towards(x: Union[TNavigator, Tuple[float, float]]) -> float: ...
379+
def towards(x: Union[TNavigator, Tuple[float, float]], y: None = ...) -> float: ...
372380
@overload
373381
def towards(x: float, y: float) -> float: ...
374382
def heading() -> float: ...
@@ -387,18 +395,18 @@ seth = setheading
387395
# Functions copied from TPen:
388396

389397
@overload
390-
def resizemode() -> str: ...
398+
def resizemode(rmode: None = ...) -> str: ...
391399
@overload
392400
def resizemode(rmode: str) -> None: ...
393401
@overload
394-
def pensize() -> int: ...
402+
def pensize(width: None = ...) -> int: ...
395403
@overload
396404
def pensize(width: int) -> None: ...
397405
def penup() -> None: ...
398406
def pendown() -> None: ...
399407
def isdown() -> bool: ...
400408
@overload
401-
def speed() -> int: ...
409+
def speed(speed: None = ...) -> int: ...
402410
@overload
403411
def speed(speed: _Speed) -> None: ...
404412
@overload
@@ -445,7 +453,7 @@ ht = hideturtle
445453
def setundobuffer(size: Optional[int]) -> None: ...
446454
def undobufferentries() -> int: ...
447455
@overload
448-
def shape() -> str: ...
456+
def shape(name: None = ...) -> str: ...
449457
@overload
450458
def shape(name: str) -> None: ...
451459
# Unsafely overlaps when no arguments are provided
@@ -455,7 +463,7 @@ def shapesize() -> Tuple[float, float, float]: ... # type: ignore
455463
def shapesize(stretch_wid: Optional[float] = ..., stretch_len: Optional[float] = ..., outline: Optional[float] = ...) -> None: ...
456464
if sys.version_info >= (3,):
457465
@overload
458-
def shearfactor() -> float: ...
466+
def shearfactor(shear: None = ...) -> float: ...
459467
@overload
460468
def shearfactor(shear: float) -> None: ...
461469
# Unsafely overlaps when no arguments are provided
@@ -466,7 +474,7 @@ if sys.version_info >= (3,):
466474
def get_shapepoly() -> Optional[_PolygonCoords]: ...
467475
def settiltangle(angle: float) -> None: ...
468476
@overload
469-
def tiltangle() -> float: ...
477+
def tiltangle(angle: None = ...) -> float: ...
470478
@overload
471479
def tiltangle(angle: float) -> None: ...
472480
def tilt(angle: float) -> None: ...

0 commit comments

Comments
 (0)