Add @disjoint_base decorator in the stdlib (#14599)

And fix some other new stubtest finds.
This commit is contained in:
Jelle Zijlstra
2025-08-24 07:27:14 -07:00
committed by GitHub
parent 2565f34946
commit e8ba06f710
55 changed files with 701 additions and 307 deletions
+58 -27
View File
@@ -26,7 +26,7 @@ from types import (
WrapperDescriptorType,
)
from typing import Any, ClassVar, Final, Literal, NamedTuple, Protocol, TypeVar, overload, type_check_only
from typing_extensions import ParamSpec, Self, TypeAlias, TypeGuard, TypeIs, deprecated
from typing_extensions import ParamSpec, Self, TypeAlias, TypeGuard, TypeIs, deprecated, disjoint_base
if sys.version_info >= (3, 14):
from annotationlib import Format
@@ -570,19 +570,6 @@ if sys.version_info >= (3, 11):
code_context: list[str] | None
index: int | None # type: ignore[assignment]
class Traceback(_Traceback):
positions: dis.Positions | None
def __new__(
cls,
filename: str,
lineno: int,
function: str,
code_context: list[str] | None,
index: int | None,
*,
positions: dis.Positions | None = None,
) -> Self: ...
class _FrameInfo(NamedTuple):
frame: FrameType
filename: str
@@ -591,19 +578,63 @@ if sys.version_info >= (3, 11):
code_context: list[str] | None
index: int | None # type: ignore[assignment]
class FrameInfo(_FrameInfo):
positions: dis.Positions | None
def __new__(
cls,
frame: FrameType,
filename: str,
lineno: int,
function: str,
code_context: list[str] | None,
index: int | None,
*,
positions: dis.Positions | None = None,
) -> Self: ...
if sys.version_info >= (3, 12):
class Traceback(_Traceback):
positions: dis.Positions | None
def __new__(
cls,
filename: str,
lineno: int,
function: str,
code_context: list[str] | None,
index: int | None,
*,
positions: dis.Positions | None = None,
) -> Self: ...
class FrameInfo(_FrameInfo):
positions: dis.Positions | None
def __new__(
cls,
frame: FrameType,
filename: str,
lineno: int,
function: str,
code_context: list[str] | None,
index: int | None,
*,
positions: dis.Positions | None = None,
) -> Self: ...
else:
@disjoint_base
class Traceback(_Traceback):
positions: dis.Positions | None
def __new__(
cls,
filename: str,
lineno: int,
function: str,
code_context: list[str] | None,
index: int | None,
*,
positions: dis.Positions | None = None,
) -> Self: ...
@disjoint_base
class FrameInfo(_FrameInfo):
positions: dis.Positions | None
def __new__(
cls,
frame: FrameType,
filename: str,
lineno: int,
function: str,
code_context: list[str] | None,
index: int | None,
*,
positions: dis.Positions | None = None,
) -> Self: ...
else:
class Traceback(NamedTuple):