The GDAPS library allows Django to make real "pluggable" apps.
A standard Django "app" is reusable (if done correctly), but is not pluggable, like being distributed and "plugged" into a Django main application without modifications. GDAPS is filling this gap.
The reason you want to use GDAPS is: you want to create an application that should be extended via plugins. GDAPS consists of a few bells and twistles where Django lacks "automagic":
- Apps are automatically found using setuptools' entry points
- Apps can provide their own URLs (they are included and merged into urlpatterns automatically)
- Apps can define
Interfaces, that other GDAPS apps then can implement - Apps can provide template hooks that can be filled with plugins' content
Limitations
- GDAPS interfaces cannot inherit classes that import models (like
PermissionRequiredMixin), as the declaration is too early in the Django setup process, and apps aren't loaded at that time.
Contribute
You can support me in various ways.
- Test the code and write bug reports.
- Write code
- Suggest ideas (as bug report)
Credits
I was majorly influenced by other plugin systems when writing this code, big thanks to them:
- Marty Alchin's Simple plugin framework
- The PyUtilib library
- The Pretix ecosystem
- Yapsy
- Django-Rest-Framework
- Graphene-Django
License
GDAPS is licensed under the BSD License, see License.
Metadata
Release files for gdaps 0.23.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| gdaps-0.23.0.tar.gz | 124.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gdaps-0.23.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 236.2 kB
Release files / gdaps-0.23.0.tar.gz
| Download URL | gdaps-0.23.0.tar.gz |
|---|---|
| Size | 124.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5e27b16f115c322f961466ed9c054bcb1595c300b11e84bd79423de42b692af2
|
|
BLAKE2b-256 checksum How to use checksums |
f59a12c5ad85e8d3eb53ab8a382bf279ffc3487fd39ebf3772ad92e029d139f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / gdaps-0.23.0-py3-none-any.whl
| Download URL | gdaps-0.23.0-py3-none-any.whl |
|---|---|
| Size | 112.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e5051a69af72bb4b93e0bb49b36dc29ca082cc208ddc03d46b20552c909597d5
|
|
BLAKE2b-256 checksum How to use checksums |
2cf496c178a600d7e0cce77ec028447598d0289c5d8cdf112a52e4139e954790
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for gdaps 0.23.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.