Skip to main content

stapel-gdpr

CI coverage pypi downloads python license llms.txt

GDPR compliance: staged async data export (Art. 15/20) with status polling and download, account deletion with a cancellable grace period (Art. 17), inactivity closure, retention cleanup, LegalHold (blocks closure/deletion) and ReRegistrationHash, orchestrated through an in-process GDPRProvider registry (stapel_core.gdpr.gdpr_registry) plus comm confirmation (gdpr.section.erased) for remote services.

Part of the Stapel framework — composable Django apps that deploy as a monolith or as microservices without changing module code.

Install

pip install stapel-gdpr

At a glance

Fact Value
Version 0.4.2
Python >=3.11 (3.11, 3.12, 3.13, 3.14)
HTTP operations 7
Config axes 1
Usage surface 14
Extension points 3
Error codes 51
Fleet dependencies stapel-core

Documentation

capabilities.json · llms.txt (for agents)

Quick start

# settings.py
INSTALLED_APPS = [
    ...
    'stapel_gdpr',
]

MIDDLEWARE = [
    ...
    # After authentication: refuses every request of an account being erased,
    # whatever a still-valid token claims.
    'stapel_gdpr.guards.AccountClosureGuardMiddleware',
]

STAPEL_GDPR = {
    # Every store holding personal data. Erasure is only ever reported
    # complete when each of these returned a deletion receipt, so an owner
    # missing here is a store that quietly keeps the data. `manage.py check`
    # fails while this is empty.
    'DATA_OWNERS': ['auth', 'profiles', {'name': 'cdn', 'kind': 'remote'}],
    'DATA_OWNERS_VERSION': '2026-08-13.1',
    # How the user's sessions are revoked at closure. Auto-detected when
    # stapel-auth is installed; without any seam, closure is refused rather
    # than performed with live tokens left behind.
    'SESSION_REVOKER': 'stapel_auth.sessions.services.SessionService.revoke_all',
}

Run manage.py check after wiring: a missing or stale data-owner inventory, hash rows written outside store_hashes, and every open escape hatch are reported there rather than discovered in an audit.

Bus events

Emits

| user.deleted | schema | All user PII permanently deleted after grace period. Every package storing user | | user.deletion_initiated | schema | Account closure started. 30-day grace period begins; account is deactivated. | | user.export_ready | schema | Data export archive is ready for download. | | user.sessions_revoked | schema | Closure revoked every session and access JTI of the user. |

License

MIT — see LICENSE.


This page is assembled by stapel-readme from docs/readme.md plus the contract artifacts in docs/. Edit the prose in docs/readme.md; the badges, facts and links above and below it are generated — do not hand-edit README.md.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stapel_gdpr-0.4.2.tar.gz (88.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stapel_gdpr-0.4.2-py3-none-any.whl (75.3 kB view details)

Uploaded Python 3

File details

Details for the file stapel_gdpr-0.4.2.tar.gz.

File metadata

  • Download URL: stapel_gdpr-0.4.2.tar.gz
  • Upload date:
  • Size: 88.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for stapel_gdpr-0.4.2.tar.gz
Algorithm Hash digest
SHA256 2549770a6eb334010d016b8704598212b5ec606ed13f27113ff0d7c53783d5b3
MD5 2c55edd4272e6a248567e533332b1f89
BLAKE2b-256 6e15555af6740636c4c70e50566ceaeba27ad36d39743787bcb2bc2ef217a1b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for stapel_gdpr-0.4.2.tar.gz:

Publisher: publish.yml on usestapel/stapel-gdpr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stapel_gdpr-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: stapel_gdpr-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 75.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for stapel_gdpr-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 482efad091aa0c6b00539d27d6813c23773eb2999ee704c6f547a35dda0dfb01
MD5 0ff7eb59f483ab990161c5ae48cfdca5
BLAKE2b-256 d44834a46cdf66933bdaa5285cc5778beb227f69dd37e2a2132b5b76da6832b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for stapel_gdpr-0.4.2-py3-none-any.whl:

Publisher: publish.yml on usestapel/stapel-gdpr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 files

0.4.1

2 files

0.4.0

2 files

0.3.13

2 files

0.3.12

2 files

0.3.11

2 files

0.3.10

2 files

0.3.9

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page