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.1
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.1.tar.gz (88.8 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.1-py3-none-any.whl (75.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: stapel_gdpr-0.4.1.tar.gz
  • Upload date:
  • Size: 88.8 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.1.tar.gz
Algorithm Hash digest
SHA256 b3c0e4e63e82156956db52c1548f5c77f20f3a92a6ba609fdd4fce61e503b1c2
MD5 d519c70f432317bfd2478233d7da063b
BLAKE2b-256 8ce313fb5394d08a8460ca4d43158bd0b95e13962aa8b5a91d7578ed6e4272bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for stapel_gdpr-0.4.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: stapel_gdpr-0.4.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 607395fd56683a6861e23d2eade2ff126878d58a7bc057af4cb82d0491fefa8b
MD5 11d763ab9218ac59a2f65658b54234de
BLAKE2b-256 2c0c88014f87d324e082bacfc58c46209a39a105b8f6fa6d633b3efdd7e90ea2

See more details on using hashes here.

Provenance

The following attestation bundles were made for stapel_gdpr-0.4.1-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

0.4.2

2 files

This release

0.4.1 This release

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