Skip to content

Commit bd9ba37

Browse files
committed
Merge branch 'main'
2 parents d030d7d + 47cfbee commit bd9ba37

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+536
-345
lines changed

pyrightconfig.stricter.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@
9090
"stubs/python-jose",
9191
"stubs/pytz/pytz/lazy.pyi",
9292
"stubs/pywin32",
93-
"stubs/pyxdg",
9493
"stubs/PyYAML",
9594
"stubs/reportlab",
9695
"stubs/requests",

stdlib/@tests/stubtest_allowlists/py314.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22
# TODO: New errors in Python 3.14 that need to be fixed or moved below
33
# ====================================================================
44

5-
_zstd.ZstdCompressor.set_pledged_input_size
6-
asyncio.tools
7-
compression.zstd.ZstdCompressor.set_pledged_input_size
85
multiprocessing.managers.BaseListProxy.clear
96
multiprocessing.managers.BaseListProxy.copy
107
multiprocessing.managers.DictProxy.__ior__

stdlib/@tests/test_cases/check_concurrent_futures.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def check_interpreter_pool_executor() -> None:
5151
worker_context = context[0]()
5252
assert_type(worker_context, concurrent.futures.interpreter.WorkerContext)
5353
resolve_task = context[1]
54-
# Function should enfore that the arguments are correct.
54+
# Function should enforce that the arguments are correct.
5555
res = resolve_task(_initializer, 1)
5656
assert_type(res, tuple[bytes, Literal["function"]])
5757
# When the function is a script, the arguments should be a string.

stdlib/VERSIONS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ asyncio.staggered: 3.8-
9595
asyncio.taskgroups: 3.11-
9696
asyncio.threads: 3.9-
9797
asyncio.timeouts: 3.11-
98+
asyncio.tools: 3.14-
9899
asyncio.trsock: 3.8-
99100
asyncore: 3.0-3.11
100101
atexit: 3.0-

stdlib/_zstd.pyi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class ZstdCompressor:
5252
self, /, data: ReadableBuffer, mode: _ZstdCompressorContinue | _ZstdCompressorFlushBlock | _ZstdCompressorFlushFrame = 0
5353
) -> bytes: ...
5454
def flush(self, /, mode: _ZstdCompressorFlushBlock | _ZstdCompressorFlushFrame = 2) -> bytes: ...
55+
def set_pledged_input_size(self, size: int | None, /) -> None: ...
5556
@property
5657
def last_mode(self) -> _ZstdCompressorContinue | _ZstdCompressorFlushBlock | _ZstdCompressorFlushFrame: ...
5758

stdlib/ast.pyi

Lines changed: 42 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import ast
12
import builtins
23
import os
34
import sys
@@ -623,21 +624,6 @@ class AsyncWith(stmt):
623624
**kwargs: Unpack[_Attributes],
624625
) -> Self: ...
625626

626-
if sys.version_info >= (3, 10):
627-
class Match(stmt):
628-
__match_args__ = ("subject", "cases")
629-
subject: expr
630-
cases: list[match_case]
631-
if sys.version_info >= (3, 13):
632-
def __init__(self, subject: expr, cases: list[match_case] = ..., **kwargs: Unpack[_Attributes]) -> None: ...
633-
else:
634-
def __init__(self, subject: expr, cases: list[match_case], **kwargs: Unpack[_Attributes]) -> None: ...
635-
636-
if sys.version_info >= (3, 14):
637-
def __replace__(
638-
self, *, subject: expr = ..., cases: list[match_case] = ..., **kwargs: Unpack[_Attributes]
639-
) -> Self: ...
640-
641627
class Raise(stmt):
642628
if sys.version_info >= (3, 10):
643629
__match_args__ = ("exc", "cause")
@@ -1076,13 +1062,13 @@ if sys.version_info >= (3, 14):
10761062
value: expr
10771063
str: builtins.str
10781064
conversion: int
1079-
format_spec: builtins.str | None = None
1065+
format_spec: expr | None = None
10801066
def __init__(
10811067
self,
10821068
value: expr = ...,
10831069
str: builtins.str = ...,
10841070
conversion: int = ...,
1085-
format_spec: builtins.str | None = ...,
1071+
format_spec: expr | None = ...,
10861072
**kwargs: Unpack[_Attributes],
10871073
) -> None: ...
10881074
def __replace__(
@@ -1091,7 +1077,7 @@ if sys.version_info >= (3, 14):
10911077
value: expr = ...,
10921078
str: builtins.str = ...,
10931079
conversion: int = ...,
1094-
format_spec: builtins.str | None = ...,
1080+
format_spec: expr | None = ...,
10951081
**kwargs: Unpack[_Attributes],
10961082
) -> Self: ...
10971083

