-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Add collections._tuplegetter
stub
#14436
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
This comment has been minimized.
This comment has been minimized.
I suspects stubtests are failing because they run |
The test failures seem mostly unrelated, probably because new minor Python versions were released for the GitHub Actions runners. But I spotted at least one problem related to this PR in the tests, but we can look at that when the unrelated errors have been cleared. |
I think the remaining test failures are due to this PR changing how stubtest analyzes named tuples. Currently, the fact that |
This comment has been minimized.
This comment has been minimized.
@@ -32,6 +32,19 @@ _VT = TypeVar("_VT") | |||
_KT_co = TypeVar("_KT_co", covariant=True) | |||
_VT_co = TypeVar("_VT_co", covariant=True) | |||
|
|||
@final | |||
class _tuplegetter(Generic[_T]): # undocumented |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not likely to be needed, but for completeness:
class _tuplegetter(Generic[_T]): # undocumented | |
class _tuplegetter(Generic[_T]): # undocumented | |
def __init__(self, index: SupportsIndex, doc: str, /) -> None: ... | |
def __reduce__(self) -> tuple[type[Self], tuple[int, str]]: ... |
stdlib/collections/__init__.pyi
Outdated
@overload | ||
def __get__(self, instance: None, owner: type[Any] | None = None) -> Self: ... | ||
@overload | ||
def __get__(self, instance: object, owner: type[Any] | None = None) -> _T: ... | ||
else: | ||
@overload | ||
def __get__(self, instance: None, owner: type[Any] | None) -> Self: ... | ||
@overload | ||
def __get__(self, instance: object, owner: type[Any] | None) -> _T: ... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
__get__
doesn't accept keyword arguments at runtime:
@overload | |
def __get__(self, instance: None, owner: type[Any] | None = None) -> Self: ... | |
@overload | |
def __get__(self, instance: object, owner: type[Any] | None = None) -> _T: ... | |
else: | |
@overload | |
def __get__(self, instance: None, owner: type[Any] | None) -> Self: ... | |
@overload | |
def __get__(self, instance: object, owner: type[Any] | None) -> _T: ... | |
@overload | |
def __get__(self, instance: None, owner: type[Any] | None = None, /) -> Self: ... | |
@overload | |
def __get__(self, instance: object, owner: type[Any] | None = None, /) -> _T: ... | |
else: | |
@overload | |
def __get__(self, instance: None, owner: type[Any] | None, /) -> Self: ... | |
@overload | |
def __get__(self, instance: object, owner: type[Any] | None, /) -> _T: ... |
@@ -32,6 +32,19 @@ _VT = TypeVar("_VT") | |||
_KT_co = TypeVar("_KT_co", covariant=True) | |||
_VT_co = TypeVar("_VT_co", covariant=True) | |||
|
|||
@final | |||
class _tuplegetter(Generic[_T]): # undocumented |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could mention that at runtime this class is implemented in _collections
, but it considers itself to live in collections
since Python 3.12
According to mypy_primer, this change has no effect on the checked open source code. 🤖🎉 |
You're right. The functional form of |
Needed for python/mypy#19414 as was suggested in python/mypy#19479 (review)
@srittau 2025-07-22 Deferred: stubtest needs special handling for
namedtuple
's functional form first.