Code source de vessel.factory_vessel_config

"""
Module de récupération de la configuration du navire.

Ce module permet de récupérer la configuration du navire.
"""

from functools import singledispatch

from loguru import logger
import i18n

from .factory_vessel_config_manager import (
    get_vessel_config_manager_factory,
    VesselManagerProtocol,
)
from .vessel_config import VesselConfig
from .vessel_config_manager_abc import VesselConfigManagerABC


LOGGER = logger.bind(name="CSB-Processing.Vessel.VesselConfig.Factory")


[docs] @singledispatch def get_vessel_config( vessel: str | VesselConfig, vessel_config_manager: VesselManagerProtocol, /, ) -> VesselConfig: """ Récupère la configuration du navire. :param vessel: Identifiant du navire ou configuration du navire. :type vessel: str | VesselConfig :param vessel_config_manager: Gestionnaire de configuration du navire. :type vessel_config_manager: VesselManagerConfig :return: Configuration du navire. :rtype: VesselConfig """ raise TypeError( i18n.t( "vessel.factory_vessel_config.unsupported_vessel_type", vessel_type=type(vessel).__name__, ) )
@get_vessel_config.register def _( vessel: VesselConfig, vessel_config_manager_: VesselManagerProtocol, ) -> VesselConfig: """ Récupère la configuration du navire. :param vessel: Configuration du navire. :type vessel: VesselConfig :return: Configuration du navire. :rtype: VesselConfig """ LOGGER.debug( i18n.t("vessel.factory_vessel_config.vessel_config_passthrough", vessel=vessel) ) return vessel @get_vessel_config.register def _( vessel: str, vessel_config_manager: VesselManagerProtocol, ) -> VesselConfig: """ Récupère la configuration du navire. :param vessel: Identifiant du navire. :type vessel: str :param vessel_config_manager: Gestionnaire de configuration du navire. :type vessel_config_manager: VesselManagerConfig :return: Configuration du navire. :rtype: VesselConfig """ vessel_config_manager: VesselConfigManagerABC = get_vessel_config_manager_factory( manager_type=vessel_config_manager.manager_type )(**vessel_config_manager.kwargs) vessel_config: VesselConfig = vessel_config_manager.get_vessel_config( vessel_id=vessel ) LOGGER.debug( i18n.t( "vessel.factory_vessel_config.vessel_config_loaded", vessel_config=vessel_config, ) ) return vessel_config