@@ -1135,13 +1121,13 @@ class Subscript(expr):
11351121
if sys.version_info >= (3, 10):
11361122
__match_args__ = ("value", "slice", "ctx")
11371123
value: expr
1138-
slice: _Slice
1124+
slice: expr
11391125
ctx: expr_context # Not present in Python < 3.13 if not passed to `__init__`
1140-
def __init__(self, value: expr, slice: _Slice, ctx: expr_context = ..., **kwargs: Unpack[_Attributes]) -> None: ...
1126+
def __init__(self, value: expr, slice: expr, ctx: expr_context = ..., **kwargs: Unpack[_Attributes]) -> None: ...
11411127

11421128
if sys.version_info >= (3, 14):
11431129
def __replace__(
1144-
self, *, value: expr = ..., slice: _Slice = ..., ctx: expr_context = ..., **kwargs: Unpack[_Attributes]
1130+
self, *, value: expr = ..., slice: expr = ..., ctx: expr_context = ..., **kwargs: Unpack[_Attributes]
11451131
) -> Self: ...
11461132

11471133
class Starred(expr):
@@ -1194,36 +1180,28 @@ class Tuple(expr):
11941180
@deprecated("Deprecated since Python 3.9.")
11951181
class slice(AST): ...
11961182

1197-
_Slice: typing_extensions.TypeAlias = expr
1198-
_SliceAttributes: typing_extensions.TypeAlias = _Attributes
1199-
1200-
class Slice(_Slice):
1183+
class Slice(expr):
12011184
if sys.version_info >= (3, 10):
12021185
__match_args__ = ("lower", "upper", "step")
12031186
lower: expr | None
12041187
upper: expr | None
12051188
step: expr | None
12061189
def __init__(
1207-
self, lower: expr | None = None, upper: expr | None = None, step: expr | None = None, **kwargs: Unpack[_SliceAttributes]
1190+
self, lower: expr | None = None, upper: expr | None = None, step: expr | None = None, **kwargs: Unpack[_Attributes]
12081191
) -> None: ...
12091192

12101193
if sys.version_info >= (3, 14):
12111194
def __replace__(
1212-
self,
1213-
*,
1214-
lower: expr | None = ...,
1215-
upper: expr | None = ...,
1216-
step: expr | None = ...,
1217-
**kwargs: Unpack[_SliceAttributes],
1195+
self, *, lower: expr | None = ..., upper: expr | None = ..., step: expr | None = ..., **kwargs: Unpack[_Attributes]
12181196
) -> Self: ...
12191197

12201198
@deprecated("Deprecated since Python 3.9. Use ast.Tuple instead.")
12211199
class ExtSlice(slice):
1222-
def __new__(cls, dims: Iterable[slice] = (), **kwargs: Unpack[_SliceAttributes]) -> Tuple: ... # type: ignore[misc]
1200+
def __new__(cls, dims: Iterable[slice] = (), **kwargs: Unpack[_Attributes]) -> Tuple: ... # type: ignore[misc]
12231201

12241202
@deprecated("Deprecated since Python 3.9. Use the index value directly instead.")
12251203
class Index(slice):
1226-
def __new__(cls, value: expr, **kwargs: Unpack[_SliceAttributes]) -> expr: ... # type: ignore[misc]
1204+
def __new__(cls, value: expr, **kwargs: Unpack[_Attributes]) -> expr: ... # type: ignore[misc]
12271205

12281206
class expr_context(AST): ...
12291207

@@ -1465,37 +1443,48 @@ class withitem(AST):
14651443
def __replace__(self, *, context_expr: expr = ..., optional_vars: expr | None = ...) -> Self: ...
14661444

