Source on GitHub

Module paroxython.cli

Command line interface for the main functionalities of Paroxython.

Usage

paroxython [--version] [--help] COMMAND [ARGS...]

Commands

tag         Tag one Python file and output the table of its taxa or
            labels.
collect     Walk a directory, tag its Python files and make a JSON
            database of the results.
recommend   Read and execute a pipeline of commands and report the learning
            costs.

Type paroxython COMMAND --help for more information on a specific command.

Expand source code Browse GitHub
#! /usr/bin/env python
import sys
from importlib import import_module

import regex  # type: ignore
from docopt import docopt  # type: ignore

from . import PAROXYTHON_VERSION
from .goodies import print_exit

if sys.version_info < (3, 8):  # pragma: no cover
    print_exit(f"Paroxython requires Python 3.8 or later to run.\nThis version is {sys.version}.")


def main():
    doc = regex.sub(r"(?m)^ *```.*\n", "", __doc__)  # suppress Markdown code delimiters
    args = docopt(doc, version=f"paroxython version {PAROXYTHON_VERSION}", options_first=True)
    if not args.get("COMMAND"):  # pragma: no cover
        print_exit(doc)
    command_name = args["COMMAND"].lower()
    command_args = [command_name] + args["ARGS"]
    if command_name not in ("tag", "recommend", "collect"):
        print_exit(f"{command_name} is not a valid command. Type 'paroxython --help'.")
    command = import_module(f"paroxython.cli_{command_name}", "cli_wrapper")
    command.__doc__ = regex.sub(r"(?m)^ *```.*\n", "", command.__doc__)
    command.cli_wrapper(docopt(command.__doc__, argv=command_args))


if __name__ == "__main__":
    main()

Functions

def main()
Expand source code Browse GitHub
def main():
    doc = regex.sub(r"(?m)^ *```.*\n", "", __doc__)  # suppress Markdown code delimiters
    args = docopt(doc, version=f"paroxython version {PAROXYTHON_VERSION}", options_first=True)
    if not args.get("COMMAND"):  # pragma: no cover
        print_exit(doc)
    command_name = args["COMMAND"].lower()
    command_args = [command_name] + args["ARGS"]
    if command_name not in ("tag", "recommend", "collect"):
        print_exit(f"{command_name} is not a valid command. Type 'paroxython --help'.")
    command = import_module(f"paroxython.cli_{command_name}", "cli_wrapper")
    command.__doc__ = regex.sub(r"(?m)^ *```.*\n", "", command.__doc__)
    command.cli_wrapper(docopt(command.__doc__, argv=command_args))