Skip to content

Calling set_defaults on a subparser appears to affect parent defaults #424

@willhansen

Description

@willhansen
#!/usr/bin/env python3

import argparse

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest="subparser")

parent_parser = argparse.ArgumentParser(add_help=False)
parent_parser.add_argument("--payload")

a_parser = subparsers.add_parser("a", parents=[parent_parser],)
a_parser.set_defaults(payload="AAAAA")

b_parser = subparsers.add_parser("b", parents=[parent_parser])
b_parser.set_defaults(payload="BBBBB")

args = parser.parse_args()
print(f"{args=}")

Output

> ./test.py a
args=Namespace(subparser='a', payload='BBBBB')

> ./test.py b
args=Namespace(subparser='b', payload='BBBBB')

versions

> python3 --version
Python 3.12.3

> python3 -c "import argparse; print(argparse.__version__)"
1.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions