Metadata-Version: 2.1
Name: kloch
Version: 0.13.1
Summary: Environment Manager CLI wrapping package managers calls as serialized config file
License: LICENSE.txt
Keywords: environment,kloch,packaging,managing
Author: Liam Collod
Author-email: monsieurlixm@gmail.com
Requires-Python: >=3.7
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Provides-Extra: dev
Provides-Extra: doc
Provides-Extra: tests
Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
Requires-Dist: Sphinx (>=7.3.7,<8.0.0) ; (python_version >= "3.9") and (extra == "doc")
Requires-Dist: black (>=24.4.2,<25.0.0) ; (python_version >= "3.9") and (extra == "dev")
Requires-Dist: furo (>=2024.4.27,<2025.0.0) ; (python_version >= "3.9") and (extra == "doc")
Requires-Dist: myst_parser (>=3,<4) ; (python_version >= "3.9" and python_version < "3.13") and (extra == "doc")
Requires-Dist: pytest (==7.3.2) ; (python_version >= "3.7") and (extra == "tests")
Requires-Dist: sphinx-autobuild (==2024.2.4) ; (python_version >= "3.9") and (extra == "doc")
Requires-Dist: sphinx-copybutton (==0.5) ; (python_version >= "3.9") and (extra == "doc")
Requires-Dist: sphinx-exec-code (==0.12) ; (python_version >= "3.9") and (extra == "doc")
Requires-Dist: typing-extensions (<4.8) ; extra == "tests"
Project-URL: Documentation, https://knotsanimation.github.io/kloch/
Project-URL: github, https://github.com/knotsanimation/kloch
Project-URL: homepage, https://github.com/knotsanimation/kloch
Project-URL: issues, https://github.com/knotsanimation/kloch/issues
Project-URL: releasenotes, https://knotsanimation.github.io/kloch/changelog.html
Description-Content-Type: text/markdown

# kloch

[![documentation badge](https://img.shields.io/badge/documentation-blue?style=flat&logo=readthedocs&logoColor=white)](https://knotsanimation.github.io/kloch/)
![Made with Python](https://img.shields.io/badge/Python->=3.7-blue?logo=python&logoColor=white)


> [!WARNING]
> Despite being public, this repository is still in development stage and
> have not been tested extensively yet.

![banner with logo and logotype](./doc/source/_static/banner.svg)

``kloch`` _/klˈoʃ/_ is a configuration system for launching software. 
Configurations are yaml files referred as "environment profile" which specify
the parameters for one or multiple pre-defined _launchers_.

_Launchers_ are internally defined python objects that specify how to execute
a combinations of options and (optional) command.

In a very abstract way, `kloch` is a system that:
- serialize the arguments passed to a pre-defined function as yaml files.
- execute that function by unserializing the parameters provided at runtime.

`kloch` was initially designed as the environment manager layer when used with
the [rez](https://rez.readthedocs.io) package manager.

## features

- offer a CLI and a public python API
- custom config format for environment profiles:
  - inheritance
  - inheritance merging rules with token system
- arbitrary profile locations with flexible configuration
- plugin system for launchers

## programming distinctions

- robust logging.
- good amount of unittesting
- good documentation with a lot of doc created at code level
- python 3.7+ support (EOL was in June 2023).
- PyYAML as only mandatory external python dependency.
- flexible "meta" configuration from environment variable or config file.
- clear public and private API

## quick-start

```shell
pip install kloch
kloch --help
# or:
python -m kloch --help 
```


## documentation

Check the detailed documentation at https://knotsanimation.github.io/kloch/

