angee.platform.composed
Composed-addon introspection — the single walk over the app registry.
One owner for the per-addon rollups (model/field/resource counts, dependency edges) the platform surface needs. Both the live explorer view (schema._build_explorer) and the Addon reflection sync (AddonManager.reconcile_from_registry) read these — never two parallel walks.
AddonRollup
@dataclass(frozen=True, slots=True)
class AddonRollup()One composed addon's rolled-up facts, derived from the app registry.
addons
def addons() -> list[AppConfig]Return the composed Angee addon app configs, sorted by name.
is_historical
def is_historical(model: type[Model]) -> boolReturn whether model is a simple-history audit shadow (carries instance_type).
data_models
def data_models(config: AppConfig) -> list[type[Model]]Return one addon's concrete data models (no anchors, proxies, or history shadows).
own_fields
def own_fields(model: type[Model]) -> listReturn a model's own concrete columns plus declared many-to-many fields.
resource_counts
def resource_counts() -> dict[str, int]Return resource-ledger row counts keyed by source addon.
The resources addon owns the ledger and its rollup; ask it rather than re-querying its model here.
addon_rollups
def addon_rollups() -> list[AddonRollup]Roll up every composed addon's model/field/resource facts from the app graph.
The single derivation the explorer view and the reflection table both read.