Generate better error message for incompatible **kwargs
Đang mở
Chưa có ai nhận issue này.
good-first-issue
priority-1-normal
topic-calls
topic-usability
- 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ả
This output is from #8772:
$ mypy test.py
test.py:6: error: Argument 2 to "dumps" has incompatible type "**Dict[str, int]"; expected "bool"
test.py:6: error: Argument 2 to "dumps" has incompatible type "**Dict[str, int]"; expected "Optional[Type[JSONEncoder]]"
test.py:6: error: Argument 2 to "dumps" has incompatible type "**Dict[str, int]"; expected "Optional[Tuple[str, str]]"
test.py:6: error: Argument 2 to "dumps" has incompatible type "**Dict[str, int]"; expected "Optional[Callable[[Any], Any]]"
Found 4 errors in 1 file (checked 1 source file)
The error messages are pretty confusing. We should special case this and produce a customized error message that explains the situation better.
Here's the code that triggers the errors:
import json
json_kwargs = dict(indent=2)
json.dumps({}, **json_kwargs)
Some ideas about what to do:
- Generate a single error message instead of multiple ones.
- Add a note suggesting the use of
Dict[str, Any]or a TypedDict type for the**kwargsargument. - Maybe also explain that mypy matches the value type against all arguments, or add a link to documentation (add something to common issues, for example).
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ụ trong test.py với json.dumps và so sánh với đầu ra từ #8772. Theo dõi việc báo cáo lỗi **kwargs hiện có, sau đó biến kết quả thành một chẩn đoán duy nhất, rõ ràng, kèm hướng dẫn về Dict[str, Any] hoặc TypedDict, và xác minh rằng các lỗi lặp lại gây khó hiểu đã 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
- Tính năng
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100