The call stack is displayed when an exception is returned when an invalid parameter is displayed during command line association.

オープン
#2,853 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

  • #3799 @22elix3r による — マージされずにクローズ

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
python
領域
cli

調査の方向性

click/core.py の resolve_command 周辺と、click/_bashcomplete.py の resolve_ctx および get_choices 周辺を読み、traceback に記載されている無効なパラメーターの補完ケースを再現してください。コマンドラインの関連付け中に get_command の UsageError がどのように表示されるかを確認してください。エラーメッセージが残り、コールスタックが出力されなければ完了です。

索引モデルが issue の本文から書いたものです。

説明

parsing
def resolve_command(
        self, ctx: Context, args: list[str]
    ) -> tuple[str | None, Command | None, list[str]]:
        cmd_name = make_str(args[0])
        original_cmd_name = cmd_name

        # Get the command
        cmd = self.get_command(ctx, cmd_name)

when get_command return ctx.fail,the call stack is displayed

Traceback (most recent call last):
  File "/usr/local/bin/config", line 8, in <module>
    sys.exit(config())
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 777, in main
    _bashcomplete(self, prog_name, complete_var)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 72, in _bashcomplete
    if bashcomplete(cmd, prog_name, complete_var, complete_instr):
  File "/usr/local/lib/python3.9/site-packages/click/_bashcomplete.py", line 373, in bashcomplete
    return do_complete(cli, prog_name, shell == "zsh")
  File "/usr/local/lib/python3.9/site-packages/click/_bashcomplete.py", line 334, in do_complete
    for item in get_choices(cli, prog_name, args, incomplete):
  File "/usr/local/lib/python3.9/site-packages/click/_bashcomplete.py", line 282, in get_choices
    ctx = resolve_ctx(cli, prog_name, args)
  File "/usr/local/lib/python3.9/site-packages/click/_bashcomplete.py", line 122, in resolve_ctx
    cmd_name, cmd, args = ctx.command.resolve_command(ctx, args)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1297, in resolve_command
    cmd = self.get_command(ctx, cmd_name)
  File "/usr/local/lib/python3.9/site-packages/utilities_common/cli.py", line 102, in get_command
    **ctx.fail('Too many matches: %s' % ', '.join(sorted(matches)))**
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 550, in fail
    raise UsageError(message, self)
click.exceptions.UsageError: Too many matches: inner-congested-bw-threshold, inner-full-notify-interval, inner-ldh-threshold, inner-notify-interval

Can only the error message be retained and the call stack is not printed?

Environment:

  • Python version: 3.9
  • Click version: 7.1.2
主要言語
Python
スター
17.8k
フォーク
3.3k
平均マージ
3日 3時間
マージ済み PR(30日)
13

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

pallets/click のほかの issue

pallets/click の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。