Metadata-Version: 2.4
Name: votinvv-datapulse
Version: 0.0.5
Summary: DataPulse SDK — decorators and runtime context for spec authors
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/votinvv/datapulse
Project-URL: Repository, https://github.com/votinvv/datapulse
Project-URL: Issues, https://github.com/votinvv/datapulse/issues
Keywords: data-engineering,pipelines,scd2,postgresql,etl
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
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
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: psycopg[binary]>=3.2
Requires-Dist: oracledb>=3.0
Dynamic: license-file

# DataPulse SDK

The developer-facing library of [DataPulse](https://github.com/votinvv/datapulse) —
declarative data pipelines over PostgreSQL with SCD2 versioning, parallel
builds and a full audit trail.

Spec authors install this package for IDE autocompletion and local runs:

```
pip install votinvv-datapulse
```

The distribution is named `votinvv-datapulse`; the import package is `datapulse`:

```python
from datapulse import build_spec, attr, mode, warehouse
from datapulse.types import bigint, text, timestamptz


@build_spec(
    dataset="raw.customer",
    num=1,
    descr="Customers",
    attrs=[
        attr("customer_id", bigint, descr="Customer id", is_primary_key=True),
        attr("full_name", text, descr="Full name"),
    ],
    modes=[mode("initial", "init", True), mode("increment", "incr", True)],
)
def build(param):
    with warehouse() as db:
        db.execute("insert into raw.customer_1_$ (...) select ...")
```

Installing the SDK brings the source drivers along (psycopg for PostgreSQL,
oracledb for Oracle), so a clean machine can execute mappings locally (e.g.
via `datapulse.dev.run_local`) right away. The drivers import lazily —
`import datapulse` stays instant until a connection opens.

The server side — engine, HTTP API and UI — ships as the
[`votinvv/datapulse`](https://hub.docker.com/r/votinvv/datapulse) Docker
image; see the [project README](https://github.com/votinvv/datapulse) for the
full picture.

## License

[Apache-2.0](https://github.com/votinvv/datapulse/blob/main/LICENSE)
