Source code for hydromt.data_catalog.adapters.data_adapter_base

"""BaseModel for DataAdapter."""

from datetime import timedelta
from typing import Any, Dict, List, Optional

from pydantic import BaseModel, ConfigDict, Field

from hydromt._typing import TimeRange


[docs] class DataAdapterBase(BaseModel): """BaseModel for DataAdapter.""" model_config = ConfigDict(extra="forbid") unit_add: Dict[str, Any] = Field(default_factory=dict) unit_mult: Dict[str, Any] = Field(default_factory=dict) rename: Dict[str, str] = Field(default_factory=dict) def _to_source_timerange( self, time_range: Optional[TimeRange], ) -> Optional[TimeRange]: """Transform a DataSource timerange to the source-native timerange. Parameters ---------- time_range : Optional[TimeRange] start and end datetime Returns ------- Optional[TimeRange] time_range in source format """ if time_range is None: return None elif dt := self.unit_add.get("time"): # subtract from source unit add return (time - timedelta(seconds=dt) for time in time_range) else: return time_range def _to_source_variables( self, variables: Optional[List[str]] ) -> Optional[List[str]]: """Transform DataSource variables to the source-native names. Parameters ---------- variables : Optional[List[str]] name(s) of the variables in the data. Returns ------- Optional[List[str]] _description_ """ if variables: inverse_rename_mapping: dict[str, str] = { v: k for k, v in self.rename.items() } return [inverse_rename_mapping.get(var, var) for var in variables]