from temporalio import activity, workflow with workflow.unsafe.imports_passed_through(): from laborious.activities.postgres import Postgres from laborious.activities.mlflow import MLFlow from laborious.activities.gates import Gates from laborious.activities.opc import OPC from typing import Any from logging import Logger from sientia_do.notifications.handlers import NotificationHandler class Activities(Postgres, MLFlow, Gates, OPC): def __init__(self, postgres_config: dict[str, Any], mlflow_config: dict[str, Any], opc_config: dict[str, Any], logger: Logger, notification_handler: NotificationHandler): # Initialize parent classes Postgres.__init__(self, host=postgres_config['host'], port=postgres_config['port'], user=postgres_config['user'], password=postgres_config['password'], dbname=postgres_config['dbname'], min_connections=postgres_config['min_connections'], max_connections=postgres_config['max_connections'], logger=logger, notification_handler=notification_handler) MLFlow.__init__(self, mlflow_host=mlflow_config['host'], mlflow_port=mlflow_config['port'], mlflow_username=mlflow_config['username'], mlflow_password=mlflow_config['password'], logger=logger, notification_handler=notification_handler) Gates.__init__(self, logger=logger, notification_handler=notification_handler) OPC.__init__(self, name=opc_config['name'], url=opc_config['url'], server_uri=opc_config['server_uri'], cert_path=opc_config['cert_path'], private_key_path=opc_config['private_key_path'], server_cert_path=opc_config['server_cert_path'], logger=logger, notification_handler=notification_handler) @activity.defn(name="prepare_activity") async def prepare_activity(self, schedule_name: str, model_name: str, model_id: str): await super().prepare_activity(schedule_name, model_name, model_id)