Skip to main content

Merge your config files and set parameters from the command line in a simple way.

Project description

CLI Config

Build your experiment configurations for complex projects with robustness, flexibility and simplicity

CLI-Config-logo

CLI Config is a lightweight library that provides routines to merge nested configs and set parameters from command line. It contains many routines to create and manipulate the config as flatten or nested python dictionaries. It also provides processing functions that can change the whole configuration before and after each config manipulation.

The package was initially designed for machine learning experiments where the number of parameters is huge and a lot of them have to be set by the user between each experiment. If your project matches this description, this package is for you!

Release PythonVersion License

Ruff_logo Black_logo

Ruff Flake8 Pydocstyle MyPy PyLint

Tests Coverage Documentation Status

Official badge : Config

Documentation :memo:

Here you can find the documentation (built with pdoc3).

The old documentation with readthedocs (1.3.6, not up to date) is also available here.

Pypi :package:

Here you can find the Pypi page.

Installation :inbox_tray:

In a new virtual environment, simply install the package with:

pip install cliconfig

This package is OS independent and supported on Linux, macOS and Windows.

Minimal example :rocket:

See the Quick Start section of the documentation for a quick overview.

First of all, make default config yaml file(s) in your project (configs are merged from left to right). Then you can create a config object from these files in python:

# main.py
from cliconfig import make_config
config = make_config('default1.yaml', 'default2.yaml')

Now launch your script with eventually additional config file(s) and parameters by command line. The additional configs are merged on the default one's then the parameters are set.

python main.py --config first.yaml,second.yaml --param1=1 --subconfig.param2='foo'

By default, these additional configs cannot add new parameters to the default config (for security and retro-compatibility reasons).

See the Edge cases section of the documentation for some edge cases due to implementation.

Tags :label:

You can add tags @<tag_name> at the end of parameters names to activate some features. See the Quick start section of the documentation for a quick overview.

The default tags include:

  • @merge_add, @merge_before, and @merge_after: merge other yaml files indicating the path
  • @copy: copy another parameter
  • @def: safely evaluate an expression to define the parameter value (a lot of operations and functions are available)
  • @type:<my type>: try to convert and check the type
  • @select: target a sub-config and delete the sub-config in the parent config
  • @delete: delete the key from the config
  • @new: allow adding parameters that are not present in default config
  • @dict: create a dict object that is not a sub-config (see the
  • Edge cases section)

It is also easy to create your own features and possibilities are endless. The way to do it are explained in the Processing section of the documentation.

How to contribute 👷

For development, install the package dynamically and dev requirements with:

pip install -e .
pip install -r requirements-dev.txt

Everyone can contribute to CLI Config, and we value everyone’s contributions. Please see our contributing guidelines for more information 🤗

License, usage and distribution :scroll:

This program is free software under the MIT License.

It means that:

  • If you use this package as a library without modifying it, there is no obligation regarding this license.
  • If you modify the source code of this package, you must keep the original copyright in the source code and add your own. The LICENSE file must also contain the original copyright (and the original MIT license notice if not sublicensed).
  • In any case, you can use this package in open source or closed source projects and for commercial or non-commercial purposes.

Copyright © 2023 Valentin Goldité

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cliconfig-1.4.4.tar.gz (113.0 kB view details)

Uploaded Source

Built Distribution

cliconfig-1.4.4-py3-none-any.whl (40.3 kB view details)

Uploaded Python 3

File details

Details for the file cliconfig-1.4.4.tar.gz.

File metadata

  • Download URL: cliconfig-1.4.4.tar.gz
  • Upload date:
  • Size: 113.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for cliconfig-1.4.4.tar.gz
Algorithm Hash digest
SHA256 af48a029a4871652d07fa3fbe8ce26dfb66a59b0fecace5cceddae7232453e91
MD5 9239e4f1bb92c9e5ac89963bb1dfc7ed
BLAKE2b-256 f0aa6e209961949e37401381c172fe5b6a0df9fc5628a889190715a2507c3000

See more details on using hashes here.

File details

Details for the file cliconfig-1.4.4-py3-none-any.whl.

File metadata

  • Download URL: cliconfig-1.4.4-py3-none-any.whl
  • Upload date:
  • Size: 40.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for cliconfig-1.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a46a8a8c91d9905f1155bc2eb0c007de3448942ba8f47a6e1a92ca74bdd4ed7c
MD5 c26333eae221a5fc5d66434dc175ef98
BLAKE2b-256 e80a4b92c0f7c59d15a65689d9dc5a23fb1fb95e92c06b5a3233c6995c4be945

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page