Metadata-Version: 2.4
Name: xlt-core
Version: 0.0.1
Summary: A lightweight Extract-Load tool for building simple, reliable batch data transfer pipelines
Project-URL: Homepage, https://github.com/yourusername/xlt
Project-URL: Documentation, https://github.com/yourusername/xlt#readme
Project-URL: Repository, https://github.com/yourusername/xlt
Project-URL: Issues, https://github.com/yourusername/xlt/issues
Author: XLT Contributors
License: MIT
Keywords: data,elt,etl,extract,load,pipeline,yaml
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: typer>=0.12.0
Provides-Extra: all
Requires-Dist: xlt[postgres]; extra == 'all'
Provides-Extra: dev
Requires-Dist: mypy>=1.8.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.3.0; extra == 'dev'
Provides-Extra: postgres
Requires-Dist: psycopg[binary]>=3.1.0; extra == 'postgres'
Description-Content-Type: text/markdown

# XLT — The YAML-first Data Move Tool
*Pronounced: ex-ell-tee*

> **XLT is a lightweight Extract–Load tool for building simple, reliable batch data movement pipelines.**  
> Write a single YAML file that defines an extract and a load step, and run it anywhere with a clean, fast CLI.

XLT gives data engineers a predictable, extensible, Git-native way to move data between databases, APIs, files, and cloud warehouses — without operating a control plane or writing yet another custom Python script.

---

## 🚀 Features

- **YAML-first pipelines** — define your extract and load declaratively  
- **CLI-first design** — run pipelines from the command line or any orchestrator  
- **Extensible** — create custom extractors/loaders with minimal Python  
- **Portable** — works anywhere Python runs (local, cron, Airflow, Prefect, GitHub Actions, on-prem)  
- **Incremental loads** — simple watermark & key-based incremental patterns  
- **Load strategies** — append, truncate-insert, merge (planned)  
- **Zero platform overhead** — no UI, no scheduler, no metadata DB  
- **Engineer-friendly** — CLI-first, Git-native, orchestration-agnostic  

If you’ve ever written a one-off Python script to copy data from A to B, XLT replaces that with a clean YAML pipeline and a battle-tested execution engine.

---

## Design Philosophy

XLT aims to occupy the gap between:

“I’ll write another custom Python script…”
and
“Let’s deploy Airbyte / a managed ELT platform.”

Principles:

- Simplicity over magic
- Declarative over imperative
- Small surface area
- No servers
- Do one thing well: move data

If dbt is the “data build tool”, XLT is the data move tool.

## 📦 Installation

```bash
pip install xlt
```

## 🤝 Contributing

XLT is designed to be open, simple, and community-friendly.

Ways to contribute:

- Create a new adapter (database, file, API, cloud service)
- Improve docs and examples
- Add validator rules for YAML schema
- Build testing fixtures
- Submit ideas for features

PRs are welcome!

## 📄 License

MIT License.