53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
"""
|
|
Progress event models for video generation
|
|
|
|
Provides structured progress events for UI layer to consume and translate.
|
|
"""
|
|
|
|
from dataclasses import dataclass
|
|
from typing import Optional
|
|
|
|
|
|
@dataclass
|
|
class ProgressEvent:
|
|
"""
|
|
Structured progress event for video generation
|
|
|
|
Attributes:
|
|
event_type: Type of event (e.g., "generating_narrations", "frame_step", "concatenating")
|
|
progress: Progress value from 0.0 to 1.0
|
|
frame_current: Current frame number (1-based, optional)
|
|
frame_total: Total number of frames (optional)
|
|
step: Current step within frame (1-4, optional)
|
|
action: Action being performed (e.g., "audio", "image", "compose", "video", optional)
|
|
|
|
Examples:
|
|
# Simple progress event
|
|
ProgressEvent(event_type="generating_narrations", progress=0.05)
|
|
|
|
# Frame step event
|
|
ProgressEvent(
|
|
event_type="frame_step",
|
|
progress=0.23,
|
|
frame_current=1,
|
|
frame_total=5,
|
|
step=1,
|
|
action="audio"
|
|
)
|
|
"""
|
|
event_type: str
|
|
progress: float
|
|
|
|
# Optional frame-related fields
|
|
frame_current: Optional[int] = None
|
|
frame_total: Optional[int] = None
|
|
step: Optional[int] = None # 1-4 for frame processing steps
|
|
action: Optional[str] = None # "audio", "image", "compose", "video"
|
|
extra_info: Optional[str] = None # Additional information (e.g., batch progress)
|
|
|
|
def __post_init__(self):
|
|
"""Validate progress value"""
|
|
if not 0.0 <= self.progress <= 1.0:
|
|
raise ValueError(f"Progress must be between 0.0 and 1.0, got {self.progress}")
|
|
|