Source code for pantea.utils.attribute

from typing import Any, Dict, Optional

import jax.numpy as jnp

from pantea.logger import logger
from pantea.types import Array, Dtype, default_dtype


[docs]def set_as_attribute( obj: Any, items: Dict[str, Any], prefix: str = "", postfix: str = "", ) -> None: """ An utility function to set a dictionary of items as the input object attributes. :param obj: instance :param items: dictionary of attributes :type items: Dict[str, Any] :param prefix: _description_, defaults to "" :type prefix: str, optional :param postfix: _description_, defaults to "" :type postfix: str, optional """ logger.debug(f"Setting {len(items)} items as {obj.__class__.__name__} attributes:") for name, item in items.items(): attr_name: str = f"{prefix}{name}{postfix}" logger.debug(f"-> {obj.__class__.__name__}.{attr_name}") setattr(obj, attr_name, item)
[docs]def asarray(data: Any, dtype: Optional[Dtype] = None) -> Array: """ An utility function to cast input data (scalar, array, etc) to Array type with predefined dtype. :param value: input data :type value: Any :param dtype: casted dtype. Default dtype will be used otherwise. :type dtype: Optional[Dtype], optional :return: casted input :rtype: Array """ if dtype is None: dtype = default_dtype.FLOATX return jnp.array(data, dtype=dtype)