Can't convert from Tuple of optional to Tuple of non-optional
Đang mở
Chưa có ai nhận issue này.
false-positive
feature
priority-2-low
- 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ả
Code:
from typing import Tuple, Optional
a: Tuple[Optional[int], Optional[int]] = (1, 1)
b: Tuple[int, int]
if a[0] is not None and a[1] is not None:
b = a
After that has error:
script.py:6: error: Incompatible types in assignment (expression has type "Tuple[Optional[int], Optional[int]]", variable has type "Tuple[int, int]")
Expected no error.
I have: mypy-0.770 and Python 3.7.7
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 lỗi được báo cáo từ script.py bằng mypy với các chú thích Tuple và Optional đã cho. Điều tra cách mypy thu hẹp các phần tử tuple sau hai lần kiểm tra None, và coi công việc là hoàn tất khi phép gán cho b được chấp nhận mà không có lỗi incompatible-types.
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