Metadata-Version: 2.4
Name: tinyfan
Version: 0.3.0
Summary: Tiny Argo Workflows python devkit
Project-URL: Documentation, https://github.com/eunchuldev/tinyfan#readme
Project-URL: Issues, https://github.com/eunchuldev/tinyfan/issues
Project-URL: Source, https://github.com/eunchuldev/tinyfan
Author-email: eunchuldev <eunchulsong@gmail.com>
Keywords: argo-workflow,pipeline,tinyfan,workflow
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: croniter>=6
Requires-Dist: pyyaml>=6.0.3
Requires-Dist: typer-slim>=0.24.0
Provides-Extra: all
Requires-Dist: google-cloud-bigquery[pandas]; extra == 'all'
Requires-Dist: google-cloud-storage; extra == 'all'
Requires-Dist: networkx; extra == 'all'
Requires-Dist: pandas; extra == 'all'
Requires-Dist: pyarrow; extra == 'all'
Provides-Extra: bigquery
Requires-Dist: google-cloud-bigquery[pandas]; extra == 'bigquery'
Requires-Dist: pandas; extra == 'bigquery'
Requires-Dist: pyarrow; extra == 'bigquery'
Provides-Extra: dev
Requires-Dist: google-cloud-bigquery[pandas]; extra == 'dev'
Requires-Dist: google-cloud-storage; extra == 'dev'
Requires-Dist: jsonpatch>=1; extra == 'dev'
Requires-Dist: jsonschema[format]; extra == 'dev'
Requires-Dist: mypy>=1.14; extra == 'dev'
Requires-Dist: networkx; extra == 'dev'
Requires-Dist: pandas; extra == 'dev'
Requires-Dist: pyarrow; extra == 'dev'
Requires-Dist: pytest>=8.3.3; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Requires-Dist: types-croniter; extra == 'dev'
Requires-Dist: types-jsonschema; extra == 'dev'
Requires-Dist: types-networkx; extra == 'dev'
Requires-Dist: types-pyyaml; extra == 'dev'
Provides-Extra: gcs
Requires-Dist: google-cloud-storage; extra == 'gcs'
Provides-Extra: pandas
Requires-Dist: pandas; extra == 'pandas'
Requires-Dist: pyarrow; extra == 'pandas'
Provides-Extra: viz
Requires-Dist: networkx; extra == 'viz'
Description-Content-Type: text/markdown

# Tinyfan

Tinyfan: Minimalist Data Pipeline Kit - Generate Argo Workflows with Python

# Features

* Generate Argo Workflows manifests from Python data pipeline definitions.
* Ease of Use and highly extendable
* Intuitive data model abstraction: let Argo handle orchestration—we focus on the data.
* Argo Workflows is notably lightweight and powerful – and so are we!
* Enhanced DevOps Experience: easly testable, Cloud Native and GitOps-ready.

# Our Goal

* **Minimize mental overhead** when building data pipelines.

# Not Our Goal

* **Full-featured orchestration framework:** We don't aim to be a battery-powered, comprehensive data pipeline orchestration solution.  
  No databases, web servers, or controllers—just a data pipeline compiler. Let's Algo Workflows handle all the complexity.

# Installation

```
# Requires Python 3.10+
pipx install tinyfan
```

# Tiny Example

```python
# main.py

# Asset definitions

from tinyfan import asset

@asset(schedule="*/3 * * * *")
def world() -> str:
    return "world"

@asset()
def greeting(world: str):
    print("hello " + world)
```

```shell
# Apply the changes to argo workflow

tinyfan main.py | kubectl apply -f -
```

# Real World Example (still tiny though!)

Comming soon



# License

This project is licensed under the MIT License.
