Adding Overloads of stdlib Built-in Types __new__ with No Arguments
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 5.1k
- Fork
- 2.1k
- Merge trung bình
- 1 ngày 19 giờ
- Pull request đã merge (30 ngày)
- 82
Mô tả
Calling int() and str() with no arguments returns 0 and "" respectively, likewise for bool() == False and bytes() == b"". But to actually call these constructors without arguments is very unusual and is likely a mistake on part of the user.
# a and b are two strings
x = int(a)
y = int() # typo, should be int(b)
x / y # ZeroDivisionError
It will be helpful for type stubs to denote that such no-argument calls return a constant value, and for IDEs to possibly notify of such use.
Currently the stub for int.__new__ looks like this:
class int:
@overload
def __new__(cls, x: ConvertibleToInt = 0, /) -> Self: ...
and str.__new__:
class str(Sequence[str]):
@overload
def __new__(cls, object: object = "") -> Self: ...
I suggest adding an overload with no argument and removing the default parameter value from the one-arg __new__, though I'm not sure if there are existing special behaviors of type checkers regarding builtins that I'm unaware of.
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 với stdlib/builtins.pyi, đặc biệt là các định nghĩa int.new và str.new được liên kết trong issue, rồi kiểm tra các stub của constructor tích hợp tương ứng cho bool và bytes. Hãy kiểm tra cách các trình kiểm tra kiểu hiện có xử lý tham số mặc định so với các overload riêng biệt, sau đó đảm bảo các stub phân biệt lời gọi không có đối số với lời gọi có một đối số và xác thực các giá trị hằng số được suy luận tương ứng.
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
- Tính năng
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 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
- 45/100