Source code for lories._core._component

# -*- coding: utf-8 -*-
"""
lories._core._component
~~~~~~~~~~~~~~~~~~~~~~~


"""

from __future__ import annotations

from abc import abstractmethod
from typing import Any, Collection, Dict, Optional, TypeAlias, TypeVar, overload

import pandas as pd
from lories._core._activator import _Activator
from lories._core._channel import _Channel
from lories._core._channels import _Channels
from lories._core._configurations import Configurations
from lories._core._connector import Connectors
from lories._core._converter import Converters
from lories._core._data import Data, _DataContext
from lories._core._registrator import _Registrator, _RegistratorContext
from lories._core.typing import Timestamp


[docs] class _Component(_Registrator, _Activator): INCLUDES: Collection[str] = (_DataContext.TYPE,) TYPE: str = "component" @property @abstractmethod def components(self) -> Components: ... @property @abstractmethod def converters(self) -> Converters: ... @property @abstractmethod def connectors(self) -> Connectors: ... @property @abstractmethod def data(self) -> Data: ... @overload def get(self) -> pd.DataFrame: ... @overload def get(self, date: Timestamp | str) -> pd.DataFrame: ... @overload def get( self, start: Timestamp | str, end: Timestamp | str, ) -> pd.DataFrame: ... @abstractmethod def get( self, start: Optional[Timestamp | str] = None, end: Optional[Timestamp | str] = None, **kwargs, ) -> pd.DataFrame: ... # noinspection PyProtectedMember @classmethod def _build_defaults( cls, configs: Configurations, includes: Optional[Collection[str]] = (), strict: bool = False, ) -> Dict[str, Any]: defaults = super()._build_defaults(configs, includes) if strict and _DataContext.TYPE in defaults: defaults[_DataContext.TYPE][_Channels.TYPE] = _Channel._build_defaults( defaults[_DataContext.TYPE].get_member(_Channels.TYPE, defaults={}) ) return defaults
Component = TypeVar("Component", bound=_Component) # noinspection PyAbstractClass
[docs] class _ComponentContext(_RegistratorContext[Component]): TYPE: str = "components"
ComponentContext = TypeVar( name="ComponentContext", bound=_ComponentContext[_Component], ) Components: TypeAlias = ComponentContext