"""Utilities for dataloader endpoints.""" from typing import TypeVar from ddtrace import tracer T = TypeVar('T') @tracer.wrap('utils.format_for_dataloader') def format_for_dataloader( items: list[T], keys: list[str], lookup_key: str, ) -> list[T | None]: """Format results for dataloader pattern, maintaining order and handling missing items. Args: items: List of objects with the lookup_key attribute. keys: List of keys to order the items by. lookup_key: The attribute name to use for matching against keys. Returns: List of items ordered by keys, with None for missing items. """ items_dict = {str(getattr(item, lookup_key, None)): item for item in items} return [items_dict.get(str(key)) for key in keys]