Skip to main content

Create command line interface from function definitions.

Each function will be a subcommand of your application.

Climatik define a function decorator which parse function definition and build a subcommand command line parser.

Optionally argcomplete is supported.

Docs

def command(fnc:Callable)

Build subcommand from function

Subcommand name will be the function name and arguments are parsed to build the command line. Optionally, subcommand name can be passed as parameter:

@command('name')
def test():
    ...

Subcommands can be groupped passing group_name paramenter:

@command(group_name="group")
def bar()
    ...

@command(group_name="group")
def baz()
    ...

This two functions will be called from command line as group bar and group baz

Each positional argument of the decorated function will be a positional paramenter.

Each optional argument will be an optional flag.

Type hints are used to covert types from command line string. If no type is defined, paramenter are handled as strings.

An argument with bool type is converted to an optional flag parameter (with default sematic as "False")

To create an optional positional paramenter, use the typing.Optional type as hint with the parameter type, e.g. Optional[str]

Function docstring is used to set command's help and description. To set arguments help string, add a line in docstring like

@param argname : argument help

Exacmple:

@command
def one(name, debug:bool, value="default", switchoff=True):
    """First subcommand
    
    @param debug: enable debug output
    """
    ...

@command
def two(name:Optional[str] = None, long_param = None):
    "Second subcommand"
    ...

gives:

$ script -h
usage: script [-h] {one,two} ...

positional arguments:
{one,two}
    one       First subcommand
    two       Second subcommand

optional arguments:
-h, --help  show this help message and exit

$ script one -h
usage: script one [-h] [--debug] [--value VALUE] [--switchoff] name

First subcommand

positional arguments:
name

optional arguments:
-h, --help     show this help message and exit
--debug        enable debug output
--value VALUE  (default 'default')
--switchoff

$ script two -h
usage: script two [-h] [--long-param LONG_PARAM] [name]

Second subcommand

positional arguments:
name

optional arguments:
-h, --help            show this help message and exit
--long-param LONG_PARAM

def group(name:str, help:str = "", description:str = "")

Set command group help and description

If a group named name does not exists, is created

Can be used also as a context manager. Each command defined in context will be added to the group

with group('file', help="Manage files", description="Functions to manage files"):
    @command
    def ls():
        ...
    
    @command
    def rm():
        ...

def run(prog:str=None, usage:str=None, description:str=None, **kwargs)

Run your application.

Builds the command line parse, with given arguments, and execute the requested function. It's a shorthand for

parser = build_parser(prog, usage, description, **kwargs)
execute(parser)

def execute(parser:argparse.ArgumentParser)

Execute command line from given parser

def get_parser(*args, **kwargs) -> argparse.ArgumentParser:

Build the command line parser

Arguments are passed to argparse.ArgumentParser constructor

Release files for climatik 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for climatik 0.4.2
File Interpreter ABI Platform
climatik-0.4.2-py38-none-any.whl Python 3.8 none any Details

Release files / climatik-0.4.2-py38-none-any.whl

Download URL climatik-0.4.2-py38-none-any.whl
Size 18.3 kB
Tags Python 3.8
SHA-256 checksum
How to use checksums
15ece4ad7fb8675f93432915163ddd58f903e07b07a26af1769745f827ef4b75
BLAKE2b-256 checksum
How to use checksums
531e9b45d504df4f6283400607ce8570a8eb8c479aaae87553c487ef051cc784
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.8

Release history Release notifications | RSS feed

This release

0.4.2 This release

1 release file

0.4.1

1 release file

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page