WrappedJoin adds an empty line before an oversized first item
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 76/100
Hướng nghiên cứu
Bắt đầu bằng cách xác định formatting.WrappedJoin và kiểm tra các nhánh overflow của nó, sau đó xem helptext._CreateAvailabilityLine kết hợp đầu ra của nó với việc cắt header như thế nào. Tái hiện ba ví dụ trong issue và bổ sung kiểm thử hồi quy cho một item quá lớn duy nhất, một item đầu tiên quá lớn và một separator rộng hơn chiều rộng khả dụng; hoàn thành khi không có dòng trống ở đầu và có wrapping cùng indentation như mong đợi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem
When the first item is longer than the available width, WrappedJoin starts its output with an empty line. Its caller _CreateAvailabilityLine then combines that extra newline with the header slicing, shifting the first command one column to the right.
from fire import formatting, helptext
print(formatting.WrappedJoin(['long_command'], width=5))
# ['', 'long_command']; expected ['long_command']
print(formatting.WrappedJoin(['first', 'next'], width=5))
# ['', 'first |', 'next']; expected ['first |', 'next']
print(helptext._CreateAvailabilityLine('COMMANDS', ['long_command'], line_length=30))
# The command starts at column 26 rather than the requested items_indent=25.
The overflow branches append current_line even when it is still empty. I plan to only append a non-empty current line, keeping long items intact and preserving subsequent wrapping. Regression tests for a single long item, a long first item among multiple commands and an item whose separator exceeds the width fail on main.
Reproduced on macOS / Python 3.12.13. Checked existing issues and PRs for an overlapping WrappedJoin fix.
Investigated with Codex assistance.
- Ngôn ngữ chính
- Python
- Star
- 28.2k
- Fork
- 1.5k
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc 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.
Issue khác của google/python-fire
-
Brace-based template arguments crash literal parsing with TypeErrorCó thể đã có người làm @codewithfourtix đã nhận 3 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
google/python-fire#703 ·
-
Test suite fails on Windows: unescaped path regex in testArgPassing, NamedTemporaryFile reopen in testFileNameFireCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
google/python-fire#693 ·
-
Release 0.7.2?Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 38/100
google/python-fire#698 ·
-
Uncaught exception when a component has a property whose getter raises (intended?)Có thể đã có người làm @rootkiller6788 đã nhận 29 ngày trước. Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 58/100
google/python-fire#672 · 5 bình luận ·
-
python-fire: (1) PAGER+shell=True RCE in console_io.More (2) bash $(...) runs when sourcing --completion from maliciously named .py file. PoC verified.Có thể đã có người làm @ojassharma7 đã nhận 65 ngày trước. Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
google/python-fire#665 · 2 bình luận ·
Tất cả issue của google/python-fire
Issue tương tự
-
bug needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
debpalash/VoiceStudio#2624 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Make Catch2 optional when `RDK_BUILD_CPP_TESTS=OFF`Có thể đã có người làm @pechersky đã nhận hôm nay. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 2 ngày
-
There are a few redundant calls to `fdesc._setCloseOnExec()`Có thể đã có người làm @gudnimg đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày