No project description provided
Project description
This is a very simple Python package that allows one to create argparse’s subcommands via function decorators.
Usage
Create a SubDec object:
import argparse_subdec
# Create the object to collect subcommands via decorators
sd = argparse_subdec.SubDec()
Now, we can define our subcommands. We define a subcommand by decorating a function with method calls to sd, like below:
@sd.add_argument('--option', default='123')
@sd.add_argument('--another')
def foo(args):
print(f'foo subcommand: --option={args.option!r} and --another={args.another!r}')
You can use any method name that you would use in a subparser. In our example above, we used add_argument, probably most commonly used. When creating the subparsers, sd will replay those calls to the created subparser for the foo subcommand.
In the example below we define a second subcommand, which will be named foo-bar:
@sd.cmd(prefix_chars=':')
@sd.add_argument('positional_arg', type=int)
def foo_bar(args):
print(f'foo-bar subcommand: {args.positional_arg!r}')
Note that we use a special decorator, sd.cmd, which makes sd pass all of its arguments down to add_parser() when creating the subparser for foo-bar.
Once our subcommands are defined, we must call sd.create_parsers() in order to effectively create the subparsers:
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
sd.create_parsers(subparsers)
The following is example of how we would call the subcommands:
args = parser.parse_args(['foo', '--another', 'hello'])
args.fn(args) # The subcommand function is assigned to ``args.fn`` by default
# Outputs: foo subcommand: --option='123' and --another='hello'
For more details about the API, check out the subdec module.
Install
Via pip:
pip install argparse-subdec
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 Distribution
Built Distribution
File details
Details for the file argparse-subdec-0.2.1.tar.gz
.
File metadata
- Download URL: argparse-subdec-0.2.1.tar.gz
- Upload date:
- Size: 9.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9fb49b79d0f5519a03e2b1f0cf2eb30053636df1cf40efa65498e48ba5df6eec |
|
MD5 | 716623ed2ecab42476dcf84567c01457 |
|
BLAKE2b-256 | cf411edc9645132d8bd44172065c2556dc71cc1cbef4f8ae9283f4ee0d19b5a9 |
File details
Details for the file argparse_subdec-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: argparse_subdec-0.2.1-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf2851aa12357648ce99fd0cc99728d0d9b1f1aeddc8a6fb4f32a5b82f93a872 |
|
MD5 | de3efd6ed776a9a5f5a05492dbc492cf |
|
BLAKE2b-256 | d792cbe178a316c1e75b54d2bcb58e1755895dc4124ffb07c3c8c07bc9aa16d1 |