Class is not generic if it extends `type[X]`
@sobolevn đang làm issue này rồi.
Từ ngày 14/12/2022.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Code sample:
>>> from typing import TypeVar
>>> X = TypeVar('X')
>>> class Subtype(type[X]): ...
...
>>> Subtype[int]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: type 'Subtype' is not subscriptable
This is quite strange. To make it generic, you must have explicit Generic base class:
>>> from typing import Generic
>>> class Subtype(type[X], Generic[X]): ...
...
>>> Subtype[int]
__main__.Subtype[int]
It looks like a bug to me because of two reasons:
- Because other stdlib generics work differently:
>>> class Sublist(list[X]): ...
...
>>> Sublist[int]
- Because
typing.Typeworks as it should:
>>> from typing import Type
>>> class Subtype(Type[X]): ...
...
>>> Subtype[int]
__main__.Subtype[int]
But, I think that type is special enough to be handled extra carefully:
class S(type): ...is not generic and does not have__class_getitem__, hastypeinmroclass S(type[X]): ...is generic and has__class_getitem__, hastypeinmro
I can work on a fix if others agree that this is a bug 😊
- Ngôn ngữ chính
- Python
- Star
- 77.2k
- Fork
- 36k
- Merge trung bình
- 1 ngày 9 giờ
- Pull request đã merge (30 ngày)
- 558
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của python/cpython
-
docs pending
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
stdlib type-feature
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
stdlib type-feature
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
build type-bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
stdlib topic-email type-feature
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Tất cả issue của python/cpython
Issue tương tự
-
link-check link-check:sphinx-theme
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
qgis/QGIS-Documentation#11275 ·
-
bug priority:normal ready-for-dev
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
OpenHands/extensions#626 · 1 bình luận ·
-
Change observation tooltip text Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
CSCfi/sd-search-api#39 ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100