Assignment via `import`
Đang mở
Chưa có ai nhận issue này.
bug
topic-type-narrowing
- Ngôn ngữ chính
- Python
- Star
- 20.6k
- Fork
- 3.3k
- Merge trung bình
- 1 ngày 18 giờ
- Pull request đã merge (30 ngày)
- 54
Mô tả
In the following example MyPy complain about local import and does not recognize it as assignment:
from typing import Callable, Optional
def f(callable: Optional[Callable[[float], float]]) -> None:
if callable is None:
from math import sqrt as callable # line 5
callable(1.5) # line 7
Output:
t3.py:5: error: Name "callable" already defined on line 3
t3.py:7: error: "None" not callable
Found 2 errors in 1 file (checked 1 source file)
It is not recognized as assignment even for global import:
from typing import Callable, Optional
callable: Optional[Callable[[float], float]] = None
if callable is None:
from math import sqrt as callable
callable(1.5) # line 7
Output:
t32.py:7: error: "None" not callable
Found 1 error in 1 file (checked 1 source file)
mypy 0.950 (compiled: yes)
Python 3.9.12
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 chạy hai bản tái hiện Python inline với mypy 0.950 và so sánh các lỗi được báo cáo đối với các import cục bộ và toàn cục. Truy vết cách các bí danh import này được phân tích, sau đó thêm phạm vi kiểm thử hồi quy cho thấy callable được nhận diện sau import có điều kiện và các chẩn đoán sai đã biến mất.
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ó
- 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
- 38/100