get_parameter_source does not work with invoke or forward
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
- #3790 của @leilei3167 — đã đóng, không merge
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 38/100
Hướng nghiên cứu
Bắt đầu bằng cách chạy sample với Click 8.1.7 và so sánh get_parameter_source trong các lần gọi trực tiếp, forward và invoke. Theo dõi các điểm vào Context get_parameter_source, forward và invoke để xác định cách các nguồn tham số được phân giải; hoàn thành có nghĩa là các lệnh được invoke báo cáo nguồn mong đợi, với các kiểm thử bao quát cả hai đường dẫn.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
When invoking one Click command from another using either invoke or forward, get_parameter_source does not appear to work as it does if the command were called directly.
Sample code:
import click
cli = click.Group()
@cli.command()
@click.option('--count', default=1)
@click.pass_context
def test(ctx, count):
click.echo(f'Count: {count}')
click.echo(f'ctx.get_parameter_source: {ctx.get_parameter_source("count")}')
click.echo(f'ctx.parent.get_parameter_source: {ctx.parent.get_parameter_source("count") if ctx.parent else None}')
@cli.command()
@click.option('--count', default=1)
@click.pass_context
def dist(ctx, count):
click.echo("Calling directly")
test(standalone_mode=False)
click.echo("Forwarding")
ctx.forward(test)
click.echo("Invoking")
ctx.invoke(test, count=42)
if __name__ == '__main__':
dist()
Results:
Calling directly
Count: 1
ctx.get_parameter_source: ParameterSource.DEFAULT
ctx.parent.get_parameter_source: None
Forwarding
Count: 1
ctx.get_parameter_source: None
ctx.parent.get_parameter_source: ParameterSource.DEFAULT
Invoking
Count: 42
ctx.get_parameter_source: None
ctx.parent.get_parameter_source: ParameterSource.DEFAULT
I would expect ctx.get_parameter_source to be ParameterSource.DEFAULT for the calls made using invoke and forward or for the differing behavior to be explicitly mentioned in the get_parameter_source documentation. I ran into this issue when wrapping a dbt command, so I believe I'm not the only one that expects not to have to check a parent's get_parameter_source (dbt source).
Thank you for your help.
Environment:
- Python version: Python 3.9.17
- Click version: 8.1.7
- Ngôn ngữ chính
- Python
- Star
- 17.8k
- Fork
- 3.3k
- Merge trung bình
- 3 ngày 3 giờ
- Pull request đã merge (30 ngày)
- 13
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- 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 pallets/click
-
`show_envvar=True` Drops Environment Variable from Error Messages When Using `auto_envvar_prefix`Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày
-
More private utilities that need to be marked and public api deprecatedCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mởtyping
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
pallets/click#3847 · 9 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Automatically append ellipsis (`...`) to metavars when `multiple=True` in optionsCó thể đã có người làm @SparshGarg999 đã nhận 89 ngày trước. Đang mởhelp output
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
pallets/click#3652 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
`HelpFormatter.write_usage` breaks options at a hyphenCó thể đã có người làm @kdeldycke đã nhận 10 ngày trước. Đang mởhelp output
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
pallets/click#3362 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Add glossary of terms to click reference docsCó thể đã có người làm @rohitbarhate111-commits đã nhận 56 ngày trước. Đang mởdocs
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
pallets/click#3077 · 5 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của pallets/click
Issue tương tự
-
needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
gke-labs/kube-agents#5671 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
docs(auth): Method B step 4 should tell users to tick "Use this client for an AI-powered agent"Đang mởdocumentation next-release v0.9.6
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
khuisman/mcp-gee-sweet#1446 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
In-box secret files written before their chmod: lc-creds, stacks tee, and the workspace tokenĐang mởmodel:sonnet runtime:claude security size:S
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
FootprintAI/Containarium#3671 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
HolidayBase: reassigning `language` does not re-initialize translations or re-populate holidaysCó thể đã có người làm @shikhabhadoria đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
vacanza/holidays#4116 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug CLI exec
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày