"""
Module contains luna3 clients adapted for usage in lambda
"""
from dataclasses import dataclass
from ..exceptions import UserTaskLambdaException
from .events import Events
from .faces import Faces
from .handlers import Handlers
from .lis import LIS
from .lpm import LPM
from .lrs import LRS
from .lva import LVA
from .sender import Sender
[docs]
@dataclass
class Clients:
    """Luna services clients for standalone/handlers lambdas"""
    faces: Faces
    events: Events | None
    matcher: LPM
    faceSamplesStore: LIS | None
    bodySamplesStore: LIS | None
    imageOriginStore: LIS | None
    objectOriginStore: LIS | None
    sdk: LRS
    videoAgent: LVA | None
    sender: Sender | None
    handlers: Handlers | None
    def __getattribute__(self, item):
        if item == "__class__":
            return self
        try:
            client = super().__getattribute__(item)
        except AttributeError:
            raise UserTaskLambdaException(f"{item.capitalize()} service client is not exists.")
        try:
            client.getAddress()
            return client
        except Exception:
            try:
                txt = client.__doc__.split(" ")[0]
            except:
                raise UserTaskLambdaException(f"{item.capitalize()} service is disabled. Client was not initialized")
            raise UserTaskLambdaException(f"{txt} service is disabled. Client was not initialized") 
[docs]
@dataclass
class TasksClients(Clients):
    """Luna services clients for tasks lambda"""