Coma

Configurable command management for humans.

Introduction

Commands (also known as sub-commands) are the commit and pull part of git commit and git pull (whereas git is the program). Commands can be seen as command-line meta-arguments: They drastically affect not only the behavior of the program, but also what additional command-line line arguments and flags are accepted.

coma goes one step further. With it, commands determine which configuration files are loaded, enabling command-specific configs that don’t affect the whole program.

Key Features

coma makes it easy to build configurable command-based programs in Python by:

  • Removing the boilerplate of argparse while retaining full argparse interoperability and customizability for complex use cases.

  • Providing a comprehensive set of hooks to easily tweak, replace, or extend coma.

  • Integrating with omegaconf’s extremely rich and powerful configuration management features.

Installation

pip install coma

Getting Started

Excited? Jump straight into the short introductory tutorial.

Why Coma?

Why choose coma over another omegaconf-based solution, like hydra? hydra, specifically, has the following limitations (all of which are features that coma supports!):

  • No commands. Related functionality must be implemented as separate programs.

  • No command-line arguments or flags. All program data must be provided through configs.

  • No parallel/independent configs. All configs must be hierarchical.

If these limitations aren’t deal-breakers for you, then, by all means, use hydra (or any other framework). hydra, in particular, certainly has a wonderfully rich feature set (including config groups, which inspired its name).