Skip to content

argparse exclusive argument group error unintelligible #157127

Description

@hramrach

Bug report

Bug description:

    import argparse
    import os.path
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--debug",
        action="store_true",
        help="print out debugging information",
    )
    # Added optional branch argument
    parser.add_argument(
        "-b",
        "--branch",
        default="main",
        help="branch name to store commits in (default: main)",
    )
    parser.add_argument(
        "--non-interactive",
        action="store_true",
        help="disable interactive prompts for missing author information, pass --yes to lfs import",
    )
    parser.add_argument(
        "--template",
        default=os.path.join(
            os.path.dirname(__file__), "template"
        ),
        help="add files from this directory to every revision",
    )
    parser.add_argument(
        "--object-format",
        default="sha256",
        help="git object format to use (default: sha256)",
    )
    parser.add_argument(
        "--changelog",
        nargs="?",
        const=pkg_base,
        help="use changelog for commit messages, "
        f"package name is guessed ({pkg_base}) or can be specified",
    )
    repo_group = parser.add_mutually_exclusive_group(required=True)
    repo_group.add_argument(
        "--stdout",
        action="store_true",
        help="output git fast-import data to stdout",
    )
    repo_group.add_argument(
        "repository",
        nargs="?",
        help="import package into this git repository if --stdout is not given",
    )
    args = parser.parse_args()
$ python3 osc_fast_export.py 
usage: osc_fast_export.py [-h] [--debug] [-b BRANCH] [--non-interactive] [--template TEMPLATE]
                          [--object-format OBJECT_FORMAT] [--changelog [CHANGELOG]] (--stdout |
                          repository)
osc_fast_export.py: error: one of the arguments --stdout repository is required

The sentence

one of the arguments --stdout repository is required

is unintelligible. I wrote the code so I know why the output is like this but this is supposed to be read by a user who never looked at the code. The grammar of that sentence is broken.

CPython versions tested on:

3.13

Operating systems tested on:

Linux

Linked PRs

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions