Skip to content

Commit cc14cc6

Browse files
authored
fix up some C signatures (#14624)
a few issues exposed after python/mypy#18259 was merged
1 parent b7f7335 commit cc14cc6

File tree

6 files changed

+122
-45
lines changed

6 files changed

+122
-45
lines changed

stdlib/_blake2.pyi

Lines changed: 79 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import sys
12
from _typeshed import ReadableBuffer
23
from typing import ClassVar, Final, final
34
from typing_extensions import Self
@@ -20,24 +21,45 @@ class blake2b:
2021
block_size: int
2122
digest_size: int
2223
name: str
23-
def __new__(
24-
cls,
25-
data: ReadableBuffer = b"",
26-
/,
27-
*,
28-
digest_size: int = 64,
29-
key: ReadableBuffer = b"",
30-
salt: ReadableBuffer = b"",
31-
person: ReadableBuffer = b"",
32-
fanout: int = 1,
33-
depth: int = 1,
34-
leaf_size: int = 0,
35-
node_offset: int = 0,
36-
node_depth: int = 0,
37-
inner_size: int = 0,
38-
last_node: bool = False,
39-
usedforsecurity: bool = True,
40-
) -> Self: ...
24+
if sys.version_info >= (3, 13):
25+
def __new__(
26+
cls,
27+
data: ReadableBuffer = b"",
28+
*,
29+
digest_size: int = 64,
30+
key: ReadableBuffer = b"",
31+
salt: ReadableBuffer = b"",
32+
person: ReadableBuffer = b"",
33+
fanout: int = 1,
34+
depth: int = 1,
35+
leaf_size: int = 0,
36+
node_offset: int = 0,
37+
node_depth: int = 0,
38+
inner_size: int = 0,
39+
last_node: bool = False,
40+
usedforsecurity: bool = True,
41+
string: ReadableBuffer | None = None,
42+
) -> Self: ...
43+
else:
44+
def __new__(
45+
cls,
46+
data: ReadableBuffer = b"",
47+
/,
48+
*,
49+
digest_size: int = 64,
50+
key: ReadableBuffer = b"",
51+
salt: ReadableBuffer = b"",
52+
person: ReadableBuffer = b"",
53+
fanout: int = 1,
54+
depth: int = 1,
55+
leaf_size: int = 0,
56+
node_offset: int = 0,
57+
node_depth: int = 0,
58+
inner_size: int = 0,
59+
last_node: bool = False,
60+
usedforsecurity: bool = True,
61+
) -> Self: ...
62+
4163
def copy(self) -> Self: ...
4264
def digest(self) -> bytes: ...
4365
def hexdigest(self) -> str: ...
@@ -52,24 +74,45 @@ class blake2s:
5274
block_size: int
5375
digest_size: int
5476
name: str
55-
def __new__(
56-
cls,
57-
data: ReadableBuffer = b"",
58-
/,
59-
*,
60-
digest_size: int = 32,
61-
key: ReadableBuffer = b"",
62-
salt: ReadableBuffer = b"",
63-
person: ReadableBuffer = b"",
64-
fanout: int = 1,
65-
depth: int = 1,
66-
leaf_size: int = 0,
67-
node_offset: int = 0,
68-
node_depth: int = 0,
69-
inner_size: int = 0,
70-
last_node: bool = False,
71-
usedforsecurity: bool = True,
72-
) -> Self: ...
77+
if sys.version_info >= (3, 13):
78+
def __new__(
79+
cls,
80+
data: ReadableBuffer = b"",
81+
*,
82+
digest_size: int = 32,
83+
key: ReadableBuffer = b"",
84+
salt: ReadableBuffer = b"",
85+
person: ReadableBuffer = b"",
86+
fanout: int = 1,
87+
depth: int = 1,
88+
leaf_size: int = 0,
89+
node_offset: int = 0,
90+
node_depth: int = 0,
91+
inner_size: int = 0,
92+
last_node: bool = False,
93+
usedforsecurity: bool = True,
94+
string: ReadableBuffer | None = None,
95+
) -> Self: ...
96+
else:
97+
def __new__(
98+
cls,
99+
data: ReadableBuffer = b"",
100+
/,
101+
*,
102+
digest_size: int = 32,
103+
key: ReadableBuffer = b"",
104+
salt: ReadableBuffer = b"",
105+
person: ReadableBuffer = b"",
106+
fanout: int = 1,
107+
depth: int = 1,
108+
leaf_size: int = 0,
109+
node_offset: int = 0,
110+
node_depth: int = 0,
111+
inner_size: int = 0,
112+
last_node: bool = False,
113+
usedforsecurity: bool = True,
114+
) -> Self: ...
115+
73116
def copy(self) -> Self: ...
74117
def digest(self) -> bytes: ...
75118
def hexdigest(self) -> str: ...

stdlib/_io.pyi

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ from typing_extensions import Self
1111

1212
_T = TypeVar("_T")
1313

14-
DEFAULT_BUFFER_SIZE: Final = 8192
14+
if sys.version_info >= (3, 14):
15+
DEFAULT_BUFFER_SIZE: Final = 131072
16+
else:
17+
DEFAULT_BUFFER_SIZE: Final = 8192
1518

1619
open = builtins.open
1720

@@ -118,14 +121,22 @@ _BufferedReaderStreamT = TypeVar("_BufferedReaderStreamT", bound=_BufferedReader
118121

119122
class BufferedReader(BufferedIOBase, _BufferedIOBase, BinaryIO, Generic[_BufferedReaderStreamT]): # type: ignore[misc] # incompatible definitions of methods in the base classes
120123
raw: _BufferedReaderStreamT
121-
def __init__(self, raw: _BufferedReaderStreamT, buffer_size: int = 8192) -> None: ...
124+
if sys.version_info >= (3, 14):
125+
def __init__(self, raw: _BufferedReaderStreamT, buffer_size: int = 131072) -> None: ...
126+
else:
127+
def __init__(self, raw: _BufferedReaderStreamT, buffer_size: int = 8192) -> None: ...
128+
122129
def peek(self, size: int = 0, /) -> bytes: ...
123130
def seek(self, target: int, whence: int = 0, /) -> int: ...
124131
def truncate(self, pos: int | None = None, /) -> int: ...
125132

126133
class BufferedWriter(BufferedIOBase, _BufferedIOBase, BinaryIO): # type: ignore[misc] # incompatible definitions of writelines in the base classes
127134
raw: RawIOBase
128-
def __init__(self, raw: RawIOBase, buffer_size: int = 8192) -> None: ...
135+
if sys.version_info >= (3, 14):
136+
def __init__(self, raw: RawIOBase, buffer_size: int = 131072) -> None: ...
137+
else:
138+
def __init__(self, raw: RawIOBase, buffer_size: int = 8192) -> None: ...
139+
129140
def write(self, buffer: ReadableBuffer, /) -> int: ...
130141
def seek(self, target: int, whence: int = 0, /) -> int: ...
131142
def truncate(self, pos: int | None = None, /) -> int: ...
@@ -134,13 +145,21 @@ class BufferedRandom(BufferedIOBase, _BufferedIOBase, BinaryIO): # type: ignore
134145
mode: str
135146
name: Any
136147
raw: RawIOBase
137-
def __init__(self, raw: RawIOBase, buffer_size: int = 8192) -> None: ...
148+
if sys.version_info >= (3, 14):
149+
def __init__(self, raw: RawIOBase, buffer_size: int = 131072) -> None: ...
150+
else:
151+
def __init__(self, raw: RawIOBase, buffer_size: int = 8192) -> None: ...
152+
138153
def seek(self, target: int, whence: int = 0, /) -> int: ... # stubtest needs this
139154
def peek(self, size: int = 0, /) -> bytes: ...
140155
def truncate(self, pos: int | None = None, /) -> int: ...
141156

142157
class BufferedRWPair(BufferedIOBase, _BufferedIOBase, Generic[_BufferedReaderStreamT]):
143-
def __init__(self, reader: _BufferedReaderStreamT, writer: RawIOBase, buffer_size: int = 8192, /) -> None: ...
158+
if sys.version_info >= (3, 14):
159+
def __init__(self, reader: _BufferedReaderStreamT, writer: RawIOBase, buffer_size: int = 131072, /) -> None: ...
160+
else:
161+
def __init__(self, reader: _BufferedReaderStreamT, writer: RawIOBase, buffer_size: int = 8192, /) -> None: ...
162+
144163
def peek(self, size: int = 0, /) -> bytes: ...
145164

146165
class _TextIOBase(_IOBase):

stdlib/_random.pyi

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1-
from typing_extensions import TypeAlias
1+
import sys
2+
from typing_extensions import Self, TypeAlias
23

34
# Actually Tuple[(int,) * 625]
45
_State: TypeAlias = tuple[int, ...]
56

67
class Random:
7-
def __init__(self, seed: object = ...) -> None: ...
8+
if sys.version_info >= (3, 10):
9+
def __init__(self, seed: object = ..., /) -> None: ...
10+
else:
11+
def __new__(self, seed: object = ..., /) -> Self: ...
12+
813
def seed(self, n: object = None, /) -> None: ...
914
def getstate(self) -> _State: ...
1015
def setstate(self, state: _State, /) -> None: ...

stdlib/random.pyi

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ from _typeshed import SupportsLenAndGetItem
44
from collections.abc import Callable, Iterable, MutableSequence, Sequence, Set as AbstractSet
55
from fractions import Fraction
66
from typing import Any, ClassVar, NoReturn, TypeVar
7+
from typing_extensions import Self
78

89
__all__ = [
910
"Random",
@@ -44,6 +45,10 @@ class Random(_random.Random):
4445
# Using other `seed` types is deprecated since 3.9 and removed in 3.11
4546
# Ignore Y041, since random.seed doesn't treat int like a float subtype. Having an explicit
4647
# int better documents conventional usage of random.seed.
48+
if sys.version_info < (3, 10):
49+
# this is a workaround for pyright correctly flagging an inconsistent inherited constructor, see #14624
50+
def __new__(cls, x: int | float | str | bytes | bytearray | None = None) -> Self: ... # noqa: Y041
51+
4752
def seed(self, a: int | float | str | bytes | bytearray | None = None, version: int = 2) -> None: ... # type: ignore[override] # noqa: Y041
4853
def getstate(self) -> tuple[Any, ...]: ...
4954
def setstate(self, state: tuple[Any, ...]) -> None: ...

stdlib/select.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ if sys.platform != "linux" and sys.platform != "win32":
114114
if sys.platform == "linux":
115115
@final
116116
class epoll:
117-
def __init__(self, sizehint: int = ..., flags: int = ...) -> None: ...
117+
def __new__(self, sizehint: int = ..., flags: int = ...) -> Self: ...
118118
def __enter__(self) -> Self: ...
119119
def __exit__(
120120
self,

stubs/networkx/networkx/utils/misc.pyi

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import random
2+
import sys
23
from types import ModuleType
3-
from typing_extensions import TypeAlias
4+
from typing_extensions import Self, TypeAlias
45

56
import numpy
67

@@ -36,6 +37,10 @@ def create_random_state(random_state=None): ...
3637

3738
class PythonRandomViaNumpyBits(random.Random):
3839
def __init__(self, rng: numpy.random.Generator | None = None) -> None: ...
40+
if sys.version_info < (3, 10):
41+
# this is a workaround for pyright correctly flagging an inconsistent inherited constructor, see #14624
42+
def __new__(cls, rng: numpy.random.Generator | None = None) -> Self: ...
43+
3944
def getrandbits(self, k: int) -> int: ...
4045

4146
class PythonRandomInterface:

0 commit comments

Comments
 (0)