Check for return type of overload implementation is too strict?
Chưa có ai nhận issue này.
- 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ả
Consider this simplified example:
from typing import overload, Optional, List
@overload
def f(x: int) -> List[int]: ...
@overload
def f(x: None) -> List[Optional[int]]: ...
def f(x: Optional[int]) -> List[Optional[int]]:
return [x]
Mypy currently complains about it that:
Overloaded function implementation cannot produce return type of signature 1
Although I understand why this happens, it is a bit annoying and can be perceived as a false positive. Maybe we should use is_overlapping_types() instead of is_subtype() for the check?
cc @Michael0x2a
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 ví dụ overload được đơn giản hóa và lần theo bước kiểm tra kiểu trả về của phần triển khai trong mypy. So sánh kiểm tra is_subtype() hiện tại với hành vi được đề xuất của is_overlapping_types(), sau đó xác định xem ví dụ có nên được chấp nhận hay không và xác thực quyết định đó bằng phạm vi kiểm thử hồi quy.
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
- compilers, devtools
- Loại issue
- Lỗi
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- 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
- 35/100