doc to argparse driven by docopt
Project description
doc to argparse driven by docopt
Define your command line interface (CLI) from a docstring (rather than the other way around). Because it’s easy. It’s quick. Painless. Then focus on what’s actually important - using the arguments in the rest of your program.
The problem is that this is not always flexible. Still need all the features of argparse? Now have the best of both worlds… all the extension such as shtab or Gooey but with the simple syntax of docopt.
Table of contents
Installation
Latest development release on GitHub
Pull and install:
pip install "git+https://github.com/casperdcl/argopt.git@master#egg=argopt"
Changelog
The list of all changes is available on the Releases page: .
Usage
Standard docopt docstring syntax applies. Additionally, some improvements and enhancements are supported, such as type checking and default positional arguments.
'''Example programme description. You should be able to do args = argopt(__doc__).parse_args() instead of args = docopt(__doc__) Usage: test.py [options] <x> [<y>...] Arguments: <x> A file. --anarg=<a> Description here [default: 1e3:int]. -p PAT, --patts PAT Or [default: None:file]. --bar=<b> Another [default: something] should auto-wrap something in quotes and assume str. -f, --force Force. ''' from argopt import argopt __version__ = "0.1.2-3.4" parser = argopt(__doc__, version=__version__) args = parser.parse_args() if args.force: print(args) else: print(args.x)
For comparison, the docopt equivalent would be:
'''Example programme description. Usage: test.py [options] <x> [<y>...] Arguments: <x> A file. --anarg=<a> int, Description here [default: 1e3]. -p PAT, --patts PAT file, Or (default: None). --bar=<b> str, Another [default: something] should assume str like everything else. -f, --force Force. -h, --help Show this help message and exit. -v, --version Show program's version number and exit. ''' from docopt import docopt __version__ = "0.1.2-3.4" args = docopt(__doc__, version=__version__) args["--anarg"] = int(eval(args["--anarg"])) if args["--patts"]: args["--patts"] = open(args["--patts"]) if args["--force"]: print(args) else: print(args["<x>"])
Advanced usage and examples
See the examples folder.
Documentation
def argopt(doc='', argparser=ArgumentParser, formatter_class=RawDescriptionHelpFormatter, logLevel=logging.NOTSET, **_kwargs): """ Note that `docopt` supports neither type specifiers nor default positional arguments. We support both here. Parameters ---------- doc : docopt compatible, with optional type specifiers [default: '':str] argparser : Argument parser class [default: argparse.ArgumentParser] version : Version string [default: None:str] formatter_class : [default: argparse.RawDescriptionHelpFormatter] logLevel : [default: logging.NOTSET] _kwargs : any `argparser` initialiser arguments N.B.: `prog`, `description`, and `epilog` are automatically inferred if not `None` Returns ------- out : argparser object (default: argparse.ArgumentParser) Usage ----- Extension syntax example: [default: 1e3:int]. You should be able to do parser = argopt(__doc__) args = parser.parse_args() instead of args = docopt(__doc__) TODO ---- add_argument_group add_mutually_exclusive_group (better) subparser support (docopt extension) action choices (docopt extension) action count """
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
Hashes for argopt-0.7.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03b9545c9e780bb600f9c885d325a7f96d31783de178f9bdcb7da3e97e24904e |
|
MD5 | 90a0a706188a1dbbbfbe964d4ce6b36d |
|
BLAKE2-256 | a8da6598a313ee1dadeb2ad328419883838b2a68c5aa64492539dba886e30672 |