Allow specifying length of sized object
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ả
Sometimes I want to specify the size of a container. This could be done manually with casts, but it would be really cool if Mypy could figure this out automatically. __len__() is guaranteed to return an int, and since a is defined as a literal the match could be statically inferrable. The same is true of other container types.
from typing_extensions import Protocol, Literal
class Char(Protocol):
def __len__(self) -> Literal[1]:
...
a: Char = "X"
Mypy reports
error: Incompatible types in assignment (expression has type "str", variable has type "Char")
note: Following member(s) of "str" have conflicts:
note: Expected:
note: def __len__(self) -> Literal[1]
note: Got:
note: def __len__(self) -> int
Mypy 0.720
CPython 3.7.3
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 ví dụ Python 3.7.3 được cung cấp với hành vi Mypy 0.720 đã được báo cáo và kiểm tra cách tính tương thích của protocol xử lý các kiểu trả về của len và các giá trị Literal. Được xem là hoàn tất khi phép gán cho Char được chấp nhận nếu kích thước container có thể được suy luận tĩnh, với hành vi tương đương đối với các kiểu container khác.
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
- 30/100