list.append seems to break return type checker
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ả
Hello, concerning the function below:
from typing import List
def foo() -> List[int]:
listings = None
if 2 != 2:
listings = list()
listings.append(1)
return listings
I expected:
Incompatible return value type (got "Optional[List[int]]", expected "List[int]")
I got no error
This one does throw the expected error (same config):
from typing import List
def foo() -> List[int]:
listings = None
if 2 != 2:
listings = [1]
return listings
running mypy 0.770 on python 3.8
I would appreciate it if you could tell me if I am doing something wrong :)
Have a good day !
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
Tái hiện hai snippet bằng mypy 0.770 trên Python 3.8 và so sánh kiểu được suy luận của listings trước return. Theo dõi cách xử lý list.append so với list literal, sau đó thêm một kiểm thử hồi quy cho thấy cả hai trường hợp đều tạo ra lỗi Optional[List[int]] mong đợi đối với giá trị trả về.
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
- tooling
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 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
- 35/100