`@deprecated` doesn't work with non-overloaded constructors
Đang mở
Chưa có ai nhận issue này.
bug
topic-pep-702
- Ngôn ngữ chính
- Python
- Star
- 20.6k
- Fork
- 3.3k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
Bug Report, To Reproduce, & Actual Behaviour
This is similar to #19588, but that was fixed on master for the case when __init__ is overloaded.
In the non-overloaded case, @deprecated still doesn't report anything (mypy Playground):
To Reproduce
from typing import overload
from typing_extensions import deprecated, Self
class Some:
@deprecated("reason")
def __new__(cls, x: str) -> Self: ...
Some('test') # No reports here
class Some2:
@deprecated("reason")
def __init__(self, x: str) -> None: ...
Some2('test') # No reports here
Expected Behavior
Some('test') # E: function Some.__new__ is deprecated: reason [deprecated]
Some2('test') # E: function Some.__init__ is deprecated: reason [deprecated]
Your Environment
- Mypy version used: 1.18.2, master
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.
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện các trường hợp Some.new và Some2.init không overloaded trong mypy Playground được liên kết, sau đó so sánh cách xử lý của chúng với trường hợp overloaded từ #19588. Hoàn tất khi cả hai lời gọi constructor đều phát ra các chẩn đoán [deprecated] như mong đợi được hiển thị trong issue.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- devtools
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 48/100