pymetacode.cli module

Command-line interface (CLI) module of the pymetacode package.

While the actual code creating code is contained in the pymetacode.coding module, for most day-to-day business, programmers need a simple interface they can use without need to write code that writes code. Therefore, a key concept of the pymetacode package is an intuitive command-line interface (CLI) that gets used from within a terminal - the natural habitat of most programmers.

General usage

The package provides a command pymeta (by means of a console-script entry point) available from the command line given the pymetacode package is installed. This command comes with built-in help and follows a rather simple scheme:

pymeta <command> <option1> ...

The number of options available and required depends on the type of command used. The design goal is an intuitive and robust user interface with feedback and help built-in and a “grammar” that feels natural. For more details, see the “Examples” section of the pymetacode.cli.Cli class documentation.

A bit of background

The first (and necessary) step for using the CLI is to create a configuration file, typically by issuing the following command on the terminal:

pymeta write config to mypackage_config.yaml

After having changed all values within this configuration file according to the specific needs, one can continue to create a package, or alternatively, if the package should exist already, move the configuration file to the root directory of this existing package and rename it to .package_config.yaml (note the leading “.”). This is the (only) way the CLI has access to necessary information, such as the package name, and this is as well the reason why each of the commands for adding modules, classes, and functions need to be issued from the root directory of your package.

Module documentation

class pymetacode.cli.Cli

Bases: object

The actual command-line interface (CLI) of the pymetacode package.

More description comes here…

command

The actual command to be executed.

In case of using the CLI from the terminal, the first argument.

Type

str

options

A list of options for the command.

In case of using the CLI from the terminal, all arguments from the second argument on.

Type

list

conf_file

The name the config file gets written to using the write command.

Default: “package_config.yaml”

Type

str

Examples

The following examples demonstrate how to use the CLI from the terminal, rather than how to use this class programmatically.

The first step when creating a new package is to write a config file that can be filled with sensible content afterwards:

pymeta write config to mypackage_config.yaml

This would write the default configuration to “mypackage_config.yaml”. Change all values in this file according to your needs. Afterwards, you can create the basic structure of your new project:

pymeta create package from mypackage_config.yaml

Now, you have a complete package that is installable and deployable. Next is to add some modules to your newly created package. All following commands need to be issued from within the root directory of your new package.

pymeta add module mymodule

will add a module “mymodule” to your package, together with a “test_mymodule” module in the “tests” subdirectory. And even better, the API documentation will be updated as well for you.

Time to add a class to your new module:

pymeta add class MyClass to mymodule

Here, again, the class will be added to “mymodule” and a test class added to “test_mymodule”. Similarly, you can add a function:

pymeta add function my_function to mymodule

Again, function and test class will be added to your package.

And if you are in doubt how to use the pymeta command, we’ve got you covered:

pymeta
pymeta help

are two equivalent commands that display some general help. Furthermore, you can get help for particular commands, too:

pymeta help create

would provide you with help specifically for the “create” command. Furthermore, if you make a mistake, usually, the context-specific help will be displayed for you as well.

call(command='', options=None)

Execute a given command with the given options (if any).

Parameters
  • command (str) –

    The actual command to be executed.

    In case of using the CLI from the terminal, the first argument.

  • options (list) –

    A list of options for the command.

    In case of using the CLI from the terminal, all arguments from the second argument on.

pymetacode.cli.cli()

Console entry point for the command-line interface.

The actual handling of the commands is entirely done within the pymetacode.cli.Cli class, but this function serves as entry point for the console script, providing the pymeta command on the command line.