hatch-angee
The one published implementation of Angee's addon machinery: the build
backend addon repos set as build-backend, and the library Angee's
composer calls in-process (manifest parsing, discovery, dependency
compilation, the generated pyproject block). An addon repo carries no
hatch_build.py, no hook tables, and no dynamic of its own — the
backend wires everything in.
# an addon repo's pyproject.toml — no Python hook code, no hook tables
[build-system]
requires = ["hatch-angee>=0.2"] # pulls hatchling transitively
build-backend = "hatch_angee.build"
[project]
name = "vendor-crm" # the addon name, PEP 503-normalized (vendor.crm)
version = "0.1.0"
# no `dynamic = [...]` — the backend declares entry-points dynamic for you
[tool.hatch.build.targets.wheel]
packages = ["vendor"] # the import package(s) to ship
On a wheel/editable build the backend discovers every addon.toml in the repo
(pruning node_modules, .venv, dist, …) and:
- generates the
angee.addonsentry points (name -> import anchor) — the runtime enumerates these overuv.lockto list available addons; - ships each addon's
web/,templates/,skills/into the wheel at the addon's import path (vendor.crm→vendor/crm/...), layout-agnostic.
Backend config lives in [tool.hatch-angee]. addon-discovery selects
project-relative roots to scan; omitting it preserves the whole-repository scan,
while an empty list disables addon discovery for a core-only wheel. extra-web
names glob roots of non-addon shared web packages (no addon.toml) to ship
verbatim. A normal addon repo configures none.
[tool.hatch-angee]
addon-discovery = ["addons", "examples/addons"]
The library face
Angee's composer imports the same package in-process during angee build:
parse_manifest(path)→ the validatedAddonManifest(addon.tomlvocabulary incl.dependencies— PEP 508 — andrequires, the core compatibility floor);discover(roots)→(addon_dir, manifest)pairs, caller root order = precedence, symlink-following with a cycle guard;compile_dependencies(manifests)/check_requires(manifests, core_version);write_block(pyproject, deps)→ the generated[dependency-groups].addonskey, comment-preserving, idempotent, atomically replaced.
The library face imports stdlib + packaging + tomlkit only — never
hatchling or Django (tests/test_layering.py enforces it).
Escape hatch: explicit hatchling hooks
The same two hooks are also registered by name, so a repo that prefers plain hatchling can wire them itself instead of using the backend:
[build-system]
requires = ["hatchling", "hatch-angee>=0.2"]
build-backend = "hatchling.build"
[project]
dynamic = ["entry-points"]
[tool.hatch.metadata.hooks.angee-addons]
[tool.hatch.build.targets.wheel.hooks.angee-addon-sources]
Metadata
Release files for hatch-angee 0.2.4
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 | |
|---|---|---|---|---|
| hatch_angee-0.2.4.tar.gz | 54.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hatch_angee-0.2.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 81.6 kB
Release files / hatch_angee-0.2.4.tar.gz
| Download URL | hatch_angee-0.2.4.tar.gz |
|---|---|
| Size | 54.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
55aa21e2cac8367cdf6073a70082f40733571770c093470fd5e985cb33422e6d
|
|
BLAKE2b-256 checksum How to use checksums |
3193fa464284dc19b9c422741b8bd3d12468333d91308ef49a1928e685e75603
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / hatch_angee-0.2.4-py3-none-any.whl
| Download URL | hatch_angee-0.2.4-py3-none-any.whl |
|---|---|
| Size | 26.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a4367361e6ce4878dbe45777a4b70640e450a6096c0f7683483d306a7c0f10df
|
|
BLAKE2b-256 checksum How to use checksums |
d41a07695b75f8e02912c0688758b290e6e1b7d68d81f622e56bb6e8a9bf935f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for hatch-angee 0.2.4
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.