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
| Extra | Adds | Use it for |
|---|---|---|
| (core) | erasure engine, anonymization, hash-chained audit, Certificate of Erasure | Any Python app |
django | model-backed audit store, erase_instance(), the @pii(...) decorator | Django projects |
sqlalchemy | SQLAlchemy audit store + erase_instance() against a Session | FastAPI / Flask / any SQLAlchemy app |
crypto | RS256 sign/verify, crypto-shred sealing + the dpdpstack CLI | Signed 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-sdkwraps 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-Keyheader. 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 (sha256of the entry's canonical JSON) andPOST /evidence— the same contract the PythonEvidenceClientuses.
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.