Installation

dpdpstack requires Python 3.9+. The core has zero dependencies.

pip install dpdpstack-python-sdk                # core, no dependencies
pip install "dpdpstack-python-sdk[django]"      # + Django adapter (Django >= 4.2)
pip install "dpdpstack-python-sdk[sqlalchemy]"  # + SQLAlchemy adapter (FastAPI/Flask/…)
pip install "dpdpstack-python-sdk[crypto]"      # + signed certs & crypto-shred (PyJWT + cryptography)

You can combine extras:

pip install "dpdpstack-python-sdk[django,crypto]"

What each extra adds

ExtraAddsUse it for
(core)erasure engine, anonymization, hash-chained audit, Certificate of ErasureAny Python app
djangomodel-backed audit store, erase_instance(), the @pii(...) decoratorDjango projects
sqlalchemySQLAlchemy audit store + erase_instance() against a SessionFastAPI / Flask / any SQLAlchemy app
cryptoRS256 sign/verify, crypto-shred sealing + the dpdpstack CLISigned certificates & sealed PII

Other languages

The open-source engine (the zero-egress library that runs inside your app) is Python today, because it performs the erasure in your database through your ORM. But the hosted platform is a plain HTTP API — so you can use it from any language:

  • JavaScript / TypeScript → the official dpdpstack-js-sdk wraps consent, erasure, audit, DSR/breach, and certificate verification (Node 18+ and browser).
  • Anything else (Go, Java, Ruby, …) → call the HTTP API directly with an X-API-Key header. See the full API reference (and the auto-generated Swagger / ReDoc schema). The verify endpoint is public, so any language can check a certificate. To push your own tamper-evident chain, reproduce the canonical hash (sha256 of the entry's canonical JSON) and POST /evidence — the same contract the Python EvidenceClient uses.

Verify the install

python -c "import dpdpstack; print(dpdpstack.__version__)"

With the crypto extra, the CLI is also available:

dpdpstack --help
# (python -m dpdpstack ... works too)

Next

Head to the Quickstart to run your first legal-hold-aware erasure.