Files

57 lines
1.6 KiB
Python

"""Global server state shared across API modules.
Keeping state in a dedicated module prevents the classic '__main__ vs package
module' duplication that occurs when api_server.py is run with ``python -m``.
All modules that need the generator or server args should import from here.
"""
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from fastvideo.entrypoints.video_generator import VideoGenerator
from fastvideo.fastvideo_args import FastVideoArgs
DEFAULT_OUTPUT_DIR = "outputs"
_generator: VideoGenerator | None = None
_fastvideo_args: FastVideoArgs | None = None
_output_dir: str = DEFAULT_OUTPUT_DIR
def get_generator() -> VideoGenerator:
"""Return the global VideoGenerator instance (set during startup)."""
assert _generator is not None, "Server not initialized — generator is None"
return _generator
def get_server_args() -> FastVideoArgs:
"""Return the global FastVideoArgs (set during startup)."""
assert _fastvideo_args is not None, "Server not initialized — args is None"
return _fastvideo_args
def get_output_dir() -> str:
"""Return the configured output directory."""
return _output_dir
def set_state(
generator: VideoGenerator,
fastvideo_args: FastVideoArgs,
output_dir: str,
) -> None:
"""Set all server state at once (called from lifespan)."""
global _generator, _fastvideo_args, _output_dir
_generator = generator
_fastvideo_args = fastvideo_args
_output_dir = output_dir
def clear_state() -> None:
"""Clear server state on shutdown."""
global _generator, _fastvideo_args
_generator = None
_fastvideo_args = None