Skip to content

Consider making staticmethod and classmethod generic #132457

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

Open
sobolevn opened this issue Apr 12, 2025 · 1 comment
Open

Consider making staticmethod and classmethod generic #132457

sobolevn opened this issue Apr 12, 2025 · 1 comment
Labels
interpreter-core (Objects, Python, Grammar, and Parser dirs) topic-typing type-feature A feature request or enhancement

Comments

@sobolevn
Copy link
Member

sobolevn commented Apr 12, 2025

Feature or enhancement

Typeshed defines staticmethod and classmethod as generics:

  1. https://github.com/python/typeshed/blob/f6216ec6230aa51fe7e23afca30a8f5b18ace476/stdlib/builtins.pyi#L137
  2. https://github.com/python/typeshed/blob/f6216ec6230aa51fe7e23afca30a8f5b18ace476/stdlib/builtins.pyi#L154

It makes sense, because they are very callable-like. However:

>>> staticmethod[int]
Traceback (most recent call last):
  File "<python-input-0>", line 1, in <module>
    staticmethod[int]
    ~~~~~~~~~~~~^^^^^
TypeError: type 'staticmethod' is not subscriptable
>>> classmethod[int]
Traceback (most recent call last):
  File "<python-input-1>", line 1, in <module>
    classmethod[int]
    ~~~~~~~~~~~^^^^^
TypeError: type 'classmethod' is not subscriptable

We should consider making them generics in runtime as well.

@AlexWaygood @JelleZijlstra thoughts?
If you agree, I have a PR ready.

Linked PRs

@sobolevn sobolevn added interpreter-core (Objects, Python, Grammar, and Parser dirs) topic-typing type-feature A feature request or enhancement labels Apr 12, 2025
@sobolevn sobolevn self-assigned this Apr 12, 2025
@sobolevn sobolevn removed their assignment Apr 13, 2025
@IvanKirpichnikov
Copy link

IvanKirpichnikov commented Apr 17, 2025

Another thing I noticed is that some generics in typeshed are not actually generics.
For example, almost all objects in itertools.pyi and functools.pyi are generics, but only a few of them are actually generics.

I can provide a list of such objects. I am also ready to undertake this correction if it is approved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
interpreter-core (Objects, Python, Grammar, and Parser dirs) topic-typing type-feature A feature request or enhancement
Projects
None yet
Development

No branches or pull requests

2 participants