Skip to content

Commit acc0167

Browse files
authored
Fix several new-in-3.11 stubtest errors (#7973)
1 parent cb90239 commit acc0167

File tree

12 files changed

+195
-85
lines changed

12 files changed

+195
-85
lines changed

stdlib/argparse.pyi

Lines changed: 44 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -409,16 +409,28 @@ class _StoreAction(Action): ...
409409

410410
# undocumented
411411
class _StoreConstAction(Action):
412-
def __init__(
413-
self,
414-
option_strings: Sequence[str],
415-
dest: str,
416-
const: Any,
417-
default: Any = ...,
418-
required: bool = ...,
419-
help: str | None = ...,
420-
metavar: str | tuple[str, ...] | None = ...,
421-
) -> None: ...
412+
if sys.version_info >= (3, 11):
413+
def __init__(
414+
self,
415+
option_strings: Sequence[str],
416+
dest: str,
417+
const: Any | None = ...,
418+
default: Any = ...,
419+
required: bool = ...,
420+
help: str | None = ...,
421+
metavar: str | tuple[str, ...] | None = ...,
422+
) -> None: ...
423+
else:
424+
def __init__(
425+
self,
426+
option_strings: Sequence[str],
427+
dest: str,
428+
const: Any,
429+
default: Any = ...,
430+
required: bool = ...,
431+
help: str | None = ...,
432+
metavar: str | tuple[str, ...] | None = ...,
433+
) -> None: ...
422434

423435
# undocumented
424436
class _StoreTrueAction(_StoreConstAction):
@@ -437,16 +449,28 @@ class _AppendAction(Action): ...
437449

438450
# undocumented
439451
class _AppendConstAction(Action):
440-
def __init__(
441-
self,
442-
option_strings: Sequence[str],
443-
dest: str,
444-
const: Any,
445-
default: Any = ...,
446-
required: bool = ...,
447-
help: str | None = ...,
448-
metavar: str | tuple[str, ...] | None = ...,
449-
) -> None: ...
452+
if sys.version_info >= (3, 11):
453+
def __init__(
454+
self,
455+
option_strings: Sequence[str],
456+
dest: str,
457+
const: Any | None = ...,
458+
default: Any = ...,
459+
required: bool = ...,
460+
help: str | None = ...,
461+
metavar: str | tuple[str, ...] | None = ...,
462+
) -> None: ...
463+
else:
464+
def __init__(
465+
self,
466+
option_strings: Sequence[str],
467+
dest: str,
468+
const: Any,
469+
default: Any = ...,
470+
required: bool = ...,
471+
help: str | None = ...,
472+
metavar: str | tuple[str, ...] | None = ...,
473+
) -> None: ...
450474

451475
# undocumented
452476
class _CountAction(Action):

stdlib/fractions.pyi

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import sys
22
from _typeshed import Self
3+
from collections.abc import Callable
34
from decimal import Decimal
45
from numbers import Integral, Rational, Real
56
from typing import Any, overload
6-
from typing_extensions import Literal, TypeAlias
7+
from typing_extensions import Literal, SupportsIndex, TypeAlias
78

89
_ComparableNum: TypeAlias = int | float | Decimal | Real
910

@@ -141,7 +142,7 @@ class Fraction(Rational):
141142
def __copy__(self: Self) -> Self: ...
142143
def __deepcopy__(self: Self, memo: Any) -> Self: ...
143144
if sys.version_info >= (3, 11):
144-
def __int__(self) -> int: ...
145+
def __int__(self, _index: Callable[[SupportsIndex], int] = ...) -> int: ...
145146
# Not actually defined within fractions.py, but provides more useful
146147
# overrides
147148
@property

stdlib/importlib/resources.pyi

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ else:
4040
__all__ = ["Package", "Resource", "contents", "is_resource", "open_binary", "open_text", "path", "read_binary", "read_text"]
4141

4242
Package: TypeAlias = str | ModuleType
43-
Resource: TypeAlias = str | os.PathLike[Any]
43+
44+
if sys.version_info >= (3, 11):
45+
Resource: TypeAlias = str
46+
else:
47+
Resource: TypeAlias = str | os.PathLike[Any]
4448

4549
def open_binary(package: Package, resource: Resource) -> BinaryIO: ...
4650
def open_text(package: Package, resource: Resource, encoding: str = ..., errors: str = ...) -> TextIO: ...

stdlib/logging/__init__.pyi

Lines changed: 95 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -12,50 +12,97 @@ from typing_extensions import Literal, TypeAlias
1212
if sys.version_info >= (3, 11):
1313
from types import GenericAlias
1414

15-
__all__ = [
16-
"BASIC_FORMAT",
17-
"BufferingFormatter",
18-
"CRITICAL",
19-
"DEBUG",
20-
"ERROR",
21-
"FATAL",
22-
"FileHandler",
23-
"Filter",
24-
"Formatter",
25-
"Handler",
26-
"INFO",
27-
"LogRecord",
28-
"Logger",
29-
"LoggerAdapter",
30-
"NOTSET",
31-
"NullHandler",
32-
"StreamHandler",
33-
"WARN",
34-
"WARNING",
35-
"addLevelName",
36-
"basicConfig",
37-
"captureWarnings",
38-
"critical",
39-
"debug",
40-
"disable",
41-
"error",
42-
"exception",
43-
"fatal",
44-
"getLevelName",
45-
"getLogger",
46-
"getLoggerClass",
47-
"info",
48-
"log",
49-
"makeLogRecord",
50-
"setLoggerClass",
51-
"shutdown",
52-
"warn",
53-
"warning",
54-
"getLogRecordFactory",
55-
"setLogRecordFactory",
56-
"lastResort",
57-
"raiseExceptions",
58-
]
15+
if sys.version_info >= (3, 11):
16+
__all__ = [
17+
"BASIC_FORMAT",
18+
"BufferingFormatter",
19+
"CRITICAL",
20+
"DEBUG",
21+
"ERROR",
22+
"FATAL",
23+
"FileHandler",
24+
"Filter",
25+
"Formatter",
26+
"Handler",
27+
"INFO",
28+
"LogRecord",
29+
"Logger",
30+
"LoggerAdapter",
31+
"NOTSET",
32+
"NullHandler",
33+
"StreamHandler",
34+
"WARN",
35+
"WARNING",
36+
"addLevelName",
37+
"basicConfig",
38+
"captureWarnings",
39+
"critical",
40+
"debug",
41+
"disable",
42+
"error",
43+
"exception",
44+
"fatal",
45+
"getLevelName",
46+
"getLogger",
47+
"getLoggerClass",
48+
"info",
49+
"log",
50+
"makeLogRecord",
51+
"setLoggerClass",
52+
"shutdown",
53+
"warn",
54+
"warning",
55+
"getLogRecordFactory",
56+
"setLogRecordFactory",
57+
"lastResort",
58+
"raiseExceptions",
59+
"getLevelNamesMapping",
60+
]
61+
else:
62+
__all__ = [
63+
"BASIC_FORMAT",
64+
"BufferingFormatter",
65+
"CRITICAL",
66+
"DEBUG",
67+
"ERROR",
68+
"FATAL",
69+
"FileHandler",
70+
"Filter",
71+
"Formatter",
72+
"Handler",
73+
"INFO",
74+
"LogRecord",
75+
"Logger",
76+
"LoggerAdapter",
77+
"NOTSET",
78+
"NullHandler",
79+
"StreamHandler",
80+
"WARN",
81+
"WARNING",
82+
"addLevelName",
83+
"basicConfig",
84+
"captureWarnings",
85+
"critical",
86+
"debug",
87+
"disable",
88+
"error",
89+
"exception",
90+
"fatal",
91+
"getLevelName",
92+
"getLogger",
93+
"getLoggerClass",
94+
"info",
95+
"log",
96+
"makeLogRecord",
97+
"setLoggerClass",
98+
"shutdown",
99+
"warn",
100+
"warning",
101+
"getLogRecordFactory",
102+
"setLogRecordFactory",
103+
"lastResort",
104+
"raiseExceptions",
105+
]
59106

60107
_SysExcInfoType: TypeAlias = Union[tuple[type[BaseException], BaseException, TracebackType | None], tuple[None, None, None]]
61108
_ExcInfoType: TypeAlias = None | bool | _SysExcInfoType | BaseException
@@ -711,6 +758,10 @@ else:
711758

712759
def addLevelName(level: int, levelName: str) -> None: ...
713760
def getLevelName(level: _Level) -> Any: ...
761+
762+
if sys.version_info >= (3, 11):
763+
def getLevelNamesMapping() -> dict[str, int]: ...
764+
714765
def makeLogRecord(dict: Mapping[str, object]) -> LogRecord: ...
715766

716767
if sys.version_info >= (3, 9):

stdlib/logging/handlers.pyi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ class SysLogHandler(Handler):
181181
facility_names: ClassVar[dict[str, int]] # undocumented
182182
priority_map: ClassVar[dict[str, str]] # undocumented
183183
def __init__(self, address: tuple[str, int] | str = ..., facility: int = ..., socktype: SocketKind | None = ...) -> None: ...
184+
if sys.version_info >= (3, 11):
185+
def createSocket(self) -> None: ...
186+
184187
def encodePriority(self, facility: int | str, priority: int | str) -> int: ...
185188
def mapPriority(self, levelName: str) -> str: ...
186189

stdlib/socketserver.pyi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ class TCPServer(BaseServer):
9191
def get_request(self) -> tuple[_socket, Any]: ...
9292

9393
class UDPServer(BaseServer):
94+
if sys.version_info >= (3, 11):
95+
allow_reuse_port: bool
9496
max_packet_size: ClassVar[int]
9597
def get_request(self) -> tuple[tuple[bytes, _socket], Any]: ...
9698

stdlib/string.pyi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ class Template:
4545
def __init__(self, template: str) -> None: ...
4646
def substitute(self, __mapping: Mapping[str, object] = ..., **kwds: object) -> str: ...
4747
def safe_substitute(self, __mapping: Mapping[str, object] = ..., **kwds: object) -> str: ...
48+
if sys.version_info >= (3, 11):
49+
def get_identifiers(self) -> list[str]: ...
50+
def is_valid(self) -> bool: ...
4851

4952
# TODO(MichalPokorny): This is probably badly and/or loosely typed.
5053
class Formatter:

stdlib/sys.pyi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,9 @@ def __displayhook__(__value: object) -> None: ...
221221
def __excepthook__(__exctype: type[BaseException], __value: BaseException, __traceback: TracebackType | None) -> None: ...
222222
def exc_info() -> OptExcInfo: ...
223223

224+
if sys.version_info >= (3, 11):
225+
def exception() -> BaseException | None: ...
226+
224227
# sys.exit() accepts an optional argument of anything printable
225228
def exit(__status: object = ...) -> NoReturn: ...
226229
def getallocatedblocks() -> int: ...

stdlib/unittest/__init__.pyi

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,38 @@ if sys.version_info >= (3, 8):
3232

3333
from .case import addModuleCleanup as addModuleCleanup
3434

35+
if sys.version_info >= (3, 11):
36+
from .case import doModuleCleanups as doModuleCleanups
37+
38+
if sys.version_info >= (3, 11):
39+
__all__ = [
40+
"TestResult",
41+
"TestCase",
42+
"IsolatedAsyncioTestCase",
43+
"TestSuite",
44+
"TextTestRunner",
45+
"TestLoader",
46+
"FunctionTestCase",
47+
"main",
48+
"defaultTestLoader",
49+
"SkipTest",
50+
"skip",
51+
"skipIf",
52+
"skipUnless",
53+
"expectedFailure",
54+
"TextTestResult",
55+
"installHandler",
56+
"registerResult",
57+
"removeResult",
58+
"removeHandler",
59+
"addModuleCleanup",
60+
"doModuleCleanups",
61+
"getTestCaseNames",
62+
"makeSuite",
63+
"findTestCases",
64+
]
65+
66+
elif sys.version_info >= (3, 8):
3567
__all__ = [
3668
"TestResult",
3769
"TestCase",

stdlib/unittest/case.pyi

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ class TestCase:
7979
def skipTest(self, reason: Any) -> None: ...
8080
def subTest(self, msg: Any = ..., **params: Any) -> AbstractContextManager[None]: ...
8181
def debug(self) -> None: ...
82-
def _addSkip(self, result: unittest.result.TestResult, test_case: TestCase, reason: str) -> None: ...
82+
if sys.version_info < (3, 11):
83+
def _addSkip(self, result: unittest.result.TestResult, test_case: TestCase, reason: str) -> None: ...
84+
8385
def assertEqual(self, first: Any, second: Any, msg: Any = ...) -> None: ...
8486
def assertNotEqual(self, first: Any, second: Any, msg: Any = ...) -> None: ...
8587
def assertTrue(self, expr: Any, msg: Any = ...) -> None: ...

stdlib/xmlrpc/server.pyi

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import socketserver
44
import sys
55
from collections.abc import Callable, Iterable, Mapping
66
from datetime import datetime
7-
from typing import Any, Pattern, Protocol
7+
from typing import Any, ClassVar, Pattern, Protocol
88
from typing_extensions import TypeAlias
99
from xmlrpc.client import Fault
1010

@@ -68,8 +68,7 @@ class SimpleXMLRPCDispatcher: # undocumented
6868
def _dispatch(self, method: str, params: Iterable[_Marshallable]) -> _Marshallable: ... # undocumented
6969

7070
class SimpleXMLRPCRequestHandler(http.server.BaseHTTPRequestHandler):
71-
72-
rpc_paths: tuple[str, str]
71+
rpc_paths: ClassVar[tuple[str, ...]]
7372
encode_threshold: int # undocumented
7473
aepattern: Pattern[str] # undocumented
7574
def accept_encodings(self) -> dict[str, float]: ...

0 commit comments

Comments
 (0)