Source code for dml_util.adapters.local

"""Local adapter for running DaggerML functions.

This module provides a local adapter for running DaggerML functions.
The local adapter allows running DaggerML functions in the local environment
using various runners, such as script runners, conda runners, etc.

Classes
-------
LocalAdapter
    Local adapter for running DaggerML functions.
"""

import json
from dataclasses import dataclass

from dml_util.adapters.base import AdapterBase
from dml_util.core.config import EnvConfig, InputConfig


[docs] @dataclass class LocalAdapter(AdapterBase): """Local adapter for running DaggerML functions.""" ADAPTER = "dml-util-local-adapter"
[docs] @classmethod def resolve(cls, uri: str) -> str: """Resolve a URI to a local runner.""" from dml_util.runners.base import RunnerBase return RunnerBase._RUNNERS[uri]
[docs] @classmethod def funkify(cls, uri, data): """Create a Resource from a URI and data.""" data = cls.resolve(uri).funkify(**data) if isinstance(data, tuple): uri, data = data return super().funkify(uri, data)
[docs] @classmethod def send_to_remote(cls, uri, config: EnvConfig, dump: str) -> tuple[str, str]: """Send data to a local runner. Parameters ---------- uri : str The runner URI. config : EnvConfig Configuration for the run. dump : str The payload to send. Returns ------- tuple[str, str] A tuple of (response, message). """ runner = cls.resolve(uri)(config, InputConfig(**json.loads(dump))) return runner.run()