Skip to main content

Effortless argument parsing

Project description

defopt allows you to effortlessly call Python functions from the command line.

defopt will:

  • Allow functions to be called identically from code or the command line

  • Reward you for documenting your functions

  • Produce informative command line help messages

  • Save you from writing and maintaining argument parsing code ever again

defopt will not:

  • Modify your functions in any way

  • Allow you to build complex command line tools (try docopt or click)

Usage

Once you have written and documented your main function (currently you must use Sphinx-style docstrings), simply decorate it with @defopt.main, then call defopt.run() to see the magic happen.

import defopt

@defopt.main
def main(greeting, count=1):
    """Display a friendly greeting.

    :param str greeting: Greeting to display
    :param int count: Number of times to display the greeting
    """
    for _ in range(count):
        print(greeting)

if __name__ == '__main__':
    defopt.run()

This function can now be called identically from Python and the command line.

>>> from test import main
>>> main('hello!', count=2)
hello!
hello!
$ python test.py hello! --count 2
hello!
hello!

To use your defopt command line as a setuptools console entry point, call defopt.run() from within your module.

setup(
    ...,
    entry_points={'console_scripts': ['test=test:defopt.run']}
)

Development

For source code, examples, questions, feature requests and bug reports, visit the GitHub repository.

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

defopt-0.3.1.zip (21.5 kB view hashes)

Uploaded Source

Built Distribution

defopt-0.3.1-py2.py3-none-any.whl (6.9 kB view hashes)

Uploaded Python 2 Python 3

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