14671445
if sys.version_info >= (3, 10):
1446+
class pattern(AST):
1447+
lineno: int
1448+
col_offset: int
1449+
end_lineno: int
1450+
end_col_offset: int
1451+
def __init__(self, **kwargs: Unpack[_Attributes[int]]) -> None: ...
1452+
1453+
if sys.version_info >= (3, 14):
1454+
def __replace__(
1455+
self, *, lineno: int = ..., col_offset: int = ..., end_lineno: int = ..., end_col_offset: int = ...
1456+
) -> Self: ...
1457+
14681458
class match_case(AST):
14691459
__match_args__ = ("pattern", "guard", "body")
1470-
pattern: _Pattern
1460+
pattern: ast.pattern
14711461
guard: expr | None
14721462
body: list[stmt]
14731463
if sys.version_info >= (3, 13):
1474-
def __init__(self, pattern: _Pattern, guard: expr | None = None, body: list[stmt] = ...) -> None: ...
1475-
else:
1464+
def __init__(self, pattern: ast.pattern, guard: expr | None = None, body: list[stmt] = ...) -> None: ...
1465+
elif sys.version_info >= (3, 10):
14761466
@overload
1477-
def __init__(self, pattern: _Pattern, guard: expr | None, body: list[stmt]) -> None: ...
1467+
def __init__(self, pattern: ast.pattern, guard: expr | None, body: list[stmt]) -> None: ...
14781468
@overload
1479-
def __init__(self, pattern: _Pattern, guard: expr | None = None, *, body: list[stmt]) -> None: ...
1469+
def __init__(self, pattern: ast.pattern, guard: expr | None = None, *, body: list[stmt]) -> None: ...
14801470

14811471
if sys.version_info >= (3, 14):
1482-
def __replace__(self, *, pattern: _Pattern = ..., guard: expr | None = ..., body: list[stmt] = ...) -> Self: ...
1472+
def __replace__(self, *, pattern: ast.pattern = ..., guard: expr | None = ..., body: list[stmt] = ...) -> Self: ...
14831473

1484-
class pattern(AST):
1485-
lineno: int
1486-
col_offset: int
1487-
end_lineno: int
1488-
end_col_offset: int
1489-
def __init__(self, **kwargs: Unpack[_Attributes[int]]) -> None: ...
1474+
class Match(stmt):
1475+
__match_args__ = ("subject", "cases")
1476+
subject: expr
1477+
cases: list[match_case]
1478+
if sys.version_info >= (3, 13):
1479+
def __init__(self, subject: expr, cases: list[match_case] = ..., **kwargs: Unpack[_Attributes]) -> None: ...
1480+
else:
1481+
def __init__(self, subject: expr, cases: list[match_case], **kwargs: Unpack[_Attributes]) -> None: ...
14901482

14911483
if sys.version_info >= (3, 14):
14921484
def __replace__(
1493-
self, *, lineno: int = ..., col_offset: int = ..., end_lineno: int = ..., end_col_offset: int = ...
1485+
self, *, subject: expr = ..., cases: list[match_case] = ..., **kwargs: Unpack[_Attributes]
14941486
) -> Self: ...
14951487

1496-
# Without the alias, Pyright complains variables named pattern are recursively defined
1497-
_Pattern: typing_extensions.TypeAlias = pattern
1498-
14991488
class MatchValue(pattern):
15001489
__match_args__ = ("value",)
15011490
value: expr
@@ -1597,15 +1586,15 @@ if sys.version_info >= (3, 10):
15971586

15981587
class MatchAs(pattern):
15991588
__match_args__ = ("pattern", "name")
1600-
pattern: _Pattern | None
1589+
pattern: ast.pattern | None
16011590
name: str | None
16021591
def __init__(
1603-
self, pattern: _Pattern | None = None, name: str | None = None, **kwargs: Unpack[_Attributes[int]]
1592+
self, pattern: ast.pattern | None = None, name: str | None = None, **kwargs: Unpack[_Attributes[int]]
16041593
) -> None: ...
16051594

16061595
if sys.version_info >= (3, 14):
16071596
def __replace__(
1608-
self, *, pattern: _Pattern | None = ..., name: str | None = ..., **kwargs: Unpack[_Attributes[int]]
1597+
self, *, pattern: ast.pattern | None = ..., name: str | None = ..., **kwargs: Unpack[_Attributes[int]]
16091598
) -> Self: ...
16101599

16111600
class MatchOr(pattern):

stdlib/asyncio/tools.pyi

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from collections.abc import Iterable
2+
from enum import Enum
3+
from typing import NamedTuple, SupportsIndex, type_check_only
4+
5+
@type_check_only
6+
class _AwaitedInfo(NamedTuple): # AwaitedInfo_Type from _remote_debugging
7+
thread_id: int
8+
awaited_by: list[_TaskInfo]
9+
10+
@type_check_only
11+
class _TaskInfo(NamedTuple): # TaskInfo_Type from _remote_debugging
12+
task_id: int
13+
task_name: str
14+
coroutine_stack: list[_CoroInfo]
15+
awaited_by: list[_CoroInfo]
16+
17+
@type_check_only
18+
class _CoroInfo(NamedTuple): # CoroInfo_Type from _remote_debugging
19+
call_stack: list[_FrameInfo]
20+
task_name: int | str
21+
22+
@type_check_only
23+
class _FrameInfo(NamedTuple): # FrameInfo_Type from _remote_debugging
24+
filename: str
25+
lineno: int
26+
funcname: str
27+
28+
class NodeType(Enum):
29+
COROUTINE = 1
30+
TASK = 2
31+
32+
class CycleFoundException(Exception):
33+
cycles: list[list[int]]
34+
id2name: dict[int, str]
35+
def __init__(self, cycles: list[list[int]], id2name: dict[int, str]) -> None: ...
36+
37+
def get_all_awaited_by(pid: SupportsIndex) -> list[_AwaitedInfo]: ...
38+
def build_async_tree(result: Iterable[_AwaitedInfo], task_emoji: str = "(T)", cor_emoji: str = "") -> list[list[str]]: ...
39+
def build_task_table(result: Iterable[_AwaitedInfo]) -> list[list[int | str]]: ...
40+
def display_awaited_by_tasks_table(pid: SupportsIndex) -> None: ...
41+
def display_awaited_by_tasks_tree(pid: SupportsIndex) -> None: ...

