/aclick

Primary LanguagePythonMIT LicenseMIT

aclick

pypi tests coverage python

aclick is a python library extending click with the support for typing. It uses function signatures to automatically register options to parsers. Please refer to the documentation.

The following features are currently supported:

  • Positional-only parameters are added as click Arguments, other parameters become click Options.
  • Docstring is automatically parsed and used to generate command and parameter descriptions.
  • Arguments with int, float, str, bool values both with and without default value.
  • Complex structures of classes and dataclasses that are automatically inlined as a single string, e.g., class1("arg1", arg2=class2()).
  • Complex structures of classes and dataclasses that are expanded as individual options with the hierarchical=True option enabled.
  • Type Union of complex classes both inlined and hierarchical.
  • Type Optional of inlined complex classes.
  • Type Literal of strings.
  • Lists and tuples of both the primitive and inlined complex types.
  • Parameters can be renamed.
  • Parameter values can be loaded from a JSON, YAML, or other file.
  • Configuration can be loaded using the gin-config package.
  • For other features please refer to the documentation.

Installation

Install the library from pip:

$ pip install aclick

Getting started

Import aclick instead of click:

# python main.py test --arg2 4

import aclick

@aclick.command()
def example(arg1: str, /, arg2: int = 5):
    pass

example()

When using click.groups:

# python main.py example test --arg2 4

import aclick

@aclick.group()
def main():
    pass

@main.command('example')
def example(arg1: str, /, arg2: int = 5):
    pass

main()

For further details please look at the documentation.

License

MIT