Add more defaults to the stdlib (#9606)

Continuing work towards #8988.

The first five commits were created using stubdefaulter on various Python versions; the following commits were all created manually by me to fix various problems. The main things this adds that weren't present in #9501 are:

- Defaults in Windows-only modules and Windows-only branches (because I'm running a Windows machine)
- Defaults in non-py311 branches
- Defaults for float parameters
- Defaults for overloads
This commit is contained in:
Alex Waygood
2023-01-29 01:51:23 +00:00
committed by GitHub
parent 25e02db42c
commit 33a62ae42d
150 changed files with 2761 additions and 2704 deletions

View File

@@ -161,11 +161,11 @@ class ScrolledCanvas(Canvas, Frame): # type: ignore[misc]
hscroll: Scrollbar
vscroll: Scrollbar
def __init__(
self, master: Misc | None, width: int = ..., height: int = ..., canvwidth: int = ..., canvheight: int = ...
self, master: Misc | None, width: int = 500, height: int = 350, canvwidth: int = 600, canvheight: int = 500
) -> None: ...
canvwidth: int
canvheight: int
def reset(self, canvwidth: int | None = ..., canvheight: int | None = ..., bg: str | None = ...) -> None: ...
def reset(self, canvwidth: int | None = None, canvheight: int | None = None, bg: str | None = None) -> None: ...
class TurtleScreenBase:
cv: Canvas
@@ -177,27 +177,27 @@ class TurtleScreenBase:
def mainloop(self) -> None: ...
def textinput(self, title: str, prompt: str) -> str | None: ...
def numinput(
self, title: str, prompt: str, default: float | None = ..., minval: float | None = ..., maxval: float | None = ...
self, title: str, prompt: str, default: float | None = None, minval: float | None = None, maxval: float | None = None
) -> float | None: ...
class Terminator(Exception): ...
class TurtleGraphicsError(Exception): ...
class Shape:
def __init__(self, type_: str, data: _PolygonCoords | PhotoImage | None = ...) -> None: ...
def addcomponent(self, poly: _PolygonCoords, fill: _Color, outline: _Color | None = ...) -> None: ...
def __init__(self, type_: str, data: _PolygonCoords | PhotoImage | None = None) -> None: ...
def addcomponent(self, poly: _PolygonCoords, fill: _Color, outline: _Color | None = None) -> None: ...
class TurtleScreen(TurtleScreenBase):
def __init__(self, cv: Canvas, mode: str = ..., colormode: float = ..., delay: int = ...) -> None: ...
def __init__(self, cv: Canvas, mode: str = "standard", colormode: float = 1.0, delay: int = 10) -> None: ...
def clear(self) -> None: ...
@overload
def mode(self, mode: None = ...) -> str: ...
def mode(self, mode: None = None) -> str: ...
@overload
def mode(self, mode: str) -> None: ...
def setworldcoordinates(self, llx: float, lly: float, urx: float, ury: float) -> None: ...
def register_shape(self, name: str, shape: _PolygonCoords | Shape | None = ...) -> None: ...
def register_shape(self, name: str, shape: _PolygonCoords | Shape | None = None) -> None: ...
@overload
def colormode(self, cmode: None = ...) -> float: ...
def colormode(self, cmode: None = None) -> float: ...
@overload
def colormode(self, cmode: float) -> None: ...
def reset(self) -> None: ...
@@ -209,11 +209,11 @@ class TurtleScreen(TurtleScreenBase):
@overload
def bgcolor(self, r: float, g: float, b: float) -> None: ...
@overload
def tracer(self, n: None = ...) -> int: ...
def tracer(self, n: None = None) -> int: ...
@overload
def tracer(self, n: int, delay: int | None = ...) -> None: ...
def tracer(self, n: int, delay: int | None = None) -> None: ...
@overload
def delay(self, delay: None = ...) -> int: ...
def delay(self, delay: None = None) -> int: ...
@overload
def delay(self, delay: int) -> None: ...
def update(self) -> None: ...
@@ -221,24 +221,24 @@ class TurtleScreen(TurtleScreenBase):
def window_height(self) -> int: ...
def getcanvas(self) -> Canvas: ...
def getshapes(self) -> list[str]: ...
def onclick(self, fun: Callable[[float, float], object], btn: int = ..., add: Any | None = ...) -> None: ...
def onclick(self, fun: Callable[[float, float], object], btn: int = 1, add: Any | None = None) -> None: ...
def onkey(self, fun: Callable[[], object], key: str) -> None: ...
def listen(self, xdummy: float | None = ..., ydummy: float | None = ...) -> None: ...
def ontimer(self, fun: Callable[[], object], t: int = ...) -> None: ...
def listen(self, xdummy: float | None = None, ydummy: float | None = None) -> None: ...
def ontimer(self, fun: Callable[[], object], t: int = 0) -> None: ...
@overload
def bgpic(self, picname: None = ...) -> str: ...
def bgpic(self, picname: None = None) -> str: ...
@overload
def bgpic(self, picname: str) -> None: ...
@overload
def screensize(self, canvwidth: None = ..., canvheight: None = ..., bg: None = ...) -> tuple[int, int]: ...
def screensize(self, canvwidth: None = None, canvheight: None = None, bg: None = None) -> tuple[int, int]: ...
# Looks like if self.cv is not a ScrolledCanvas, this could return a tuple as well
@overload
def screensize(self, canvwidth: int, canvheight: int, bg: _Color | None = ...) -> None: ...
def screensize(self, canvwidth: int, canvheight: int, bg: _Color | None = None) -> None: ...
onscreenclick = onclick
resetscreen = reset
clearscreen = clear
addshape = register_shape
def onkeypress(self, fun: Callable[[], object], key: str | None = ...) -> None: ...
def onkeypress(self, fun: Callable[[], object], key: str | None = None) -> None: ...
onkeyrelease = onkey
class TNavigator:
@@ -246,9 +246,9 @@ class TNavigator:
DEFAULT_MODE: str
DEFAULT_ANGLEOFFSET: int
DEFAULT_ANGLEORIENT: int
def __init__(self, mode: str = ...) -> None: ...
def __init__(self, mode: str = "standard") -> None: ...
def reset(self) -> None: ...
def degrees(self, fullcircle: float = ...) -> None: ...
def degrees(self, fullcircle: float = 360.0) -> None: ...
def radians(self) -> None: ...
def forward(self, distance: float) -> None: ...
def back(self, distance: float) -> None: ...
@@ -258,23 +258,23 @@ class TNavigator:
def xcor(self) -> float: ...
def ycor(self) -> float: ...
@overload
def goto(self, x: tuple[float, float], y: None = ...) -> None: ...
def goto(self, x: tuple[float, float], y: None = None) -> None: ...
@overload
def goto(self, x: float, y: float) -> None: ...
def home(self) -> None: ...
def setx(self, x: float) -> None: ...
def sety(self, y: float) -> None: ...
@overload
def distance(self, x: TNavigator | tuple[float, float], y: None = ...) -> float: ...
def distance(self, x: TNavigator | tuple[float, float], y: None = None) -> float: ...
@overload
def distance(self, x: float, y: float) -> float: ...
@overload
def towards(self, x: TNavigator | tuple[float, float], y: None = ...) -> float: ...
def towards(self, x: TNavigator | tuple[float, float], y: None = None) -> float: ...
@overload
def towards(self, x: float, y: float) -> float: ...
def heading(self) -> float: ...
def setheading(self, to_angle: float) -> None: ...
def circle(self, radius: float, extent: float | None = ..., steps: int | None = ...) -> None: ...
def circle(self, radius: float, extent: float | None = None, steps: int | None = None) -> None: ...
fd = forward
bk = back
backward = back
@@ -286,20 +286,20 @@ class TNavigator:
seth = setheading
class TPen:
def __init__(self, resizemode: str = ...) -> None: ...
def __init__(self, resizemode: str = "noresize") -> None: ...
@overload
def resizemode(self, rmode: None = ...) -> str: ...
def resizemode(self, rmode: None = None) -> str: ...
@overload
def resizemode(self, rmode: str) -> None: ...
@overload
def pensize(self, width: None = ...) -> int: ...
def pensize(self, width: None = None) -> int: ...
@overload
def pensize(self, width: int) -> None: ...
def penup(self) -> None: ...
def pendown(self) -> None: ...
def isdown(self) -> bool: ...
@overload
def speed(self, speed: None = ...) -> int: ...
def speed(self, speed: None = None) -> int: ...
@overload
def speed(self, speed: _Speed) -> None: ...
@overload
@@ -331,7 +331,7 @@ class TPen:
@overload
def pen(
self,
pen: _PenState | None = ...,
pen: _PenState | None = None,
*,
shown: bool = ...,
pendown: bool = ...,
@@ -356,7 +356,11 @@ class RawTurtle(TPen, TNavigator):
screen: TurtleScreen
screens: ClassVar[list[TurtleScreen]]
def __init__(
self, canvas: Canvas | TurtleScreen | None = ..., shape: str = ..., undobuffersize: int = ..., visible: bool = ...
self,
canvas: Canvas | TurtleScreen | None = None,
shape: str = "classic",
undobuffersize: int = 1000,
visible: bool = True,
) -> None: ...
def reset(self) -> None: ...
def setundobuffer(self, size: int | None) -> None: ...
@@ -364,7 +368,7 @@ class RawTurtle(TPen, TNavigator):
def clear(self) -> None: ...
def clone(self: Self) -> Self: ...
@overload
def shape(self, name: None = ...) -> str: ...
def shape(self, name: None = None) -> str: ...
@overload
def shape(self, name: str) -> None: ...
# Unsafely overlaps when no arguments are provided
@@ -372,10 +376,10 @@ class RawTurtle(TPen, TNavigator):
def shapesize(self) -> tuple[float, float, float]: ... # type: ignore[misc]
@overload
def shapesize(
self, stretch_wid: float | None = ..., stretch_len: float | None = ..., outline: float | None = ...
self, stretch_wid: float | None = None, stretch_len: float | None = None, outline: float | None = None
) -> None: ...
@overload
def shearfactor(self, shear: None = ...) -> float: ...
def shearfactor(self, shear: None = None) -> float: ...
@overload
def shearfactor(self, shear: float) -> None: ...
# Unsafely overlaps when no arguments are provided
@@ -383,12 +387,12 @@ class RawTurtle(TPen, TNavigator):
def shapetransform(self) -> tuple[float, float, float, float]: ... # type: ignore[misc]
@overload
def shapetransform(
self, t11: float | None = ..., t12: float | None = ..., t21: float | None = ..., t22: float | None = ...
self, t11: float | None = None, t12: float | None = None, t21: float | None = None, t22: float | None = None
) -> None: ...
def get_shapepoly(self) -> _PolygonCoords | None: ...
def settiltangle(self, angle: float) -> None: ...
@overload
def tiltangle(self, angle: None = ...) -> float: ...
def tiltangle(self, angle: None = None) -> float: ...
@overload
def tiltangle(self, angle: float) -> None: ...
def tilt(self, angle: float) -> None: ...
@@ -397,21 +401,21 @@ class RawTurtle(TPen, TNavigator):
# we return Any.
def stamp(self) -> Any: ...
def clearstamp(self, stampid: int | tuple[int, ...]) -> None: ...
def clearstamps(self, n: int | None = ...) -> None: ...
def clearstamps(self, n: int | None = None) -> None: ...
def filling(self) -> bool: ...
def begin_fill(self) -> None: ...
def end_fill(self) -> None: ...
def dot(self, size: int | None = ..., *color: _Color) -> None: ...
def write(self, arg: object, move: bool = ..., align: str = ..., font: tuple[str, int, str] = ...) -> None: ...
def dot(self, size: int | None = None, *color: _Color) -> None: ...
def write(self, arg: object, move: bool = False, align: str = "left", font: tuple[str, int, str] = ...) -> None: ...
def begin_poly(self) -> None: ...
def end_poly(self) -> None: ...
def get_poly(self) -> _PolygonCoords | None: ...
def getscreen(self) -> TurtleScreen: ...
def getturtle(self: Self) -> Self: ...
getpen = getturtle
def onclick(self, fun: Callable[[float, float], object], btn: int = ..., add: bool | None = ...) -> None: ...
def onrelease(self, fun: Callable[[float, float], object], btn: int = ..., add: bool | None = ...) -> None: ...
def ondrag(self, fun: Callable[[float, float], object], btn: int = ..., add: bool | None = ...) -> None: ...
def onclick(self, fun: Callable[[float, float], object], btn: int = 1, add: bool | None = None) -> None: ...
def onrelease(self, fun: Callable[[float, float], object], btn: int = 1, add: bool | None = None) -> None: ...
def ondrag(self, fun: Callable[[float, float], object], btn: int = 1, add: bool | None = None) -> None: ...
def undo(self) -> None: ...
turtlesize = shapesize
@@ -420,22 +424,22 @@ class _Screen(TurtleScreen):
# Note int and float are interpreted differently, hence the Union instead of just float
def setup(
self,
width: int | float = ..., # noqa: Y041
height: int | float = ..., # noqa: Y041
startx: int | None = ...,
starty: int | None = ...,
width: int | float = 0.5, # noqa: Y041
height: int | float = 0.75, # noqa: Y041
startx: int | None = None,
starty: int | None = None,
) -> None: ...
def title(self, titlestring: str) -> None: ...
def bye(self) -> None: ...
def exitonclick(self) -> None: ...
class Turtle(RawTurtle):
def __init__(self, shape: str = ..., undobuffersize: int = ..., visible: bool = ...) -> None: ...
def __init__(self, shape: str = "classic", undobuffersize: int = 1000, visible: bool = True) -> None: ...
RawPen = RawTurtle
Pen = Turtle
def write_docstringdict(filename: str = ...) -> None: ...
def write_docstringdict(filename: str = "turtle_docstringdict") -> None: ...
# Note: it's somewhat unfortunate that we have to copy the function signatures.
# It would be nice if we could partially reduce the redundancy by doing something
@@ -453,20 +457,20 @@ def write_docstringdict(filename: str = ...) -> None: ...
def mainloop() -> None: ...
def textinput(title: str, prompt: str) -> str | None: ...
def numinput(
title: str, prompt: str, default: float | None = ..., minval: float | None = ..., maxval: float | None = ...
title: str, prompt: str, default: float | None = None, minval: float | None = None, maxval: float | None = None
) -> float | None: ...
# Functions copied from TurtleScreen:
def clear() -> None: ...
@overload
def mode(mode: None = ...) -> str: ...
def mode(mode: None = None) -> str: ...
@overload
def mode(mode: str) -> None: ...
def setworldcoordinates(llx: float, lly: float, urx: float, ury: float) -> None: ...
def register_shape(name: str, shape: _PolygonCoords | Shape | None = ...) -> None: ...
def register_shape(name: str, shape: _PolygonCoords | Shape | None = None) -> None: ...
@overload
def colormode(cmode: None = ...) -> float: ...
def colormode(cmode: None = None) -> float: ...
@overload
def colormode(cmode: float) -> None: ...
def reset() -> None: ...
@@ -478,11 +482,11 @@ def bgcolor(color: _Color) -> None: ...
@overload
def bgcolor(r: float, g: float, b: float) -> None: ...
@overload
def tracer(n: None = ...) -> int: ...
def tracer(n: None = None) -> int: ...
@overload
def tracer(n: int, delay: int | None = ...) -> None: ...
def tracer(n: int, delay: int | None = None) -> None: ...
@overload
def delay(delay: None = ...) -> int: ...
def delay(delay: None = None) -> int: ...
@overload
def delay(delay: int) -> None: ...
def update() -> None: ...
@@ -490,31 +494,31 @@ def window_width() -> int: ...
def window_height() -> int: ...
def getcanvas() -> Canvas: ...
def getshapes() -> list[str]: ...
def onclick(fun: Callable[[float, float], object], btn: int = ..., add: Any | None = ...) -> None: ...
def onclick(fun: Callable[[float, float], object], btn: int = 1, add: Any | None = None) -> None: ...
def onkey(fun: Callable[[], object], key: str) -> None: ...
def listen(xdummy: float | None = ..., ydummy: float | None = ...) -> None: ...
def ontimer(fun: Callable[[], object], t: int = ...) -> None: ...
def listen(xdummy: float | None = None, ydummy: float | None = None) -> None: ...
def ontimer(fun: Callable[[], object], t: int = 0) -> None: ...
@overload
def bgpic(picname: None = ...) -> str: ...
def bgpic(picname: None = None) -> str: ...
@overload
def bgpic(picname: str) -> None: ...
@overload
def screensize(canvwidth: None = ..., canvheight: None = ..., bg: None = ...) -> tuple[int, int]: ...
def screensize(canvwidth: None = None, canvheight: None = None, bg: None = None) -> tuple[int, int]: ...
@overload
def screensize(canvwidth: int, canvheight: int, bg: _Color | None = ...) -> None: ...
def screensize(canvwidth: int, canvheight: int, bg: _Color | None = None) -> None: ...
onscreenclick = onclick
resetscreen = reset
clearscreen = clear
addshape = register_shape
def onkeypress(fun: Callable[[], object], key: str | None = ...) -> None: ...
def onkeypress(fun: Callable[[], object], key: str | None = None) -> None: ...
onkeyrelease = onkey
# Functions copied from _Screen:
def setup(width: float = ..., height: float = ..., startx: int | None = ..., starty: int | None = ...) -> None: ...
def setup(width: float = 0.5, height: float = 0.75, startx: int | None = None, starty: int | None = None) -> None: ...
def title(titlestring: str) -> None: ...
def bye() -> None: ...
def exitonclick() -> None: ...
@@ -522,7 +526,7 @@ def Screen() -> _Screen: ...
# Functions copied from TNavigator:
def degrees(fullcircle: float = ...) -> None: ...
def degrees(fullcircle: float = 360.0) -> None: ...
def radians() -> None: ...
def forward(distance: float) -> None: ...
def back(distance: float) -> None: ...
@@ -532,23 +536,23 @@ def pos() -> Vec2D: ...
def xcor() -> float: ...
def ycor() -> float: ...
@overload
def goto(x: tuple[float, float], y: None = ...) -> None: ...
def goto(x: tuple[float, float], y: None = None) -> None: ...
@overload
def goto(x: float, y: float) -> None: ...
def home() -> None: ...
def setx(x: float) -> None: ...
def sety(y: float) -> None: ...
@overload
def distance(x: TNavigator | tuple[float, float], y: None = ...) -> float: ...
def distance(x: TNavigator | tuple[float, float], y: None = None) -> float: ...
@overload
def distance(x: float, y: float) -> float: ...
@overload
def towards(x: TNavigator | tuple[float, float], y: None = ...) -> float: ...
def towards(x: TNavigator | tuple[float, float], y: None = None) -> float: ...
@overload
def towards(x: float, y: float) -> float: ...
def heading() -> float: ...
def setheading(to_angle: float) -> None: ...
def circle(radius: float, extent: float | None = ..., steps: int | None = ...) -> None: ...
def circle(radius: float, extent: float | None = None, steps: int | None = None) -> None: ...
fd = forward
bk = back
@@ -562,18 +566,18 @@ seth = setheading
# Functions copied from TPen:
@overload
def resizemode(rmode: None = ...) -> str: ...
def resizemode(rmode: None = None) -> str: ...
@overload
def resizemode(rmode: str) -> None: ...
@overload
def pensize(width: None = ...) -> int: ...
def pensize(width: None = None) -> int: ...
@overload
def pensize(width: int) -> None: ...
def penup() -> None: ...
def pendown() -> None: ...
def isdown() -> bool: ...
@overload
def speed(speed: None = ...) -> int: ...
def speed(speed: None = None) -> int: ...
@overload
def speed(speed: _Speed) -> None: ...
@overload
@@ -605,7 +609,7 @@ def isvisible() -> bool: ...
def pen() -> _PenState: ... # type: ignore[misc]
@overload
def pen(
pen: _PenState | None = ...,
pen: _PenState | None = None,
*,
shown: bool = ...,
pendown: bool = ...,
@@ -632,7 +636,7 @@ ht = hideturtle
def setundobuffer(size: int | None) -> None: ...
def undobufferentries() -> int: ...
@overload
def shape(name: None = ...) -> str: ...
def shape(name: None = None) -> str: ...
@overload
def shape(name: str) -> None: ...
@@ -640,9 +644,9 @@ def shape(name: str) -> None: ...
@overload
def shapesize() -> tuple[float, float, float]: ... # type: ignore[misc]
@overload
def shapesize(stretch_wid: float | None = ..., stretch_len: float | None = ..., outline: float | None = ...) -> None: ...
def shapesize(stretch_wid: float | None = None, stretch_len: float | None = None, outline: float | None = None) -> None: ...
@overload
def shearfactor(shear: None = ...) -> float: ...
def shearfactor(shear: None = None) -> float: ...
@overload
def shearfactor(shear: float) -> None: ...
@@ -651,12 +655,12 @@ def shearfactor(shear: float) -> None: ...
def shapetransform() -> tuple[float, float, float, float]: ... # type: ignore[misc]
@overload
def shapetransform(
t11: float | None = ..., t12: float | None = ..., t21: float | None = ..., t22: float | None = ...
t11: float | None = None, t12: float | None = None, t21: float | None = None, t22: float | None = None
) -> None: ...
def get_shapepoly() -> _PolygonCoords | None: ...
def settiltangle(angle: float) -> None: ...
@overload
def tiltangle(angle: None = ...) -> float: ...
def tiltangle(angle: None = None) -> float: ...
@overload
def tiltangle(angle: float) -> None: ...
def tilt(angle: float) -> None: ...
@@ -666,12 +670,12 @@ def tilt(angle: float) -> None: ...
# we return Any.
def stamp() -> Any: ...
def clearstamp(stampid: int | tuple[int, ...]) -> None: ...
def clearstamps(n: int | None = ...) -> None: ...
def clearstamps(n: int | None = None) -> None: ...
def filling() -> bool: ...
def begin_fill() -> None: ...
def end_fill() -> None: ...
def dot(size: int | None = ..., *color: _Color) -> None: ...
def write(arg: object, move: bool = ..., align: str = ..., font: tuple[str, int, str] = ...) -> None: ...
def dot(size: int | None = None, *color: _Color) -> None: ...
def write(arg: object, move: bool = False, align: str = "left", font: tuple[str, int, str] = ...) -> None: ...
def begin_poly() -> None: ...
def end_poly() -> None: ...
def get_poly() -> _PolygonCoords | None: ...
@@ -680,8 +684,8 @@ def getturtle() -> Turtle: ...
getpen = getturtle
def onrelease(fun: Callable[[float, float], object], btn: int = ..., add: Any | None = ...) -> None: ...
def ondrag(fun: Callable[[float, float], object], btn: int = ..., add: Any | None = ...) -> None: ...
def onrelease(fun: Callable[[float, float], object], btn: int = 1, add: Any | None = None) -> None: ...
def ondrag(fun: Callable[[float, float], object], btn: int = 1, add: Any | None = None) -> None: ...
def undo() -> None: ...
turtlesize = shapesize