Spaces:
Sleeping
Sleeping
File size: 1,532 Bytes
1c77735 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | from abc import ABC, abstractmethod
from dataclasses import dataclass, field
from typing import Any
@dataclass
class PreprocessingContext:
raw_bytes: bytes
filename: str = ""
content_type: str = ""
image: Any = None
image_array: Any = None
patches: list = field(default_factory=list)
tensor: Any = None
metadata: dict = field(default_factory=dict)
steps_completed: list = field(default_factory=list)
step_timings: dict = field(default_factory=dict)
step_outputs: dict = field(default_factory=dict)
errors: list = field(default_factory=list)
# Satellite tiling: PIL Image tiles + their (x1, y1) offsets in the original image
tiles: list = field(default_factory=list)
tile_offsets: list = field(default_factory=list) # list of (offset_x, offset_y) tuples
class PreprocessingError(Exception):
pass
class PreprocessingStep(ABC):
name: str = "base_step"
description: str = ""
version: str = "1.0.0"
order: int = 0
enabled: bool = True
required: bool = False
@abstractmethod
async def process(self, ctx: PreprocessingContext, params: dict) -> PreprocessingContext:
pass
def validate_config(self, params: dict) -> bool:
return True
def get_info(self) -> dict:
return {
"name": self.name,
"description": self.description,
"version": self.version,
"order": self.order,
"enabled": self.enabled,
"required": self.required,
}
|