Skip to main content

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.addons entry points (name -> import anchor) — the runtime enumerates these over uv.lock to list available addons;
  • ships each addon's web/, templates/, skills/ into the wheel at the addon's import path (vendor.crmvendor/crm/...), layout-agnostic.

Backend config lives in [tool.hatch-angee] — e.g. extra-web names glob roots of non-addon shared web packages (no addon.toml) to ship verbatim. A normal addon repo configures none.

The library face

Angee's composer imports the same package in-process during angee build:

  • parse_manifest(path) → the validated AddonManifest (addon.toml vocabulary incl. dependencies — PEP 508 — and requires, 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].addons key, 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]

Download files

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

Source Distribution

hatch_angee-0.2.2.tar.gz (53.2 kB view details)

Uploaded Source

Built Distribution

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

hatch_angee-0.2.2-py3-none-any.whl (26.2 kB view details)

Uploaded Python 3

File details

Details for the file hatch_angee-0.2.2.tar.gz.

File metadata

  • Download URL: hatch_angee-0.2.2.tar.gz
  • Upload date:
  • Size: 53.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hatch_angee-0.2.2.tar.gz
Algorithm Hash digest
SHA256 ab496e82df3af6584507c8be0eddc4e7d6e74e07b5505a68950050f0337a9b82
MD5 9105d69ccb30487957d38dc77718c6c1
BLAKE2b-256 b8293e5b64055b02da9678a166c52cc6b5b271959cb334f8717d931d0d33c7c6

See more details on using hashes here.

File details

Details for the file hatch_angee-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: hatch_angee-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 26.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hatch_angee-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 018f3242484715a024f0dba8577246ce2acacb829333a97f4fa4a0efc7851735
MD5 19d1cda2b5fb733b4bd0e993a6ad197f
BLAKE2b-256 d39e93bae0e19a381b3915a37018ecc64075051b24804a38df647a779c13dcc3

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.3

2 files

This release

0.2.2 This release

2 files

0.2.1

2 files

0.2.0

2 files

0.1.5

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page