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.0.tar.gz (52.7 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.0-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hatch_angee-0.2.0.tar.gz
  • Upload date:
  • Size: 52.7 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.0.tar.gz
Algorithm Hash digest
SHA256 d6782b6ae49a5d1886ddd4664fe8cce83873bc020174d4da0a7dd74926833d6d
MD5 73a1d2bb6c1b903f4db4daeaa4339122
BLAKE2b-256 f3c7f5dd392f840e66a57bcdbb61cc57effb6fe88a8037668c99d0cbc122ea84

See more details on using hashes here.

File details

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

File metadata

  • Download URL: hatch_angee-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 26.0 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 33d6df201b8dc73530c56faf41123701f733307196bc27c1168248038cff25e1
MD5 8d2632f5159cd38f0a00a2c68c038ff5
BLAKE2b-256 4c84642323ded7616991599bccfbe23313aa6d21d29a53651335dcac09d182e4

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

This release

0.2.0 This release

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