Release 20190729: BaseCommand: support for a USAGE_FORMAT usage message format string and a getopt_error_handler method.
Class BaseCommand
A base class for handling nestable command lines.
This class provides the basic parse and dispatch mechanisms for command lines. To implement a command line one instantiates a subclass of BaseCommand:
class MyCommand(BaseCommand):
GETOPT_SPEC = 'ab:c'
USAGE_FORMAT = r"""Usage: {cmd} [-a] [-b bvalue] [-c] [--] arguments...
-a Do it all.
-b But using bvalue.
-c The 'c' option!
"""
...
the_cmd = MyCommand()
Running a command is done by:
the_cmd.run(argv)
The subclass is customised by overriding the following methods:
apply_defaults(options): prepare the initial state ofoptionsbefore any command line options are appliedapply_opts(options,opts): apply theoptstooptions.optsis an option value mapping as returned bygetopot.getopt.cmd_subcmd(argv,options): if the command line options are followed by an argument whose value is subcmd, then methodcmd_subcmd(argv,options)will be called whereargvcontains the command line arguments after subcmd.main(argv,options): if there are no command line aguments after the options or the first argument does not have a correspondingcmd_subcmd method then methodmain(argv,options)will be called whereargvcontains the command line arguments.run_context(argv,options,cmd): a context manager to provide setup or teardown actions to occur before and after the command implementation respectively. If the implementation is acmd_subcmd method then this is called withcmd=subcmd; if the implementation ismainthen this is called withcmd=None.
To aid recursive use
it is intended that all the per command state
is contained in the options object
and therefore that in typical use
all of apply_opts, cmd_subcmd, main and run_context
should be static methods making no reference to self.
Editorial: why not arparse?
Primarily because when incorrectly invoked
an argparse command line prints the help/usage messgae
and aborts the whole programme with SystemExit.
Function docmd(dofunc)
Decorator for Cmd subclass methods to supply some basic quality of service.
This decorator:
- wraps the function call in a
cs.pfx.Pfxfor context - intercepts
getopt.GetoptErrors, issues awarningand runsself.do_helpwith the method name, then returnsNone - intercepts other
Exceptions, issues anexceptionlog message and returnsNone
The intended use is to decorate cmd.Cmd do_* methods:
from cmd import Cmd
class MyCmd(Cmd):
@docmd
def do_something(...):
... do something ...
Release Log
Release 20190729: BaseCommand: support for a USAGE_FORMAT usage message format string and a getopt_error_handler method.
Release 20190619.1: Another niggling docstring formatting fix.
Release 20190619: Minor documentation updates.
Release 20190617.2: Lint.
Release 20190617.1: Initial release with @docmd decorator and alpha quality BaseCommand command line assistance class.
Metadata
Release files for cs-cmdutils 20190729
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cs.cmdutils-20190729.tar.gz | 5.6 kB | Without provenance | Details for cs.cmdutils-20190729.tar.gz |
Release files / cs.cmdutils-20190729.tar.gz
| Download URL | cs.cmdutils-20190729.tar.gz |
|---|---|
| Size | 5.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a05f77c248396ec5f152c4d950b52b77782498ae5f4b85849e50c2fc00d5f27d
|
|
BLAKE2b-256 checksum How to use checksums |
e9fbd44898656696d1d0ad6a2f1af51fef8ace330447e97b47a8c646ef91595c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.4
|
Security for cs-cmdutils 20190729
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.