Metadata-Version: 2.4
Name: noetl
Version: 2.8.2
Summary: A framework to build and run data pipelines and workflows.
Author-email: Kadyapam <182583029+kadyapam@users.noreply.github.com>
License-Expression: MIT
Project-URL: Homepage, https://noetl.io
Project-URL: Repository, https://github.com/noetl/noetl
Project-URL: Issues, https://github.com/noetl/noetl/issues
Keywords: etl,ml,ops,cleansing,data,pipeline,workflow,automation
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: fastapi>=0.115.6
Requires-Dist: starlette>=0.49.1
Requires-Dist: pydantic>=2.11.4
Requires-Dist: aiofiles==24.1.0
Requires-Dist: psycopg[binary,pool]>=3.2.7
Requires-Dist: connectorx>=0.4.3
Requires-Dist: greenlet>=3.2.1
Requires-Dist: uvicorn>=0.34.0
Requires-Dist: requests>=2.32.3
Requires-Dist: httpx>=0.28.1
Requires-Dist: google-auth>=2.27.0
Requires-Dist: google-cloud-storage>=2.18.0
Requires-Dist: python-multipart==0.0.20
Requires-Dist: PyYAML>=6.0.1
Requires-Dist: Jinja2>=3.1.6
Requires-Dist: pycryptodome>=3.21
Requires-Dist: cryptography>=44.0.0
Requires-Dist: PyJWT>=2.8.0
Requires-Dist: urllib3>=2.3
Requires-Dist: Authlib>=1.6.5
Requires-Dist: click<8.2.1,>=8.1.0
Requires-Dist: psutil>=7.0.0
Requires-Dist: memray>=1.17.2
Requires-Dist: deepdiff>=8.6.1
Requires-Dist: lark>=1.2.2
Requires-Dist: duckdb>=1.3.0
Requires-Dist: duckdb-engine>=0.17.0
Requires-Dist: snowflake-connector-python>=4.0.0
Requires-Dist: polars[pyarrow]>=1.30.0
Requires-Dist: xlsxwriter>=3.2.9
Requires-Dist: networkx>=3.5
Requires-Dist: pydot>=4.0.1
Requires-Dist: kubernetes>=30.1.0
Requires-Dist: fsspec>=2025.5.1
Requires-Dist: gcsfs>=2025.5.1
Requires-Dist: boto3>=1.38.45
Requires-Dist: azure-identity>=1.23.0
Requires-Dist: azure-keyvault-secrets>=4.8.0
Requires-Dist: ortools>=9.10
Requires-Dist: kubernetes>=31.0.0
Requires-Dist: nats-py>=2.10.0
Provides-Extra: dev
Requires-Dist: pytest>=8.1.1; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.6; extra == "dev"
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
Requires-Dist: pytest-mock>=3.14.0; extra == "dev"
Provides-Extra: publish
Requires-Dist: build>=1.2.2.post1; extra == "publish"
Requires-Dist: twine>=6.1.0; extra == "publish"
Requires-Dist: maturin<2.0,>=1.0; extra == "publish"
Provides-Extra: notebook
Requires-Dist: jupyterlab>=4.4.3; extra == "notebook"
Requires-Dist: jupysql>=0.11.1; extra == "notebook"
Requires-Dist: pandas>=2.2.3; extra == "notebook"
Requires-Dist: matplotlib>=3.10.3; extra == "notebook"
Provides-Extra: cli
Requires-Dist: noetl-cli==2.5.3; extra == "cli"
Provides-Extra: ibkr
Requires-Dist: playwright>=1.43.0; extra == "ibkr"
Dynamic: license-file

# NoETL

**NoETL** is an automation framework for orchestrating **APIs, databases, and scripts** using a declarative **Playbook DSL**.

Execution is standardized around an **MCP-style tool model**: consistent tool contracts, structured input/output, and a predictable lifecycle. From an MCP perspective, `tools` include API endpoints, database operations, and scripts/utilities **NoETL** orchestrates and optimizes them via playbooks.

With **NoETL Gateway**, playbooks can be deployed as a **distributed backend**: developers ship business logic as playbooks, and UIs/clients call stable endpoints without deploying dedicated microservices for each workflow.

[![PyPI version](https://badge.fury.io/py/noetl.svg)](https://badge.fury.io/py/noetl)

## Documentation

**https://noetl.dev**

## Distribution channels

- **PyPI**
  - `noetl` (Python): https://pypi.org/project/noetl/
  - `noetlctl` (Rust CLI): https://pypi.org/project/noetlctl/
- **crates.io**
  - `noetl`: https://crates.io/crates/noetl
  - `noetl-gateway`: https://crates.io/crates/noetl-gateway
- **APT (Debian/Ubuntu)**
  - Repo: https://github.com/noetl/apt
- **Homebrew**
  - Tap: https://github.com/noetl/homebrew-tap

## License

MIT License — see [LICENSE](LICENSE) for details.
