diff --git a/bindings/ceylon/ceylon/processor/agent.py b/bindings/ceylon/ceylon/processor/agent.py index 4fded79..a4af7a6 100644 --- a/bindings/ceylon/ceylon/processor/agent.py +++ b/bindings/ceylon/ceylon/processor/agent.py @@ -2,42 +2,11 @@ # Licensed under the Apache License, Version 2.0 (See LICENSE.md or http://www.apache.org/licenses/LICENSE-2.0). # -import dataclasses -import uuid from abc import abstractmethod -from dataclasses import dataclass from datetime import datetime -from enum import Enum -from typing import Optional, Any, Dict from ceylon import Worker, on - - -class ProcessState(Enum): - PENDING = "pending" - PROCESSING = "processing" - ERROR = "error" - SUCCESS = "success" - - -@dataclass -class ProcessRequest: - task_type: str - data: Any - id: str = dataclasses.field(default_factory=lambda: str(uuid.uuid4())) - metadata: Optional[Dict[str, Any]] = None - dependency_data: Optional[Dict[str, Any]] = None - - -@dataclass -class ProcessResponse: - request_id: str - result: Any - status: ProcessState = ProcessState.PENDING # 'success' or 'error' - id: str = dataclasses.field(default_factory=lambda: str(uuid.uuid4())) - error_message: Optional[str] = None - execution_time: Optional[float] = None - metadata: Optional[Dict[str, Any]] = None +from ceylon.processor.data import ProcessResponse, ProcessRequest, ProcessState class ProcessWorker(Worker): diff --git a/bindings/ceylon/ceylon/processor/data.py b/bindings/ceylon/ceylon/processor/data.py new file mode 100644 index 0000000..0a9832f --- /dev/null +++ b/bindings/ceylon/ceylon/processor/data.py @@ -0,0 +1,35 @@ +# Copyright 2024-Present, Syigen Ltd. and Syigen Private Limited. All rights reserved. +# Licensed under the Apache License, Version 2.0 (See LICENSE.md or http://www.apache.org/licenses/LICENSE-2.0). +# +import dataclasses +import uuid +from dataclasses import dataclass +from enum import Enum +from typing import Any, Optional, Dict + + +class ProcessState(Enum): + PENDING = "pending" + PROCESSING = "processing" + ERROR = "error" + SUCCESS = "success" + + +@dataclass +class ProcessRequest: + task_type: str + data: Any + id: str = dataclasses.field(default_factory=lambda: str(uuid.uuid4())) + metadata: Optional[Dict[str, Any]] = None + dependency_data: Optional[Dict[str, Any]] = None + + +@dataclass +class ProcessResponse: + request_id: str + result: Any + status: ProcessState = ProcessState.PENDING # 'success' or 'error' + id: str = dataclasses.field(default_factory=lambda: str(uuid.uuid4())) + error_message: Optional[str] = None + execution_time: Optional[float] = None + metadata: Optional[Dict[str, Any]] = None diff --git a/bindings/ceylon/ceylon/processor/playground.py b/bindings/ceylon/ceylon/processor/playground.py index 80433bf..f1ef43a 100644 --- a/bindings/ceylon/ceylon/processor/playground.py +++ b/bindings/ceylon/ceylon/processor/playground.py @@ -9,7 +9,7 @@ from ceylon import on from ceylon.base.playground import BasePlayGround -from ceylon.processor.agent import ProcessResponse, ProcessRequest, ProcessState +from ceylon.processor.data import ProcessResponse, ProcessRequest, ProcessState class ProcessPlayGround(BasePlayGround): diff --git a/bindings/ceylon/ceylon/task/data.py b/bindings/ceylon/ceylon/task/data.py index e17833a..943fd12 100644 --- a/bindings/ceylon/ceylon/task/data.py +++ b/bindings/ceylon/ceylon/task/data.py @@ -2,16 +2,41 @@ # Licensed under the Apache License, Version 2.0 (See LICENSE.md or http://www.apache.org/licenses/LICENSE-2.0). # # -from dataclasses import dataclass +from __future__ import annotations + +import uuid +from dataclasses import dataclass, field from enum import Enum -from typing import Any, Dict, Optional +from typing import Any, Dict, Optional, Callable, Coroutine, Set class TaskStatus(Enum): - PENDING = "pending" - IN_PROGRESS = "in_progress" - COMPLETED = "completed" - FAILED = "failed" + PENDING = "PENDING" + RUNNING = "RUNNING" + COMPLETED = "COMPLETED" + FAILED = "FAILED" + + +@dataclass +class TaskResult: + success: bool + output: Any = None + error: str = None + + +@dataclass +class Task: + name: str + processor: Callable[..., Coroutine] | str = None # Updated to expect a coroutine + input_data: Dict[str, Any] = field(default_factory=dict) + id: str = field(default_factory=lambda: str(uuid.uuid4())) + dependencies: Set[str] = field(default_factory=set) + status: TaskStatus = TaskStatus.PENDING + result: TaskResult = None + + def __post_init__(self): + if not self.id: + self.id = str(uuid.uuid4()) @dataclass diff --git a/bindings/ceylon/ceylon/task/manager.py b/bindings/ceylon/ceylon/task/manager.py index 3db78bd..5cefb72 100644 --- a/bindings/ceylon/ceylon/task/manager.py +++ b/bindings/ceylon/ceylon/task/manager.py @@ -1,40 +1,10 @@ from __future__ import annotations -from typing import Any, Callable, Dict, List, Set, Coroutine -from dataclasses import dataclass, field -from enum import Enum -import uuid -import logging import asyncio +import logging +from typing import Dict, List - -class TaskStatus(Enum): - PENDING = "PENDING" - RUNNING = "RUNNING" - COMPLETED = "COMPLETED" - FAILED = "FAILED" - - -@dataclass -class TaskResult: - success: bool - output: Any = None - error: str = None - - -@dataclass -class Task: - name: str - processor: Callable[..., Coroutine] | str = None # Updated to expect a coroutine - input_data: Dict[str, Any] = field(default_factory=dict) - id: str = field(default_factory=lambda: str(uuid.uuid4())) - dependencies: Set[str] = field(default_factory=set) - status: TaskStatus = TaskStatus.PENDING - result: TaskResult = None - - def __post_init__(self): - if not self.id: - self.id = str(uuid.uuid4()) +from ceylon.task.data import Task, TaskResult, TaskStatus class TaskManager: @@ -55,14 +25,6 @@ def add_task( Returns: str: ID of the created task """ - # task_id = str(uuid.uuid4()) - # task = Task( - # id=task_id, - # name=name, - # processor=process, - # input_data=input_data, - # dependencies=dependencies or set() - # ) self.tasks[task.id] = task return task.id diff --git a/bindings/ceylon/ceylon/task/playground.py b/bindings/ceylon/ceylon/task/playground.py index c232e55..8f4a782 100644 --- a/bindings/ceylon/ceylon/task/playground.py +++ b/bindings/ceylon/ceylon/task/playground.py @@ -37,6 +37,7 @@ async def add_and_execute_task(self, Returns: TaskResult: Result of the task execution + :param wait_for_completion: :param task: """ if type(task.processor) == str: