"""Process-local filesystem, logging, token, and request-path support for the app.""" from __future__ import annotations import logging import os import sys import tempfile import time import uuid from pathlib import Path import PIL.Image from .build_info import CANDIDATE_ID from . import runtime_utils APP_ROOT = Path(__file__).resolve().parents[1] RUNTIME_EXAMPLE_DIR = APP_ROOT / "runtime_examples" RUNTIME_IC_EXAMPLE_DIR = RUNTIME_EXAMPLE_DIR / "ic_colorizer" RUNTIME_IC_PIXEL_UPSCALER_EXAMPLE_DIR = RUNTIME_EXAMPLE_DIR / "ic_pixel_upscaler" RUNTIME_IC_INOUTPAINT_EXAMPLE_DIR = RUNTIME_EXAMPLE_DIR / "ic_inoutpaint" RUNTIME_A2V_EXAMPLE_DIR = RUNTIME_EXAMPLE_DIR / "audio_to_video" HF_TOKEN = os.environ.get("HF_TOKEN") or os.environ.get("HF_ACCESS_TOKEN") SPACE_DEBUG = os.environ.get("SPACE_DEBUG") == "1" LOG_FORMAT = "%(asctime)s.%(msecs)03dZ %(levelname)s %(name)s %(message)s" LOG_DATEFMT = "%Y-%m-%dT%H:%M:%S" LOG_FORMATTER = logging.Formatter(LOG_FORMAT, datefmt=LOG_DATEFMT) LOG_FORMATTER.converter = time.gmtime APP_LOGGER = logging.getLogger("ltx25") APP_LOGGER.setLevel(logging.DEBUG) APP_LOGGER.propagate = False if not APP_LOGGER.handlers: _stream_handler = logging.StreamHandler(sys.stdout) _stream_handler.setLevel(logging.INFO) _stream_handler.setFormatter(LOG_FORMATTER) APP_LOGGER.addHandler(_stream_handler) WORKER_UUID = uuid.uuid4().hex WORKER_ROOT = Path(tempfile.gettempdir()) / "ltx25_workers" / WORKER_UUID WORKER_ROOT.mkdir(parents=True, mode=0o700, exist_ok=False) CIVITAI_LORA_CACHE_ROOT = WORKER_ROOT / "civitai_lora_cache" RUNTIME_CIVITAI_NO_PREVIEW_PATH = WORKER_ROOT / "civitai_no_preview.png" PIL.Image.new("RGB", (256, 256), (38, 38, 38)).save(RUNTIME_CIVITAI_NO_PREVIEW_PATH, format="PNG") WORKER_LOG_PATH = WORKER_ROOT / "ltx25_worker.log" _worker_file_handler = logging.FileHandler(WORKER_LOG_PATH, mode="a", encoding="utf-8", delay=True) _worker_file_handler.setLevel(logging.INFO) _worker_file_handler.setFormatter(LOG_FORMATTER) APP_LOGGER.addHandler(_worker_file_handler) APP_LOGGER.info("worker.start candidate=%s worker_uuid=%s root=%s", CANDIDATE_ID, WORKER_UUID, WORKER_ROOT) RequestPaths = runtime_utils.RequestPaths is_uuid_hex = runtime_utils.is_uuid_hex create_session_id = runtime_utils.create_session_id normalize_session_id = runtime_utils.normalize_session_id disk_state = runtime_utils.disk_state gpu_state = runtime_utils.gpu_state package_identity = runtime_utils.package_identity runtime_environment_identity = runtime_utils.runtime_environment_identity sha256_file = runtime_utils.sha256_file def open_request_logger(log_path: Path, request_id: str): return runtime_utils.open_request_logger(log_path, request_id, LOG_FORMATTER) def close_request_logger(logger, handler) -> None: runtime_utils.close_request_logger(logger, handler) def cleanup_session_results(session_id) -> None: runtime_utils.cleanup_session_results(WORKER_ROOT, session_id) def create_request_paths(session_id) -> RequestPaths: return runtime_utils.create_request_paths(WORKER_ROOT, session_id)