Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

argparse-subdec-0.2.1.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

argparse_subdec-0.2.1-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

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

Hashes for argparse-subdec-0.2.1.tar.gz
Algorithm Hash digest
SHA256 9fb49b79d0f5519a03e2b1f0cf2eb30053636df1cf40efa65498e48ba5df6eec
MD5 716623ed2ecab42476dcf84567c01457
BLAKE2b-256 cf411edc9645132d8bd44172065c2556dc71cc1cbef4f8ae9283f4ee0d19b5a9

See more details on using hashes here.

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

Hashes for argparse_subdec-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bf2851aa12357648ce99fd0cc99728d0d9b1f1aeddc8a6fb4f32a5b82f93a872
MD5 de3efd6ed776a9a5f5a05492dbc492cf
BLAKE2b-256 d792cbe178a316c1e75b54d2bcb58e1755895dc4124ffb07c3c8c07bc9aa16d1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page