Yet another argparse helper: complex sub-command trees made simple
Project description
Yet another argparse helper: complex sub-command trees made simple
Writing complex subcommand parsers using argparse is certainly possible, but it involves a lot
of laborious repetition.
This library provides a small wrapper around argparse that adds a convenience method. That
lets you specify a sequence of words that form a command, together with flags - and the
definitions of those flags are passed at the same time.
parser = ArgumentParser()
parser.add_command("foo bar baz --json",
func=lambda *args: print("foo-bar-baz"),
json=dict(default=False, action="store_true"),
)
parser.add_command("foo bar quux",
func=lambda *args: print("foo-bar-quux"),
)
The func parameter will be set on the resulting namespace. Note, there is no particular requirement
for the arguments that must be passed to func - this is down to the library user to define.
Additionally, a new argparse.Action subclass is provided, OptionalOverride. This supports
having the same flag appear in a global position and be repeated by a subcommand. It works
well - in as much as defaults set by the global position won't be re-set in the subordinate
position.
parser.add_command("--flag", flag=dict(default="foo"))
parser.add_command("xyzzy --flag", flag=dict(action=OptionalOverride))
Where a flag is repeated in an add_command call, the second and subsequent values receive an
OptionalOveride setting automatically.
parser.add_command("--glob xyzzy --glob", glob=dict(action=AtMostOnce))
# the second iteration becomes OptionalOverride
AtMostOnce is supplied as an action type; this causes an explicit error (rather than
just overriding the previous value) if a flag is specified more than once.
We also have AppendN(t) as an action type. It works like Append, but the type constructor
t is applied to its collected argument(s) before the result is appended to the list.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file argparse_helper-0.9.3-py3-none-any.whl.
File metadata
- Download URL: argparse_helper-0.9.3-py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0b621589b2901455129f1789858991e67df8a58679aae910340c8e57b29ff3e
|
|
| MD5 |
c7dfb9870aa15ccbb121b8af38481087
|
|
| BLAKE2b-256 |
c8b4853195e461994ac38b076e6b2c5b7102c71798c49af57525ecb03563af21
|