--- name: albucore-public-api description: Albucore star-exported API (__all__), routers vs albucore.functions shims, and dependents such as Albumentations. Use when changing exports, documenting API, or deciding what belongs in package __all__. --- # Albucore Public API ## Star Import `from albucore import *` follows `albucore/__init__.py`, which merges `__all__` from `functions`, `decorators`, `geometric`, and `utils`, plus metadata. Most routers live in `albucore/functions.py` `__all__`, re-exported from `arithmetic`, `lut`, `normalize`, `convert`, `ops_misc`, and `stats`. Geometric routers live in `albucore/geometric.py` `__all__` and are separately merged by package `__init__`; `resize3d` is one such router. ## Classification Doc Use `docs/public-api.md` for router classification and explicit `from albucore.functions import ...` shims such as `*_opencv`, `*_numpy`, NumKong helpers, and LUT plumbing. ## Dependents If Albumentations or another downstream package imports a symbol, it must be either: - On package `__all__` for star-import compatibility, or - Documented with an explicit import path such as `albucore.functions`. Example: `sz_lut` and `apply_uint8_lut` are public routers on `__all__` and are implemented in `albucore/lut.py`. ## Adding an Export 1. Implement in the appropriate submodule (`arithmetic.py`, `lut.py`, `geometric.py`, etc.). 2. For a regular router, ensure `from submodule import *` in `functions.py` exposes the name and append it to `functions.__all__`, sorted or grouped with peers. 3. For a geometric router, append it to `geometric.__all__`; do not add a compatibility shim to `functions.py` unless there is a separate public-API decision. 4. Confirm `from albucore import ` succeeds and that the name occurs once in package `__all__`. 5. Update `docs/public-api.md` if classification changes.