Ignore typing errors in individual blocks
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ả
It is already possible to silence errors using # type: ignore on individual lines, and - since #626) also for a whole file.
Additionally it would be nice to ignore errors on individual blocks. Especially on a class/function level when abstracting away an untyped library. For example:
class MyAbstraction:
def __init__(self, url: str) -> None:
self.hostname = url.host # <-- I want this to be caught by the type-checker
def some_call(self) -> int:
# type: ignore
result = api.untyped_call()
return result
def another_large_call(self) -> int:
# type: ignore
result_1 = api.untyped_call_1()
result_2 = api.untyped_call_2()
result = result_1 + result_2
return result
When running mypy in "strict" mode the code will be littered with messages like Call to an untyped function ... in a typed context. Currently the only options are:
- Add
# type: ignoreon each line causing errors by the external library- Disadvantage: Cumbersome (many type-comments needed)
- Advantage: Only the problematic calls are silenced
- Add
# type: ignoreto the file- Disadvantage: Typing errors unrelated to the external library become invisible
- Advantage: Only one line to add
The second option is best used if a module contains only calls to the external library. For new projects this is doable, but older/larger code-bases often need some refactoring for this. And this can be error-prone and seems risky to do only for type-hinting.
Having the option to disable errors on either a class-level or block-level would add a lot of flexibility.
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
Issue không nêu tên tệp, bài kiểm thử hay điểm vào nào. Trước tiên, hãy lần theo cách mypy xử lý # type: ignore trong strict mode, sau đó xác định phạm vi và hành vi của việc suppression ở cấp lớp và cấp block; được xem là hoàn tất khi có thể im lặng có chọn lọc các lỗi được yêu cầu mà không che giấu các lỗi typing không liên quan.
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
- Loại issue
- Tính năng
- Độ 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