python / python/typing

Fixed-size, multi-type sequence

Đang mở
#592 3 bình luận 13 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

topic: feature
Ngôn ngữ chính
Python
Star
1.8k
Fork
302
Merge trung bình
23 giờ
Pull request đã merge (30 ngày)
8

Mô tả

This came up in python/typeshed#2287, but I have encountered the same problem myself. As far as I know, currently the only way to annotate a multi-type, fixed length sequence is using Tuple. But for input types this is often too strict:

def foo(x: Tuple[int, str]) -> None:
    a, b = x

def bar(x: Tuple[int, str]) -> None:
    a = x[0]
    b = x[1]

The implementations accept any iterable (first case) or sequence (second case) that yield two values:

class Iter:
    def __iter__(self):
        yield 1
        yield ""

foo((1, ""))
foo([1, ""])
foo(Iter())
bar((1, ""))
bar([1, ""])

It would be useful to have a way to annotate this. Of course type checkers would still need to reject generic cases like this:

def foo(x: TupleLike[str, str]): ...
x: List[str] = ...
foo(x)

But it could allow some things that are not possible at the moment, and opens the possibility for future improvements.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu bằng việc đọc python/typeshed#2287 và các ví dụ trong issue này, sau đó xem lại cách typing hiện biểu diễn tuple, iterable và sequence. Issue không nêu các tệp triển khai hoặc bài kiểm thử; để hoàn thành, cần thống nhất một thiết kế annotation hỗ trợ các đầu vào được mô tả đồng thời duy trì các ràng buộc kiểm tra kiểu hữu ích.

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ó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
25/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.