Source code for openscm_runner.adapters.ciceroscm_py_adapter.ciceroscmpy

"""
CICEROSCMPY adapter
"""
import logging

from ..base import _Adapter
from ..utils.cicero_utils._run_ciceroscm_parallel import run_ciceroscm_parallel
from ._compat import cscmpy
from .cscmpy_wrapper import CSCMPYWrapper

LOGGER = logging.getLogger(__name__)


def _execute_run(cfgs, output_variables, scenariodata):
    cscm = CSCMPYWrapper(scenariodata)
    try:
        out = cscm.run_over_cfgs(cfgs, output_variables)
    finally:
        LOGGER.info("Finished run")
    return out


[docs]class CICEROSCMPY(_Adapter): # pylint: disable=too-few-public-methods """ Adapter for CICEROSCM python version """ model_name = "CiceroSCMPY" def __init__(self): # pylint: disable=useless-super-delegation """ Initialise the CICEROSCM adapter """ super().__init__() def _init_model(self): # pylint: disable=arguments-differ pass def _run(self, scenarios, cfgs, output_variables, output_config): """ Run the model. This method is the internal implementation of the :meth:`run` interface cfgs is a list of indices to run """ if output_config is not None: raise NotImplementedError("`output_config` not implemented for CICERO-SCM") runs = run_ciceroscm_parallel(scenarios, cfgs, output_variables, _execute_run) return runs
[docs] @classmethod def get_version(cls): """ Get the CICEROSCM version being used by this adapter Returns ------- str The CICEROSCM version id """ return cscmpy.__version__