Skip to content

registry

django_spire.metric.report.registry

ReportRegistry

Source code in django_spire/metric/report/registry.py
def __init__(self) -> None:
    self.report_names_classes = {}
    self.report_registries = []

category = None class-attribute instance-attribute

report_names_classes = {} class-attribute instance-attribute

report_registries = [] class-attribute instance-attribute

add_registry

Source code in django_spire/metric/report/registry.py
def add_registry(self, report_registry: type[Self] | Self) -> None:
    registry_class = (
        report_registry if isinstance(report_registry, type) else type(report_registry)
    )

    if registry_class.category is None:
        message = 'Report Registry category is required'
        raise ValueError(message)

    self.report_names_classes[registry_class.category] = self._collect_report_names(
        registry_class
    )

get_report_from_key_stack

Source code in django_spire/metric/report/registry.py
def get_report_from_key_stack(self, report_key_stack: str) -> BaseReport | None:
    current: Any = self.report_names_classes

    for key in report_key_stack.split('|'):
        if isinstance(current, dict) and key in current:
            current = current[key]
        else:
            return None

    if isinstance(current, dict):
        return None

    if not isinstance(current, type) or not issubclass(current, BaseReport):
        return None

    return current()