Name | ccflow JSON |
Version |
0.6.1
JSON |
| download |
home_page | None |
Summary | ccflow is a collection of tools for workflow configuration, orchestration, and dependency injection |
upload_time | 2025-08-23 17:03:51 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.9 |
license | Apache-2.0 |
keywords |
configuration
dag
flow
hydra
pydantic
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
<a href="https://github.com/point72/ccflow">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/point72/ccflow/raw/main/docs/img/dark.png?raw=true">
<img alt="ccflow logo, 'ccflow' with letters in color" src="https://github.com/point72/ccflow/raw/main/docs/img/light.png?raw=true" width="400">
</picture>
</a>
<br/>
<br/>
[](https://github.com/Point72/ccflow/actions/workflows/build.yaml)
[](https://codecov.io/gh/Point72/ccflow)
[](https://github.com/point72/ccflow/issues)
[](https://github.com/Point72/ccflow)
[](https://pypi.python.org/pypi/ccflow)
`ccflow` (Composable Configuration Flow) is a collection of tools for workflow configuration, orchestration, and dependency injection.
It is intended to be flexible enough to handle diverse use cases, including data retrieval, validation, transformation, and loading (i.e. ETL workflows), model training, microservice configuration, and automated report generation.
The framework provides:
- a way to manage hierarchical, strongly typed configurations and the relationships between them through composition
- a way to associate user-defined functions with configurations, and in doing so, to define and name configurable workflow graphs
- a way to manage dependency injection and inversion of control for objects in these graphs
- flexibility in how to interact with configurations and workflows, including files/command line, native python/Jupyter notebook, Airflow/job scheduler, REST API, etc (in progress)
It heavily leverages [pydantic](https://docs.pydantic.dev/latest/), and users are expected to implement their own configuration and workflow building blocks by implementing pydantic models.
It also integrates closely with [hydra](https://hydra.cc/) for file-based configuration and command line interaction, but can also be used natively from Python without it.
This library was partially inspired by this [blog post](https://towardsdatascience.com/configuration-management-for-model-training-experiments-using-pydantic-and-hydra-d14a6ae84c13) by Suneeta Mall ([@suneeta-mall](https://github.com/suneeta-mall)).
We have taken these ideas a step further by introducing the concept of the `ModelRegistry`, which allows for the configs to be managed without `hydra`, and also allows us to implement dependency injection.
We aim to provide additional (and optional) tools for workflow orchestration on top of the configuration framework.
[More information is available in our wiki](https://github.com/Point72/ccflow/wiki)
## Installation
`ccflow` can be installed via [pip](https://pip.pypa.io) or [conda](https://docs.conda.io/en/latest/), the two primary package managers for the Python ecosystem.
To install `ccflow` via **pip**, run this command in your terminal:
```bash
pip install ccflow
```
To install `ccflow` via **conda**, run this command in your terminal:
```bash
conda install ccflow -c conda-forge
```
## Community
- [Contribute](https://github.com/Point72/ccflow/wiki/Contribute) to `ccflow` and help improve the project
## License
This software is licensed under the Apache 2.0 license. See the [LICENSE](https://github.com/Point72/ccflow/blob/main/LICENSE) file for details.
Raw data
{
"_id": null,
"home_page": null,
"name": "ccflow",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "configuration, dag, flow, hydra, pydantic",
"author": null,
"author_email": "\"Point72, L.P.\" <OpenSource@point72.com>",
"download_url": "https://files.pythonhosted.org/packages/8d/13/11127bf8f8c35cb052cc4d6f1c76254b49267827ec6e4e0e41667b99d158/ccflow-0.6.1.tar.gz",
"platform": null,
"description": "<a href=\"https://github.com/point72/ccflow\">\n <picture>\n <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://github.com/point72/ccflow/raw/main/docs/img/dark.png?raw=true\">\n <img alt=\"ccflow logo, 'ccflow' with letters in color\" src=\"https://github.com/point72/ccflow/raw/main/docs/img/light.png?raw=true\" width=\"400\">\n </picture>\n</a>\n\n<br/>\n<br/>\n\n[](https://github.com/Point72/ccflow/actions/workflows/build.yaml)\n[](https://codecov.io/gh/Point72/ccflow)\n[](https://github.com/point72/ccflow/issues)\n[](https://github.com/Point72/ccflow)\n[](https://pypi.python.org/pypi/ccflow)\n\n`ccflow` (Composable Configuration Flow) is a collection of tools for workflow configuration, orchestration, and dependency injection.\nIt is intended to be flexible enough to handle diverse use cases, including data retrieval, validation, transformation, and loading (i.e. ETL workflows), model training, microservice configuration, and automated report generation.\n\nThe framework provides:\n\n- a way to manage hierarchical, strongly typed configurations and the relationships between them through composition\n- a way to associate user-defined functions with configurations, and in doing so, to define and name configurable workflow graphs\n- a way to manage dependency injection and inversion of control for objects in these graphs\n- flexibility in how to interact with configurations and workflows, including files/command line, native python/Jupyter notebook, Airflow/job scheduler, REST API, etc (in progress)\n\nIt heavily leverages [pydantic](https://docs.pydantic.dev/latest/), and users are expected to implement their own configuration and workflow building blocks by implementing pydantic models.\n\nIt also integrates closely with [hydra](https://hydra.cc/) for file-based configuration and command line interaction, but can also be used natively from Python without it.\n\nThis library was partially inspired by this [blog post](https://towardsdatascience.com/configuration-management-for-model-training-experiments-using-pydantic-and-hydra-d14a6ae84c13) by Suneeta Mall ([@suneeta-mall](https://github.com/suneeta-mall)).\nWe have taken these ideas a step further by introducing the concept of the `ModelRegistry`, which allows for the configs to be managed without `hydra`, and also allows us to implement dependency injection.\n\nWe aim to provide additional (and optional) tools for workflow orchestration on top of the configuration framework.\n\n[More information is available in our wiki](https://github.com/Point72/ccflow/wiki)\n\n## Installation\n\n`ccflow` can be installed via [pip](https://pip.pypa.io) or [conda](https://docs.conda.io/en/latest/), the two primary package managers for the Python ecosystem.\n\nTo install `ccflow` via **pip**, run this command in your terminal:\n\n```bash\npip install ccflow\n```\n\nTo install `ccflow` via **conda**, run this command in your terminal:\n\n```bash\nconda install ccflow -c conda-forge\n```\n\n## Community\n\n- [Contribute](https://github.com/Point72/ccflow/wiki/Contribute) to `ccflow` and help improve the project\n\n## License\n\nThis software is licensed under the Apache 2.0 license. See the [LICENSE](https://github.com/Point72/ccflow/blob/main/LICENSE) file for details.\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "ccflow is a collection of tools for workflow configuration, orchestration, and dependency injection",
"version": "0.6.1",
"project_urls": {
"Homepage": "https://github.com/Point72/ccflow",
"Repository": "https://github.com/Point72/ccflow"
},
"split_keywords": [
"configuration",
" dag",
" flow",
" hydra",
" pydantic"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "60e7c9d38a39c44da8ccaccfe4e9023f800e0070db6835a756d40c1bda6104c1",
"md5": "211bd680953b807687e5f4a08f41c3b2",
"sha256": "83da8dc1d68bdb0679c69b697c667d7b53517b14be4c61980a6d858f8cc329d3"
},
"downloads": -1,
"filename": "ccflow-0.6.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "211bd680953b807687e5f4a08f41c3b2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 217835,
"upload_time": "2025-08-23T17:03:50",
"upload_time_iso_8601": "2025-08-23T17:03:50.305883Z",
"url": "https://files.pythonhosted.org/packages/60/e7/c9d38a39c44da8ccaccfe4e9023f800e0070db6835a756d40c1bda6104c1/ccflow-0.6.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8d1311127bf8f8c35cb052cc4d6f1c76254b49267827ec6e4e0e41667b99d158",
"md5": "0bfa398ba14d0c1be860106cfff1d80e",
"sha256": "5434f45c9e584cc2363e1b5cc035086e9d5d36e3f85e98108e262c5cdc1d44fc"
},
"downloads": -1,
"filename": "ccflow-0.6.1.tar.gz",
"has_sig": false,
"md5_digest": "0bfa398ba14d0c1be860106cfff1d80e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 172690,
"upload_time": "2025-08-23T17:03:51",
"upload_time_iso_8601": "2025-08-23T17:03:51.748525Z",
"url": "https://files.pythonhosted.org/packages/8d/13/11127bf8f8c35cb052cc4d6f1c76254b49267827ec6e4e0e41667b99d158/ccflow-0.6.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-23 17:03:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Point72",
"github_project": "ccflow",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "ccflow"
}