Source code for bridge.builders.spdx.spdx_composer

"""
High-level coroutine that chains EuropePMCIngestor and EuropePMCTransformer
to produce a Publication model from a Europe PMC ID.
"""

import logging

from bridge.core import SPDXLicense
from bridge.services import SPDXLicenseIngestor

from .spdx_transormer import SPDXLicenseTransformer

logger = logging.getLogger(__name__)


[docs] async def compose_spdx_license_metadata(spdx_id: str) -> SPDXLicense: """ Fetch and transform SPDX license entry into a SPDXLicense model. Parameters ---------- spdx_id : str SPDX license identifier (e.g. "MIT", "GPL-3.0-only"). Returns ------- SPDXLicense A SPDXLicense model representing the SPDX license metadata. Raises ------ Exception If there is an error during ingestion or transformation. """ logger.info(f"Composing SPDX license metadata model for ID {spdx_id}") try: spdx_license_ingestor = SPDXLicenseIngestor(spdx_id=spdx_id) spdx_license_transformer = SPDXLicenseTransformer(spdx_license_ingestor) spdx_license_metadata = await spdx_license_transformer.transform() logger.info(f"Composed SPDX license metadata model for ID {spdx_id} successfully") return spdx_license_metadata except Exception as e: logger.exception(f"Error composing SPDX license metadata model for ID {spdx_id}: {e}") raise