Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
doc to argparse
driven by docopt
|Py-Versions| |PyPI| |Conda-Forge|
|Build-Status| |Coverage-Status| |Branch-Coverage-Status| |Codacy-Grade| |Libraries-Rank| |PyPI-Downloads|
|LICENCE| |OpenHub-Status| |Gift-Casper|
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 <https://github.com/iterative/shtab>
__ or
Gooey <https://github.com/chriskiehl/Gooey>
__ but with the simple syntax of
docopt <https://github.com/docopt/docopt>
__.
.. contents:: Table of contents :backlinks: top :local:
Latest PyPI stable release
|PyPI| |PyPI-Downloads| |Libraries-Dependents|
.. code:: sh
pip install argopt
Latest development release on GitHub
|GitHub-Status| |GitHub-Stars| |GitHub-Commits| |GitHub-Forks| |GitHub-Updated|
Pull and install:
.. code:: sh
pip install "git+https://github.com/casperdcl/argopt.git@master#egg=argopt"
Latest Conda release
|Conda-Forge|
.. code:: sh
conda install -c conda-forge argopt
Changelog
---------
The list of all changes is available on the Releases page: |GitHub-Status|.
Usage
-----
Standard `docopt <https://github.com/docopt/docopt>`__ docstring syntax applies.
Additionally, some improvements and enhancements are supported, such as type
checking and default positional arguments.
.. code:: python
'''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:
.. code:: python
'''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 <https://github.com/casperdcl/argopt/tree/master/examples>
__
folder.
|Py-Versions| |README-Hits|
.. code:: python
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
"""
|GitHub-Commits| |GitHub-Issues| |GitHub-PRs| |OpenHub-Status|
All source code is hosted on GitHub <https://github.com/casperdcl/argopt>
__.
Contributions are welcome.
Open Source (OSI approved): |LICENCE|
|OpenHub-Status|
casperdcl <https://github.com/casperdcl>
__ |Gift-Casper|)We are grateful for all |GitHub-Contributions|.
|README-Hits|
.. |Build-Status| image:: https://img.shields.io/github/actions/workflow/status/casperdcl/argopt/test.yml?branch=master&label=argopt&logo=GitHub :target: https://github.com/casperdcl/argopt/actions/workflows/test.yml .. |Coverage-Status| image:: https://img.shields.io/coveralls/github/casperdcl/argopt/master?logo=coveralls :target: https://coveralls.io/github/casperdcl/argopt .. |Branch-Coverage-Status| image:: https://codecov.io/gh/casperdcl/argopt/branch/master/graph/badge.svg :target: https://codecov.io/gh/casperdcl/argopt .. |Codacy-Grade| image:: https://api.codacy.com/project/badge/Grade/5282d52c142d4c6ea24f978b03981c6f :target: https://app.codacy.com/gh/casperdcl/argopt .. |GitHub-Status| image:: https://img.shields.io/github/tag/casperdcl/argopt.svg?maxAge=86400&logo=github :target: https://github.com/casperdcl/argopt/releases .. |GitHub-Forks| image:: https://img.shields.io/github/forks/casperdcl/argopt.svg?logo=github :target: https://github.com/casperdcl/argopt/network .. |GitHub-Stars| image:: https://img.shields.io/github/stars/casperdcl/argopt.svg?logo=github :target: https://github.com/casperdcl/argopt/stargazers .. |GitHub-Commits| image:: https://img.shields.io/github/commit-activity/y/casperdcl/argopt?label=commits&logo=git :target: https://github.com/casperdcl/argopt/graphs/commit-activity .. |GitHub-Issues| image:: https://img.shields.io/github/issues-closed/casperdcl/argopt.svg?logo=github :target: https://github.com/casperdcl/argopt/issues .. |GitHub-PRs| image:: https://img.shields.io/github/issues-pr-closed/casperdcl/argopt.svg?logo=github :target: https://github.com/casperdcl/argopt/pulls .. |GitHub-Contributions| image:: https://img.shields.io/github/contributors/casperdcl/argopt.svg?logo=github :target: https://github.com/casperdcl/argopt/graphs/contributors .. |GitHub-Updated| image:: https://img.shields.io/github/last-commit/casperdcl/argopt?label=pushed&logo=github :target: https://github.com/casperdcl/argopt/pulse .. |Gift-Casper| image:: https://img.shields.io/badge/gift-donate-dc10ff.svg?logo=Contactless%20Payment :target: https://caspersci.uk.to/donate .. |PyPI| image:: https://img.shields.io/pypi/v/argopt.svg?logo=PyPI&logoColor=white :target: https://pypi.org/project/argopt .. |PyPI-Downloads| image:: https://img.shields.io/pypi/dm/argopt.svg?label=pypi%20downloads&logo=DocuSign :target: https://pypi.org/project/argopt .. |Py-Versions| image:: https://img.shields.io/pypi/pyversions/argopt.svg?logo=python&logoColor=white :target: https://pypi.org/project/argopt .. |Conda-Forge| image:: https://img.shields.io/conda/v/conda-forge/argopt.svg?label=conda-forge&logo=conda-forge :target: https://anaconda.org/conda-forge/argopt .. |Libraries-Rank| image:: https://img.shields.io/librariesio/sourcerank/pypi/argopt.svg?color=green&logo=koding :target: https://libraries.io/pypi/argopt .. |Libraries-Dependents| image:: https://img.shields.io/librariesio/dependent-repos/pypi/argopt.svg?logo=koding :target: https://github.com/casperdcl/argopt/network/dependents .. |OpenHub-Status| image:: https://www.openhub.net/p/arg-opt/widgets/project_thin_badge?format=gif :target: https://www.openhub.net/p/arg-opt?ref=Thin+badge .. |LICENCE| image:: https://img.shields.io/pypi/l/argopt.svg?color=purple&logo=SPDX :target: https://raw.githubusercontent.com/casperdcl/argopt/master/LICENCE .. |README-Hits| image:: https://caspersci.uk.to/cgi-bin/hits.cgi?q=argopt&style=social&r=https://github.com/casperdcl/argopt :target: https://caspersci.uk.to/cgi-bin/hits.cgi?q=argopt&a=plot&r=https://github.com/casperdcl/argopt&style=social
FAQs
doc to argparse driven by docopt
We found that argopt demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.