Skip to main content

Lightweight Declarative Data Framework

Project description

DeFlow

test pypi version python support version size gh license code style: black

A Lightweight Declarative Data Framework that allow you to run data pipelines by YAML config template.

[!NOTE] I want to use this project is the real-world use-case for my Workflow package that able to handle production data pipeline with the DataOps strategy.

[!WARNING] This framework does not allow you to custom your pipeline yet. If you want to create your workflow, you can implement it by your custom template reference this package.

In my opinion, I think it should not create duplicate workflow codes if I can write with dynamic input parameters on the one template workflow that just change the input parameters per use-case instead. This way I can handle a lot of logical workflows in our orgs with only metadata configuration. It called Metadata Driven Data Workflow.

📦 Installation

pip install -U deflow

:dart: Usage

Version 1

[!NOTE] This project will create the data framework Version 1 first.

After initialize your data framework project with Version 1, your data pipeline config files will store with this file structure:

conf/
 ├─ conn/
 │   ├─ c_conn_01.yml
 │   ╰─ c_conn_02.yml
 ├─ routes/
 │   ╰─ routing.yml
 ├─ stream/
 │   ╰─ s_stream_01/
 │       ├─ g_group_01.tier.priority/
 │       │   ├─ p_proces_01.yml
 │       │   ╰─ p_proces_02.yml
 │       ├─ g_group_02.tier.priority/
 │       │   ├─ p_proces_01.yml
 │       │   ╰─ p_proces_02.yml
 │       ╰─ config.yml
 ╰─ .configore

You can run the data flow by:

from deflow.flow import Flow
from ddeutil.workflow import Result

flow: Result = (
    Flow(name="s_stream_01")
    .option("conf_paths", ["./data/conf"])
    .run(mode="N")
)

Version 2

After initialize your data framework project with Version 2, your data pipeline config files will store with this file structure:

conf/
 ├─ pipeline/
 │   ╰─ p_pipe_01/
 │       ├─ config.yml
 │       ├─ n_node_01.yml
 │       ╰─ n_node_02.yml
 ╰─ .configore

Version 3

[!NOTE] This version is the same DAG and Task strategy like Airflow.

:cookie: Configuration

Name Component Default Description
DEFLOW_CORE_CONF_PATH CORE ./conf A config path to get data framework configuration.
DEFLOW_CORE_VERSION CORE v1 A specific data framework version.
DEFLOW_CORE_REGISTRY_CALLER CORE . A registry of caller function.

Support data framework version:

Version Supported Description
1 Progress A data framework that base on stream, group, process, and routing.
2 Progress A data framework that base on pipeline, and node.
3 Draft A data framework that base on dag, and task.

💬 Contribute

I do not think this project will go around the world because it has specific propose, and you can create by your coding without this project dependency for long term solution. So, on this time, you can open the GitHub issue on this project 🙌 for fix bug or request new feature if you want it.

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

deflow-0.0.5.tar.gz (33.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deflow-0.0.5-py3-none-any.whl (27.2 kB view details)

Uploaded Python 3

File details

Details for the file deflow-0.0.5.tar.gz.

File metadata

  • Download URL: deflow-0.0.5.tar.gz
  • Upload date:
  • Size: 33.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for deflow-0.0.5.tar.gz
Algorithm Hash digest
SHA256 335118a7722b58fba58f949ce12eb4eb3adf00f50e2423f28aa95f5f647fd6bc
MD5 a2e802661d766be37a6cde17b3a69192
BLAKE2b-256 991781cf4e35334acd6d3eb2183fb3d7f23a45f87aedd84fc5be11919a92101e

See more details on using hashes here.

Provenance

The following attestation bundles were made for deflow-0.0.5.tar.gz:

Publisher: publish.yml on ddeutils/deflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deflow-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: deflow-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 27.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for deflow-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 2dd50777fda9bd3df70fb9fb088059bb30098fcadce33eeef3305a68a915a555
MD5 a1f5ae58c69ec29126cc203c46763706
BLAKE2b-256 ffe26a82f4b7688f63ea826dac9383e78501392e6edd93e15f6b8c77ca9178c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for deflow-0.0.5-py3-none-any.whl:

Publisher: publish.yml on ddeutils/deflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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