stdlib/concurrent/futures/thread.pyi

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,21 +91,25 @@ class ThreadPoolExecutor(Executor):
9191
_shutdown: bool
9292
_shutdown_lock: Lock
9393
_thread_name_prefix: str | None
94-
_initializer: Callable[..., None] | None
95-
_initargs: tuple[Any, ...]
94+
if sys.version_info >= (3, 14):
95+
_create_worker_context: Callable[[], WorkerContext]
96+
_resolve_work_item_task: _ResolveTaskFunc
97+
else:
98+
_initializer: Callable[..., None] | None
99+
_initargs: tuple[Any, ...]
96100
_work_queue: queue.SimpleQueue[_WorkItem[Any]]
97101

98102
if sys.version_info >= (3, 14):
99103
@overload
100104
@classmethod
101105
def prepare_context(
102106
cls, initializer: Callable[[], object], initargs: tuple[()]
103-
) -> tuple[Callable[[], Self], _ResolveTaskFunc]: ...
107+
) -> tuple[Callable[[], WorkerContext], _ResolveTaskFunc]: ...
104108
@overload
105109
@classmethod
106110
def prepare_context(
107111
cls, initializer: Callable[[Unpack[_Ts]], object], initargs: tuple[Unpack[_Ts]]
108-
) -> tuple[Callable[[], Self], _ResolveTaskFunc]: ...
112+
) -> tuple[Callable[[], WorkerContext], _ResolveTaskFunc]: ...
109113

110114
@overload
111115
def __init__(

stdlib/sys/__init__.pyi

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ from collections.abc import AsyncGenerator, Callable, Sequence
66
from io import TextIOWrapper
77
from types import FrameType, ModuleType, TracebackType
88
from typing import Any, Final, Literal, NoReturn, Protocol, TextIO, TypeVar, final, type_check_only
9-
from typing_extensions import LiteralString, TypeAlias
9+
from typing_extensions import LiteralString, TypeAlias, deprecated
1010

1111
_T = TypeVar("_T")
1212

@@ -335,7 +335,14 @@ class _version_info(_UninstantiableStructseq, tuple[int, int, int, _ReleaseLevel
335335
version_info: _version_info
336336

337337
def call_tracing(func: Callable[..., _T], args: Any, /) -> _T: ...
338-
def _clear_type_cache() -> None: ...
338+
339+
if sys.version_info >= (3, 13):
340+
@deprecated("Deprecated in Python 3.13; use _clear_internal_caches() instead.")
341+
def _clear_type_cache() -> None: ...
342+
343+
else:
344+
def _clear_type_cache() -> None: ...
345+
339346
def _current_frames() -> dict[int, FrameType]: ...
340347
def _getframe(depth: int = 0, /) -> FrameType: ...
341348
def _debugmallocstats() -> None: ...

stdlib/tkinter/commondialog.pyi

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
from _typeshed import Incomplete
21
from collections.abc import Mapping
3-
from typing import ClassVar
2+
from tkinter import Misc
3+
from typing import Any, ClassVar
44

55
__all__ = ["Dialog"]
66

77
class Dialog:
88
command: ClassVar[str | None]
9-
master: Incomplete | None
10-
options: Mapping[str, Incomplete]
11-
def __init__(self, master=None, **options) -> None: ...
12-
def show(self, **options): ...
9+
master: Misc | None
10+
# Types of options are very dynamic. They depend on the command and are
11+
# sometimes changed to a different type.
12+
options: Mapping[str, Any]
13+
def __init__(self, master: Misc | None = None, **options: Any) -> None: ...
14+
def show(self, **options: Any): ...

0 commit comments

Comments
 (0)