Skip to content

Commit

Permalink
clean code
Browse files Browse the repository at this point in the history
  • Loading branch information
dewmal committed Feb 4, 2025
1 parent f23246d commit 74804da
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 80 deletions.
33 changes: 1 addition & 32 deletions bindings/ceylon/ceylon/processor/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
35 changes: 35 additions & 0 deletions bindings/ceylon/ceylon/processor/data.py
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion bindings/ceylon/ceylon/processor/playground.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
37 changes: 31 additions & 6 deletions bindings/ceylon/ceylon/task/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
44 changes: 3 additions & 41 deletions bindings/ceylon/ceylon/task/manager.py
Original file line number Diff line number Diff line change
@@ -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:
Expand All @@ -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

Expand Down
1 change: 1 addition & 0 deletions bindings/ceylon/ceylon/task/playground.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit 74804da

Please sign in to comment.