Source code for lories._core._resources
# -*- coding: utf-8 -*-
"""
lories._core._resources
~~~~~~~~~~~~~~~~~~~~~~~
"""
from __future__ import annotations
from abc import ABC, abstractmethod
from typing import Any, Callable, Dict, Generic, Iterable, Iterator, Sequence, Tuple, TypeVar, Union, overload
from lories._core._resource import Resource, _Resource
[docs]
class _Resources(ABC, Generic[Resource], Sequence[Resource]):
@abstractmethod
def append(self, resource: Resource) -> None: ...
@abstractmethod
def extend(self, resources: Iterable[Resource]) -> None: ...
@abstractmethod
def update(self, resources: Iterable[Resource]) -> None: ...
@abstractmethod
def ids(self) -> Sequence[str]: ...
@abstractmethod
def keys(self) -> Sequence[str]: ...
@abstractmethod
def copy(self) -> Resources: ...
@abstractmethod
def apply(self, apply: Callable[[Resource], Resource], inplace: bool = False): ...
# noinspection PyShadowingBuiltins
@overload
def filter(self, filter: Callable[[Resource], bool]): ...
@abstractmethod
def filter(self, *filters: Callable[[Resource], bool]): ...
# noinspection PyShadowingBuiltins, SpellCheckingInspection
@abstractmethod
def groupby(self, by: Callable[[Resource], Any] | str) -> Iterator[Tuple[Any, Resources]]: ...
@abstractmethod
def to_configs(self) -> Dict[str, Any]: ...
Resources = TypeVar("Resources", bound=_Resources[_Resource])
ResourcesArgument = TypeVar(
"ResourcesArgument",
bound=Union[_Resource, _Resources[_Resource], Iterable[_Resource], Iterable[str], str],
)