angee.data.metadata
Transport-neutral data-surface description values and operations.
This module owns the frozen description objects, their merge rules, and their JSON-safe envelope serialization. Projection layers supply opaque model/surface handles and choose projection defaults; the contract only stores and describes those facts.
DataRelationAxisMetadata
@dataclass(frozen=True, slots=True)
class DataRelationAxisMetadata()Metadata for a relation group axis and its public identity lookup.
DataResourceEnumValueMetadata
@dataclass(frozen=True, slots=True)
class DataResourceEnumValueMetadata()One enum value exposed by a resource field.
DataResourceFieldMetadata
@dataclass(frozen=True, slots=True)
class DataResourceFieldMetadata()Field capability metadata emitted for one model resource field.
relation_object
Whether a relation field is projected as a nested selectable object.
A to-one FK can surface two ways with identical relation semantics (many2one widget, relation filter/group axis): as a nested node (product: ProductVariantType — its subfields are selectable) or as the related row's public id (location: strawberry.ID — a leaf). Only the former may be read with a sub-selection; the frontend keys the row selection on this flag so a nested relation reads { id <label> } and an id projection stays a leaf.
DataGroupAliasMetadata
@dataclass(frozen=True, slots=True)
class DataGroupAliasMetadata()Metadata for a display field that groups through another aggregate axis.
DataGroupBucketFilterValueMapMetadata
@dataclass(frozen=True, slots=True)
class DataGroupBucketFilterValueMapMetadata()One backend-owned group bucket value rewrite for drill-down filters.
DataGroupBucketFilterMetadata
@dataclass(frozen=True, slots=True)
class DataGroupBucketFilterMetadata()Backend-owned predicate metadata for drilling into one group bucket.
DataGroupExtractionMetadata
@dataclass(frozen=True, slots=True)
class DataGroupExtractionMetadata()One extraction supported by a group dimension, such as month or day.
DataGroupDimensionMetadata
@dataclass(frozen=True, slots=True)
class DataGroupDimensionMetadata()Backend-owned grouped bucket dimension metadata.
DataAggregateMeasureMetadata
@dataclass(frozen=True, slots=True)
class DataAggregateMeasureMetadata()Aggregate measure selectable for one resource.
DataDefaultSortMetadata
@dataclass(frozen=True, slots=True)
class DataDefaultSortMetadata()One model default ordering term exposed through the resource order input.
DataLinesMetadata
@dataclass(frozen=True, slots=True)
class DataLinesMetadata()Editable child-lines contract for one document resource.
Emitted when a resource declares lines= (F6): the frontend reads it to drive the EditableLines composer and the authored <res>_save diff-apply mutation. field is the parent's child accessor, model_label the child model, input_type the shared GraphQL line input (an optional public id plus the editable child columns), and fields the per-column metadata (scalar/widget) the line cells render. position_field names the integer order column when the child carries one.
DataResourceRoots
@dataclass(frozen=True, slots=True)
class DataResourceRoots()GraphQL wire root names emitted for one model data resource.
merge
def merge(left: DataResourceMetadata,
right: DataResourceMetadata) -> DataResourceRootsReturn root names merged with metadata-level collision checks.
DataResourceTypeNames
@dataclass(frozen=True, slots=True)
class DataResourceTypeNames()GraphQL type names owned or referenced by one data resource.
merge
def merge(left: DataResourceMetadata,
right: DataResourceMetadata) -> DataResourceTypeNamesReturn type names merged with metadata-level collision checks.
DataResourceSubtitleMetadata
@dataclass(frozen=True, slots=True)
class DataResourceSubtitleMetadata()Declared dotted selection paths for a resource record's subtitle facts.
The closed created/updated/word_count fact set is the renderer's vocabulary; adding a fact extends this declaration and its presentation together at the same seam.
merge
def merge(left: DataResourceMetadata,
right: DataResourceMetadata) -> DataResourceSubtitleMetadataMerge facts using the resource metadata's singleton collision rule.
DataResourceMetadata
@dataclass(frozen=True, slots=True)
class DataResourceMetadata()Internal metadata for one Angee model data resource.
merge
def merge(other: DataResourceMetadata) -> DataResourceMetadataReturn this resource contribution merged with another same-model contribution.
as_wire
def as_wire(*, schema_name: str) -> dict[str, object]Return this resource metadata in JSON-safe frontend wire shape.
merge_resource_fields
def merge_resource_fields(
left: tuple[DataResourceFieldMetadata,
...], right: tuple[DataResourceFieldMetadata, ...]
) -> tuple[DataResourceFieldMetadata, ...]Return resource field metadata merged by field name.
merge_data_resources
def merge_data_resources(
metadata: tuple[DataResourceMetadata, ...]
) -> tuple[DataResourceMetadata, ...]Merge per-surface resource contributions into one resource per model.
serialize_data_resources
def serialize_data_resources(metadata: tuple[DataResourceMetadata, ...], *,
schema_name: str) -> list[dict[str, object]]Return a JSON-safe schema-extension payload for resource metadata.