Skip to main content

Composable Configuration Flow

Project description

ccflow logo, 'ccflow' with letters in color

Build Status GitHub issues PyPI Version License

ccflow 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, and users are expected to implement their own configuration and workflow building blocks by implementing pydantic models.

It also integrates closely with hydra 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 by Suneeta Mall (@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

Installation

ccflow can be installed via pip or conda, the two primary package managers for the Python ecosystem.

To install ccflow via pip, run this command in your terminal:

pip install ccflow

To install ccflow via conda, run this command in your terminal:

conda install ccflow -c conda-forge

Community

  • Contribute to ccflow and help improve the project

License

This software is licensed under the Apache 2.0 license. See the LICENSE file for details.

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

ccflow-0.3.0.tar.gz (149.7 kB view details)

Uploaded Source

Built Distribution

ccflow-0.3.0-py3-none-any.whl (178.5 kB view details)

Uploaded Python 3

File details

Details for the file ccflow-0.3.0.tar.gz.

File metadata

  • Download URL: ccflow-0.3.0.tar.gz
  • Upload date:
  • Size: 149.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for ccflow-0.3.0.tar.gz
Algorithm Hash digest
SHA256 9f2ad3b0c0dfc1913c10f611c1c224fa6e36ebb61cfa75f6c65c3c98cedf91c0
MD5 a507bc22757a7b0dec9d6e69315ec272
BLAKE2b-256 603040e3a17fe72021b76dd451b0f1d0e0044a6cb0ab6d3f4760dbec264ea5cb

See more details on using hashes here.

File details

Details for the file ccflow-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: ccflow-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 178.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for ccflow-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 85ab7bd2151f07587dd0b57cd872241490cea8ccb9bdc4965399c68719b4d576
MD5 90d4dca5d44a5a36663f6b76a473b13c
BLAKE2b-256 a81655171d94cf88c22702de124ffd9e5641c92d46857597cf02243eda20a940

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