Source code for bridge.builders.biotools.biotools_transformer
"""
Transformer converting raw bio.tools API JSON into a BiotoolsToolModel.
"""
import logging
from bridge.builders.protocols import Transformer
from bridge.core import BiotoolsToolModel
from bridge.services import BiotoolsIngestor
logger = logging.getLogger(__name__)
[docs]
class BiotoolsToolTransformer(Transformer):
"""
Transform raw data from BiotoolsIngestor into a BiotoolsToolModel.
Parameters
----------
ingestor : BiotoolsIngestor
An instance of BiotoolsIngestor to fetch raw tool metadata.
Attributes
----------
ingestor : BiotoolsIngestor
The ingestor instance used to fetch raw tool metadata.
"""
def __init__(self, ingestor: BiotoolsIngestor):
self.ingestor = ingestor
[docs]
async def transform(self) -> BiotoolsToolModel:
"""
Transform raw data into a BiotoolsToolModel.
Returns
-------
BiotoolsToolModel
The transformed tool model.
"""
logger.info(f"Transforming data for bio.tools ID {self.ingestor.biotools_id}")
raw_data = await self.ingestor.fetch()
logger.debug(f"Raw data keys: {list(raw_data.keys())}")
result = BiotoolsToolModel(**raw_data)
logger.info(f"Transformed data for bio.tools ID {self.ingestor.biotools_id} successfully")
return result