Source code for mirar.pipelines

"""
Central location for all pipelines. This is where you should add new pipelines.
"""

import logging

from mirar.errors import ProcessorError
from mirar.pipelines.base_pipeline import Pipeline
from mirar.pipelines.git.git_pipeline import GITPipeline
from mirar.pipelines.gmos.gmos_pipeline import GMOSPipeline
from mirar.pipelines.lmi.lmi_pipeline import LMIPipeline
from mirar.pipelines.sedmv2.sedmv2_pipeline import SEDMv2Pipeline
from mirar.pipelines.summer.summer_pipeline import SummerPipeline
from mirar.pipelines.wasp.wasp_pipeline import WASPPipeline
from mirar.pipelines.winter.winter_pipeline import WINTERPipeline
from mirar.pipelines.wirc.wirc_pipeline import WircPipeline

logger = logging.getLogger(__name__)


# Convention: lowercase names


[docs] class PipelineConfigError(ProcessorError, KeyError): """ Error raised when a pipeline is not found """
[docs] def get_pipeline( instrument: str, *args, selected_configurations=None, **kwargs ) -> Pipeline: """ Function to get pipeline :param instrument: Name of instrument :param args: args :param selected_configurations: Configurations to use :param kwargs: kwargs :return: pipeline """ try: pipeline = Pipeline.pipelines[instrument.lower()] logger.info(f"Found {instrument} pipeline") except KeyError as exc: err = ( f"Unrecognised pipeline {instrument}. " f"Available pipelines are: {Pipeline.pipelines.keys()}" ) logger.error(err) raise PipelineConfigError(err) from exc return pipeline(selected_configurations=selected_configurations, *args, **kwargs)