python / python/cpython

argparse - make return type from `add_subparsers` public

Đang mở
#101,503 10 bình luận 15 reaction 0 người được giao Xem trên GitHub

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

stdlib topic-typing type-feature
Ngôn ngữ chính
Python
Star
77.2k
Fork
36k
Chỉ số merge pull request
Chỉ số pull request đang chờ

Mô tả

This issue was brought up and closed as part of issue # 41592.

The add_subparsers method returns a protected _SubParsersAction instance. To add a sub-parser, the public add_parser method of the protected _SubParsersAction instance must be used.

  1. It is unexpected to require the use of a public method of a protected class instance.
  2. The protected return type breaks type hinting because
    1. protected and should not be imported
    2. it is not available for import

Real world use case example:

sub_parsers_action = parser.add_subparsers(...)

def build_subcmd(sub_parsers_action: _SubParsersAction):
    ...

The ask is to make the type of whatever is returned from add_subparsers public.

Linked PRs
  • gh-157001

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

Mở hướng dẫn đóng góp

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 từ argparse.ArgumentParser.add_subparsers và theo dõi _SubParsersAction được trả về, bao gồm cả phương thức công khai add_parser của nó. Xem xét PR được liên kết gh-157001 và ngữ cảnh typing/API xung quanh của argparse; công việc được xem là hoàn tất khi kiểu được trả về có thể được sử dụng công khai cho type hints mà không cần import lớp được bảo vệ.

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
cli
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
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
30/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.