SYMBOL INDEX (655 symbols across 42 files) FILE: BiRefNetModule/wrapper.py class ImagePreprocessor (line 17) | class ImagePreprocessor: method __init__ (line 18) | def __init__(self, resolution: Tuple[int, int] = (1024, 1024)) -> None: method proc (line 27) | def proc(self, image: Image.Image) -> torch.Tensor: class BiRefNetHandler (line 56) | class BiRefNetHandler: method __init__ (line 57) | def __init__(self, device="cpu", usage="General"): method cleanup (line 90) | def cleanup(self): method process (line 106) | def process(self, input_path, alpha_output_dir=None, dilate_radius=0, ... FILE: CorridorKeyModule/backend.py function resolve_backend (line 32) | def resolve_backend(requested: str | None = None) -> str: function _auto_detect_backend (line 62) | def _auto_detect_backend() -> str: function _validate_mlx_available (line 106) | def _validate_mlx_available() -> None: function _ensure_torch_checkpoint (line 120) | def _ensure_torch_checkpoint() -> Path: function _discover_checkpoint (line 163) | def _discover_checkpoint(ext: str) -> Path: function _wrap_mlx_output (line 189) | def _wrap_mlx_output(raw: dict, despill_strength: float, auto_despeckle:... class _MLXEngineAdapter (line 238) | class _MLXEngineAdapter: method __init__ (line 241) | def __init__(self, raw_engine): method process_frame (line 245) | def process_frame( function create_engine (line 290) | def create_engine( FILE: CorridorKeyModule/core/color_utils.py function _is_tensor (line 11) | def _is_tensor(x: np.ndarray | torch.Tensor) -> bool: function _if_tensor (line 15) | def _if_tensor(is_tensor: bool, tensor_func: Callable, numpy_func: Calla... function _power (line 19) | def _power(x: np.ndarray | torch.Tensor, exponent: float) -> np.ndarray ... function _where (line 27) | def _where( function _clamp (line 37) | def _clamp(x: np.ndarray | torch.Tensor, min: float) -> np.ndarray | tor... function linear_to_srgb (line 50) | def linear_to_srgb(x: np.ndarray | torch.Tensor) -> np.ndarray | torch.T... function srgb_to_linear (line 60) | def srgb_to_linear(x: np.ndarray | torch.Tensor) -> np.ndarray | torch.T... function premultiply (line 70) | def premultiply(fg: np.ndarray | torch.Tensor, alpha: np.ndarray | torch... function unpremultiply (line 79) | def unpremultiply( function composite_straight (line 89) | def composite_straight( function composite_premul (line 99) | def composite_premul( function rgb_to_yuv (line 109) | def rgb_to_yuv(image: torch.Tensor) -> torch.Tensor: function dilate_mask (line 146) | def dilate_mask(mask: np.ndarray | torch.Tensor, radius: int) -> np.ndar... function apply_garbage_matte (line 181) | def apply_garbage_matte( function despill (line 205) | def despill( function clean_matte (line 250) | def clean_matte(alpha_np: np.ndarray, area_threshold: int = 300, dilatio... function create_checkerboard (line 298) | def create_checkerboard( FILE: CorridorKeyModule/core/model_transformer.py class MLP (line 13) | class MLP(nn.Module): method __init__ (line 16) | def __init__(self, input_dim: int = 2048, embed_dim: int = 768) -> None: method forward (line 20) | def forward(self, x: torch.Tensor) -> torch.Tensor: class DecoderHead (line 24) | class DecoderHead(nn.Module): method __init__ (line 25) | def __init__( method forward (line 47) | def forward(self, features: list[torch.Tensor]) -> torch.Tensor: class RefinerBlock (line 74) | class RefinerBlock(nn.Module): method __init__ (line 79) | def __init__(self, channels: int, dilation: int = 1) -> None: method forward (line 87) | def forward(self, x: torch.Tensor) -> torch.Tensor: class CNNRefinerModule (line 99) | class CNNRefinerModule(nn.Module): method __init__ (line 106) | def __init__(self, in_channels: int = 7, hidden_channels: int = 64, ou... method forward (line 129) | def forward(self, img: torch.Tensor, coarse_pred: torch.Tensor) -> tor... class GreenFormer (line 145) | class GreenFormer(nn.Module): method __init__ (line 146) | def __init__( method _patch_input_layer (line 198) | def _patch_input_layer(self, in_channels: int) -> None: method forward (line 242) | def forward(self, x: torch.Tensor) -> dict[str, torch.Tensor]: FILE: CorridorKeyModule/inference_engine.py class CorridorKeyEngine (line 19) | class CorridorKeyEngine: method __init__ (line 20) | def __init__( method _load_model (line 67) | def _load_model(self) -> GreenFormer: method process_frame (line 125) | def process_frame( FILE: VideoMaMaInferenceModule/inference.py function load_videomama_model (line 26) | def load_videomama_model(base_model_path: Optional[str] = None, unet_che... function extract_frames_from_video (line 66) | def extract_frames_from_video(video_path: str, max_frames: Optional[int]... function run_inference (line 101) | def run_inference( function save_video (line 178) | def save_video(frames: List[np.ndarray], output_path: str, fps: float): FILE: VideoMaMaInferenceModule/pipeline.py class StableVideoDiffusionPipelineOutput (line 62) | class StableVideoDiffusionPipelineOutput(BaseOutput): class StableVideoDiffusionPipelineWithMask (line 73) | class StableVideoDiffusionPipelineWithMask(DiffusionPipeline): method __init__ (line 83) | def __init__( method _encode_image (line 103) | def _encode_image( method _encode_vae_image (line 137) | def _encode_vae_image( method _get_add_time_ids (line 148) | def _get_add_time_ids( method decode_latents (line 168) | def decode_latents(self, latents: torch.Tensor, num_frames: int, decod... method check_inputs (line 181) | def check_inputs(self, image, height, width): method prepare_latents (line 191) | def prepare_latents( method _encode_video_vae (line 230) | def _encode_video_vae( method __call__ (line 248) | def __call__( class StableVideoDiffusionPipelineOnestepWithMask (line 394) | class StableVideoDiffusionPipelineOnestepWithMask(DiffusionPipeline): method __init__ (line 404) | def __init__( method _encode_image (line 424) | def _encode_image( method _encode_vae_image (line 458) | def _encode_vae_image( method _get_add_time_ids (line 469) | def _get_add_time_ids( method decode_latents (line 489) | def decode_latents(self, latents: torch.Tensor, num_frames: int, decod... method check_inputs (line 502) | def check_inputs(self, image, height, width): method prepare_latents (line 512) | def prepare_latents( method _encode_video_vae (line 543) | def _encode_video_vae( method __call__ (line 561) | def __call__( class StableVideoDiffusionPipelineWithCrossAtnnMask (line 685) | class StableVideoDiffusionPipelineWithCrossAtnnMask(DiffusionPipeline): method __init__ (line 689) | def __init__( method _encode_image_vae (line 711) | def _encode_image_vae(self, image: torch.Tensor, device: Union[str, to... method decode_latents (line 716) | def decode_latents(self, latents: torch.Tensor, num_frames: int, decod... method _encode_video_vae (line 729) | def _encode_video_vae( method __call__ (line 747) | def __call__( class VideoInferencePipeline (line 838) | class VideoInferencePipeline: method __init__ (line 846) | def __init__(self, base_model_path: str, unet_checkpoint_path: str, de... method run (line 881) | def run(self, cond_frames, mask_frames, seed=42, mask_cond_mode="vae",... method _pil_to_tensor (line 978) | def _pil_to_tensor(self, frames: list[Image.Image]): method _tensor_to_vae_latent (line 983) | def _tensor_to_vae_latent(self, t: torch.Tensor): method _get_add_time_ids (line 1001) | def _get_add_time_ids(self, fps, motion_bucket_id, noise_aug_strength,... method _resize_with_antialiasing (line 1012) | def _resize_with_antialiasing(self, input_tensor, size, interpolation=... FILE: backend/clip_state.py class ClipState (line 44) | class ClipState(Enum): class ClipAsset (line 65) | class ClipAsset: method __post_init__ (line 72) | def __post_init__(self): method _calculate_length (line 75) | def _calculate_length(self): method get_frame_files (line 96) | def get_frame_files(self) -> list[str]: class InOutRange (line 107) | class InOutRange: method frame_count (line 114) | def frame_count(self) -> int: method contains (line 117) | def contains(self, index: int) -> bool: method to_dict (line 120) | def to_dict(self) -> dict: method from_dict (line 124) | def from_dict(cls, d: dict) -> InOutRange: class ClipEntry (line 129) | class ClipEntry: method is_processing (line 146) | def is_processing(self) -> bool: method set_processing (line 150) | def set_processing(self, value: bool) -> None: method transition_to (line 154) | def transition_to(self, new_state: ClipState) -> None: method set_error (line 164) | def set_error(self, message: str) -> None: method output_dir (line 174) | def output_dir(self) -> str: method has_outputs (line 178) | def has_outputs(self) -> bool: method completed_frame_count (line 189) | def completed_frame_count(self) -> int: method completed_stems (line 197) | def completed_stems(self) -> set[str]: method _read_manifest (line 235) | def _read_manifest(self) -> dict | None: method _resolve_original_path (line 249) | def _resolve_original_path(self) -> str | None: method find_assets (line 262) | def find_assets(self) -> None: method _resolve_state (line 332) | def _resolve_state(self) -> None: function scan_project_clips (line 374) | def scan_project_clips(project_dir: str) -> list[ClipEntry]: function scan_clips_dir (line 416) | def scan_clips_dir( FILE: backend/errors.py class CorridorKeyError (line 6) | class CorridorKeyError(Exception): class ClipScanError (line 12) | class ClipScanError(CorridorKeyError): class FrameMismatchError (line 18) | class FrameMismatchError(CorridorKeyError): method __init__ (line 21) | def __init__(self, clip_name: str, input_count: int, alpha_count: int): class FrameReadError (line 28) | class FrameReadError(CorridorKeyError): method __init__ (line 31) | def __init__(self, clip_name: str, frame_index: int, path: str): class WriteFailureError (line 38) | class WriteFailureError(CorridorKeyError): method __init__ (line 41) | def __init__(self, clip_name: str, frame_index: int, path: str): class MaskChannelError (line 48) | class MaskChannelError(CorridorKeyError): method __init__ (line 51) | def __init__(self, clip_name: str, frame_index: int, channels: int): class VRAMInsufficientError (line 58) | class VRAMInsufficientError(CorridorKeyError): method __init__ (line 61) | def __init__(self, required_gb: float, available_gb: float): class InvalidStateTransitionError (line 67) | class InvalidStateTransitionError(CorridorKeyError): method __init__ (line 70) | def __init__(self, clip_name: str, current_state: str, target_state: s... class JobCancelledError (line 77) | class JobCancelledError(CorridorKeyError): method __init__ (line 80) | def __init__(self, clip_name: str, frame_index: int | None = None): class FFmpegNotFoundError (line 89) | class FFmpegNotFoundError(CorridorKeyError): method __init__ (line 92) | def __init__(self): class ExtractionError (line 102) | class ExtractionError(CorridorKeyError): method __init__ (line 105) | def __init__(self, clip_name: str, detail: str): FILE: backend/ffmpeg_tools.py function find_ffmpeg (line 34) | def find_ffmpeg() -> str | None: function find_ffprobe (line 46) | def find_ffprobe() -> str | None: function probe_video (line 58) | def probe_video(path: str) -> dict: function extract_frames (line 133) | def extract_frames( function stitch_video (line 291) | def stitch_video( function write_video_metadata (line 383) | def write_video_metadata(clip_root: str, metadata: dict) -> None: function read_video_metadata (line 395) | def read_video_metadata(clip_root: str) -> dict | None: FILE: backend/frame_io.py function read_image_frame (line 35) | def read_image_frame(fpath: str, gamma_correct_exr: bool = False) -> np.... function read_video_frame_at (line 70) | def read_video_frame_at( function read_video_frames (line 98) | def read_video_frames( function read_mask_frame (line 131) | def read_mask_frame(fpath: str, clip_name: str = "", frame_index: int = ... function read_video_mask_at (line 155) | def read_video_mask_at( FILE: backend/job_queue.py class JobType (line 33) | class JobType(Enum): class JobStatus (line 42) | class JobStatus(Enum): class GPUJob (line 51) | class GPUJob: method request_cancel (line 66) | def request_cancel(self) -> None: method is_cancelled (line 71) | def is_cancelled(self) -> bool: method check_cancelled (line 74) | def check_cancelled(self) -> None: class GPUJobQueue (line 87) | class GPUJobQueue: method __init__ (line 111) | def __init__(self): method submit (line 123) | def submit(self, job: GPUJob) -> bool: method next_job (line 163) | def next_job(self) -> GPUJob | None: method start_job (line 170) | def start_job(self, job: GPUJob) -> None: method complete_job (line 179) | def complete_job(self, job: GPUJob) -> None: method fail_job (line 191) | def fail_job(self, job: GPUJob, error: str) -> None: method mark_cancelled (line 204) | def mark_cancelled(self, job: GPUJob) -> None: method cancel_job (line 218) | def cancel_job(self, job: GPUJob) -> None: method cancel_current (line 232) | def cancel_current(self) -> None: method cancel_all (line 238) | def cancel_all(self) -> None: method report_progress (line 251) | def report_progress(self, clip_name: str, current: int, total: int) ->... method report_warning (line 259) | def report_warning(self, message: str) -> None: method find_job_by_id (line 265) | def find_job_by_id(self, job_id: str) -> GPUJob | None: method clear_history (line 278) | def clear_history(self) -> None: method remove_job (line 283) | def remove_job(self, job_id: str) -> None: method has_pending (line 289) | def has_pending(self) -> bool: method current_job (line 294) | def current_job(self) -> GPUJob | None: method pending_count (line 299) | def pending_count(self) -> int: method queue_snapshot (line 304) | def queue_snapshot(self) -> list[GPUJob]: method history_snapshot (line 310) | def history_snapshot(self) -> list[GPUJob]: method all_jobs_snapshot (line 316) | def all_jobs_snapshot(self) -> list[GPUJob]: FILE: backend/natural_sort.py function natural_sort_key (line 16) | def natural_sort_key(text: str) -> list[str | int]: function natsorted (line 31) | def natsorted(items: list[str]) -> list[str]: FILE: backend/project.py function _dedupe_path (line 40) | def _dedupe_path(parent_dir: str, stem: str) -> tuple[str, str]: function set_app_dir (line 62) | def set_app_dir(path: str) -> None: function projects_root (line 68) | def projects_root() -> str: function sanitize_stem (line 85) | def sanitize_stem(filename: str, max_len: int = 60) -> str: function create_project (line 97) | def create_project( function add_clips_to_project (line 175) | def add_clips_to_project( function _create_clip_folder (line 214) | def _create_clip_folder( function get_clip_dirs (line 256) | def get_clip_dirs(project_dir: str) -> list[str]: function is_v2_project (line 273) | def is_v2_project(project_dir: str) -> bool: function write_project_json (line 278) | def write_project_json(project_root: str, data: dict) -> None: function read_project_json (line 287) | def read_project_json(project_root: str) -> dict | None: function write_clip_json (line 300) | def write_clip_json(clip_root: str, data: dict) -> None: function read_clip_json (line 309) | def read_clip_json(clip_root: str) -> dict | None: function _read_clip_or_project_json (line 322) | def _read_clip_or_project_json(root: str) -> dict | None: function get_display_name (line 330) | def get_display_name(root: str) -> str: function set_display_name (line 341) | def set_display_name(root: str, name: str) -> None: function save_in_out_range (line 353) | def save_in_out_range(clip_root: str, in_out) -> None: function load_in_out_range (line 374) | def load_in_out_range(clip_root: str): function is_video_file (line 387) | def is_video_file(filename: str) -> bool: function is_image_file (line 392) | def is_image_file(filename: str) -> bool: FILE: backend/service.py class _ActiveModel (line 69) | class _ActiveModel(Enum): class InferenceParams (line 79) | class InferenceParams: method to_dict (line 88) | def to_dict(self) -> dict: method from_dict (line 92) | def from_dict(cls, d: dict) -> "InferenceParams": class OutputConfig (line 98) | class OutputConfig: method to_dict (line 110) | def to_dict(self) -> dict: method from_dict (line 114) | def from_dict(cls, d: dict) -> "OutputConfig": method enabled_outputs (line 119) | def enabled_outputs(self) -> list[str]: class FrameResult (line 134) | class FrameResult: class CorridorKeyService (line 143) | class CorridorKeyService: method __init__ (line 156) | def __init__(self): method job_queue (line 167) | def job_queue(self) -> GPUJobQueue: method detect_device (line 175) | def detect_device(self) -> str: method get_vram_info (line 187) | def get_vram_info(self) -> dict[str, float]: method _vram_allocated_mb (line 209) | def _vram_allocated_mb() -> float: method _safe_offload (line 221) | def _safe_offload(obj: object) -> None: method _ensure_model (line 240) | def _ensure_model(self, needed: _ActiveModel) -> None: method _get_engine (line 284) | def _get_engine(self): method _get_gvm (line 308) | def _get_gvm(self): method _get_videomama_pipeline (line 323) | def _get_videomama_pipeline(self): method unload_engines (line 339) | def unload_engines(self) -> None: method scan_clips (line 358) | def scan_clips( method get_clips_by_state (line 366) | def get_clips_by_state( method _read_input_frame (line 376) | def _read_input_frame( method _read_alpha_frame (line 410) | def _read_alpha_frame( method _write_image (line 429) | def _write_image( method _write_manifest (line 451) | def _write_manifest( method _write_outputs (line 483) | def _write_outputs( method run_inference (line 532) | def run_inference( method is_engine_loaded (line 722) | def is_engine_loaded(self) -> bool: method reprocess_single_frame (line 726) | def reprocess_single_frame( method run_gvm (line 797) | def run_gvm( method run_videomama (line 877) | def run_videomama( method _load_frames_for_videomama (line 1049) | def _load_frames_for_videomama( method _load_mask_frames_for_videomama (line 1080) | def _load_mask_frames_for_videomama(self, asset: ClipAsset, clip_name:... FILE: backend/validators.py function validate_frame_counts (line 23) | def validate_frame_counts( function normalize_mask_channels (line 54) | def normalize_mask_channels( function normalize_mask_dtype (line 82) | def normalize_mask_dtype(mask: np.ndarray) -> np.ndarray: function validate_frame_read (line 96) | def validate_frame_read( function validate_write (line 121) | def validate_write( function ensure_output_dirs (line 142) | def ensure_output_dirs(clip_root: str) -> dict[str, str]: FILE: clip_manager.py class InferenceSettings (line 30) | class InferenceSettings: function is_image_file (line 55) | def is_image_file(filename: str) -> bool: function is_video_file (line 59) | def is_video_file(filename: str) -> bool: function map_path (line 63) | def map_path(win_path: str) -> str: class ClipAsset (line 83) | class ClipAsset: method __init__ (line 84) | def __init__(self, path: str, asset_type: str) -> None: method _calculate_length (line 90) | def _calculate_length(self) -> None: class ClipEntry (line 103) | class ClipEntry: method __init__ (line 104) | def __init__(self, name: str, root_path: str) -> None: method find_assets (line 110) | def find_assets(self) -> None: method validate_pair (line 180) | def validate_pair(self) -> None: function get_gvm_processor (line 192) | def get_gvm_processor(device: str = "cpu") -> GVMProcessor: function generate_alphas (line 205) | def generate_alphas( function get_birefnet_usage_options (line 290) | def get_birefnet_usage_options(): function run_birefnet (line 294) | def run_birefnet( function run_videomama (line 352) | def run_videomama( function run_inference (line 596) | def run_inference( function organize_target (line 852) | def organize_target(target_dir: str) -> None: function organize_clips (line 912) | def organize_clips(clips_dir: str) -> None: function scan_clips (line 955) | def scan_clips() -> list[ClipEntry]: FILE: corridorkey_cli.py function _configure_environment (line 64) | def _configure_environment() -> None: class ProgressContext (line 81) | class ProgressContext: method __init__ (line 89) | def __init__(self) -> None: method __enter__ (line 100) | def __enter__(self) -> "ProgressContext": method __exit__ (line 104) | def __exit__(self, *exc: object) -> None: method on_clip_start (line 107) | def on_clip_start(self, clip_name: str, num_frames: int) -> None: method on_frame_complete (line 113) | def on_frame_complete(self, frame_idx: int, num_frames: int) -> None: function _on_clip_start_log_only (line 119) | def _on_clip_start_log_only(clip_name: str, total_clips: int) -> None: function _prompt_inference_settings (line 133) | def _prompt_inference_settings( function app_callback (line 207) | def app_callback( function list_clips_cmd (line 227) | def list_clips_cmd(ctx: typer.Context) -> None: function generate_alphas_cmd (line 233) | def generate_alphas_cmd(ctx: typer.Context) -> None: function run_inference_cmd (line 242) | def run_inference_cmd( function wizard (line 321) | def wizard( function interactive_wizard (line 334) | def interactive_wizard(win_path: str, device: str | None = None) -> None: function main (line 574) | def main() -> None: FILE: device_utils.py function detect_best_device (line 14) | def detect_best_device() -> str: function resolve_device (line 26) | def resolve_device(requested: str | None = None) -> str: function clear_device_cache (line 70) | def clear_device_cache(device: torch.device | str) -> None: FILE: gvm_core/gvm/models/unet_spatio_temporal_condition.py class UNetSpatioTemporalConditionModel (line 25) | class UNetSpatioTemporalConditionModel( method __init__ (line 69) | def __init__( method _set_class_embedding (line 274) | def _set_class_embedding( method get_class_embed (line 311) | def get_class_embed(self, sample: torch.Tensor, class_labels: Optional... method attn_processors (line 329) | def attn_processors(self) -> Dict[str, AttentionProcessor]: method set_attn_processor (line 358) | def set_attn_processor( method set_default_attn_processor (line 394) | def set_default_attn_processor(self): method _set_gradient_checkpointing (line 410) | def _set_gradient_checkpointing(self, module, value=False): method enable_forward_chunking (line 415) | def enable_forward_chunking( method forward (line 448) | def forward( FILE: gvm_core/gvm/pipelines/pipeline_gvm.py class GVMLoraLoader (line 25) | class GVMLoraLoader(StableDiffusionLoraLoaderMixin): method __init__ (line 27) | def __init__(self, *args, **kwargs): method load_lora_weights (line 30) | def load_lora_weights( class GVMOutput (line 45) | class GVMOutput(BaseOutput): class GVMPipeline (line 57) | class GVMPipeline(DiffusionPipeline, GVMLoraLoader): method __init__ (line 58) | def __init__(self, vae, unet, scheduler): method encode (line 64) | def encode(self, input): method decode (line 72) | def decode(self, latents, decode_chunk_size=16): method single_infer (line 94) | def single_infer(self, rgb, position_ids=None, num_inference_steps=Non... method __call__ (line 136) | def __call__( FILE: gvm_core/gvm/utils/inference_utils.py class VideoReader (line 12) | class VideoReader(Dataset): method __init__ (line 13) | def __init__(self, path, max_frames=None, transform=None): method frame_rate (line 20) | def frame_rate(self): method origin_shape (line 24) | def origin_shape(self): method __len__ (line 27) | def __len__(self): method __getitem__ (line 33) | def __getitem__(self, idx): class VideoWriter (line 41) | class VideoWriter: method __init__ (line 42) | def __init__(self, path, frame_rate, bit_rate=1000000): method write (line 49) | def write(self, frames): method write_numpy (line 63) | def write_numpy(self, frames): method close (line 74) | def close(self): class ImageSequenceReader (line 79) | class ImageSequenceReader(Dataset): method __init__ (line 80) | def __init__(self, path, transform=None): method origin_shape (line 86) | def origin_shape(self): method __len__ (line 92) | def __len__(self): method __getitem__ (line 95) | def __getitem__(self, idx): class ImageSequenceWriter (line 143) | class ImageSequenceWriter: method __init__ (line 144) | def __init__(self, path, extension='jpg'): method write (line 150) | def write(self, frames, filenames=None): method close (line 162) | def close(self): FILE: gvm_core/wrapper.py function seed_all (line 26) | def seed_all(seed: int = 0): function impad_multi (line 38) | def impad_multi(img, multiple=32): function sequence_collate_fn (line 55) | def sequence_collate_fn(examples): class GVMProcessor (line 61) | class GVMProcessor: method __init__ (line 62) | def __init__(self, method process_sequence (line 106) | def process_sequence(self, input_path, output_dir, FILE: test_vram.py function process_frame (line 9) | def process_frame(engine): function test_vram (line 16) | def test_vram(): FILE: tests/conftest.py function _has_gpu (line 13) | def _has_gpu(): function _has_mlx (line 23) | def _has_mlx(): function pytest_collection_modifyitems (line 35) | def pytest_collection_modifyitems(config, items): function sample_frame_rgb (line 56) | def sample_frame_rgb(): function sample_mask (line 63) | def sample_mask(): function tmp_clip_dir (line 77) | def tmp_clip_dir(tmp_path): function mock_greenformer (line 139) | def mock_greenformer(): function silent_backend_injection (line 166) | def silent_backend_injection(monkeypatch): function stage_shot (line 189) | def stage_shot(tmp_path): function sandbox_clip_manager (line 224) | def sandbox_clip_manager(tmp_path, monkeypatch): FILE: tests/test_backend.py class TestResolveBackend (line 26) | class TestResolveBackend: method test_explicit_torch (line 27) | def test_explicit_torch(self): method test_explicit_mlx_on_non_apple_raises (line 30) | def test_explicit_mlx_on_non_apple_raises(self): method test_env_var_torch (line 36) | def test_env_var_torch(self): method test_auto_non_darwin (line 41) | def test_auto_non_darwin(self): method test_auto_darwin_no_mlx_package (line 46) | def test_auto_darwin_no_mlx_package(self): method test_unknown_backend_raises (line 67) | def test_unknown_backend_raises(self): class TestDiscoverCheckpoint (line 75) | class TestDiscoverCheckpoint: method test_exactly_one (line 76) | def test_exactly_one(self, tmp_path): method test_zero_torch_triggers_auto_download (line 83) | def test_zero_torch_triggers_auto_download(self, tmp_path): method test_zero_torch_download_failure_raises_runtime_error (line 98) | def test_zero_torch_download_failure_raises_runtime_error(self, tmp_pa... method test_zero_safetensors_with_cross_reference (line 108) | def test_zero_safetensors_with_cross_reference(self, tmp_path): method test_multiple_raises (line 115) | def test_multiple_raises(self, tmp_path): method test_safetensors (line 122) | def test_safetensors(self, tmp_path): method test_ensure_torch_checkpoint_happy_path (line 129) | def test_ensure_torch_checkpoint_happy_path(self, tmp_path): method test_skip_when_present (line 147) | def test_skip_when_present(self, tmp_path): method test_mlx_not_triggered (line 157) | def test_mlx_not_triggered(self, tmp_path): method test_network_error_wrapping (line 165) | def test_network_error_wrapping(self, tmp_path): method test_disk_space_error (line 176) | def test_disk_space_error(self, tmp_path): method test_logging_on_download (line 191) | def test_logging_on_download(self, tmp_path, caplog): class TestWrapMlxOutput (line 209) | class TestWrapMlxOutput: method mlx_raw_output (line 211) | def mlx_raw_output(self): method test_output_keys (line 222) | def test_output_keys(self, mlx_raw_output): method test_alpha_shape_dtype (line 226) | def test_alpha_shape_dtype(self, mlx_raw_output): method test_fg_shape_dtype (line 233) | def test_fg_shape_dtype(self, mlx_raw_output): method test_processed_shape_dtype (line 238) | def test_processed_shape_dtype(self, mlx_raw_output): method test_comp_shape_dtype (line 243) | def test_comp_shape_dtype(self, mlx_raw_output): method test_value_ranges (line 248) | def test_value_ranges(self, mlx_raw_output): FILE: tests/test_cli.py class TestHelpOutput (line 23) | class TestHelpOutput: method test_main_help (line 24) | def test_main_help(self): method test_list_clips_help (line 32) | def test_list_clips_help(self): method test_generate_alphas_help (line 36) | def test_generate_alphas_help(self): method test_run_inference_help (line 40) | def test_run_inference_help(self): method test_wizard_help (line 44) | def test_wizard_help(self): class TestInvalidArgs (line 54) | class TestInvalidArgs: method test_wizard_requires_path (line 55) | def test_wizard_requires_path(self): method test_unknown_subcommand (line 59) | def test_unknown_subcommand(self): class TestInferenceSettings (line 69) | class TestInferenceSettings: method test_defaults (line 70) | def test_defaults(self): method test_custom_values (line 78) | def test_custom_values(self): class TestCallbackProtocol (line 98) | class TestCallbackProtocol: method test_run_inference_passes_callbacks (line 102) | def test_run_inference_passes_callbacks(self, mock_prompt, mock_run, m... method test_callback_signatures (line 117) | def test_callback_signatures(self): class TestListClips (line 137) | class TestListClips: method test_list_clips_calls_scan (line 139) | def test_list_clips_calls_scan(self, mock_scan): class TestNonInteractiveFlags (line 151) | class TestNonInteractiveFlags: method test_all_flags_skips_prompts (line 154) | def test_all_flags_skips_prompts(self, mock_run, mock_scan): method test_srgb_flag (line 185) | def test_srgb_flag(self, mock_run, mock_scan): method test_despill_clamped_to_range (line 211) | def test_despill_clamped_to_range(self, mock_run, mock_scan): method test_run_inference_help_shows_flags (line 234) | def test_run_inference_help_shows_flags(self): method test_skip_existing_passed_through (line 247) | def test_skip_existing_passed_through(self, mock_run, mock_scan): FILE: tests/test_clip_manager.py class TestFileTypeDetection (line 37) | class TestFileTypeDetection: method test_image_extensions_recognized (line 56) | def test_image_extensions_recognized(self, filename): method test_video_extensions_recognized (line 68) | def test_video_extensions_recognized(self, filename): method test_non_media_rejected (line 81) | def test_non_media_rejected(self, filename): method test_image_is_not_video (line 85) | def test_image_is_not_video(self): method test_video_is_not_image (line 90) | def test_video_is_not_image(self): class TestMapPath (line 100) | class TestMapPath: method test_basic_mapping (line 107) | def test_basic_mapping(self): method test_case_insensitive_drive_letter (line 111) | def test_case_insensitive_drive_letter(self): method test_trailing_whitespace_stripped (line 115) | def test_trailing_whitespace_stripped(self): method test_backslashes_converted (line 119) | def test_backslashes_converted(self): method test_non_v_drive_passthrough (line 123) | def test_non_v_drive_passthrough(self): method test_drive_root_only (line 128) | def test_drive_root_only(self): class TestClipAsset (line 138) | class TestClipAsset: method test_sequence_frame_count (line 141) | def test_sequence_frame_count(self, tmp_path): method test_sequence_ignores_non_image_files (line 152) | def test_sequence_ignores_non_image_files(self, tmp_path): method test_empty_sequence (line 164) | def test_empty_sequence(self, tmp_path): class TestClipEntryFindAssets (line 177) | class TestClipEntryFindAssets: method test_finds_image_sequence_input (line 184) | def test_finds_image_sequence_input(self, tmp_clip_dir): method test_finds_alpha_hint (line 192) | def test_finds_alpha_hint(self, tmp_clip_dir): method test_empty_alpha_hint_is_none (line 200) | def test_empty_alpha_hint_is_none(self, tmp_clip_dir): method test_missing_input_raises (line 207) | def test_missing_input_raises(self, tmp_path): method test_empty_input_dir_raises (line 215) | def test_empty_input_dir_raises(self, tmp_path): method test_validate_pair_frame_count_mismatch (line 223) | def test_validate_pair_frame_count_mismatch(self, tmp_path): method test_validate_pair_matching_counts_ok (line 243) | def test_validate_pair_matching_counts_ok(self, tmp_clip_dir): class TestGenerateAlphas (line 255) | class TestGenerateAlphas: method test_all_clips_valid_skips_generation (line 261) | def test_all_clips_valid_skips_generation(self, caplog): method test_gvm_missing_exits_gracefully (line 275) | def test_gvm_missing_exits_gracefully(self, mock_get_processor, caplog): method test_existing_alpha_dir_is_cleaned (line 291) | def test_existing_alpha_dir_is_cleaned(self, _mock_gvm, tmp_path): method test_naming_remap_sequence (line 312) | def test_naming_remap_sequence(self, mock_get_processor, tmp_path): method test_naming_remap_video (line 346) | def test_naming_remap_video(self, mock_get_processor, tmp_path): method test_empty_output_logs_error (line 378) | def test_empty_output_logs_error(self, mock_get_processor, tmp_path, c... class TestVideoMaMa (line 405) | class TestVideoMaMa: method test_videomama_skips_if_sequence_exists (line 406) | def test_videomama_skips_if_sequence_exists(self, stage_shot, caplog): method test_videomama_processes_valid_candidate (line 426) | def test_videomama_processes_valid_candidate(self, stage_shot): method test_videomama_skips_if_input_missing (line 439) | def test_videomama_skips_if_input_missing(self, tmp_path): method test_videomama_skips_if_mask_missing (line 450) | def test_videomama_skips_if_mask_missing(self, stage_shot, caplog): method test_videomama_mask_thresholding (line 469) | def test_videomama_mask_thresholding(self, stage_shot): method test_videomama_rgba_to_rgb_conversion (line 483) | def test_videomama_rgba_to_rgb_conversion(self, stage_shot): method test_videomama_exr_gamma_handling (line 497) | def test_videomama_exr_gamma_handling(self, stage_shot): method test_safety_removes_file_blocking_dir (line 512) | def test_safety_removes_file_blocking_dir(self, stage_shot): method test_videomama_multiple_clips_batch (line 526) | def test_videomama_multiple_clips_batch(self, stage_shot): method test_videomama_upgrades_video_alpha (line 541) | def test_videomama_upgrades_video_alpha(self, stage_shot): method test_videomama_handles_invalid_image_load (line 552) | def test_videomama_handles_invalid_image_load(self, stage_shot, caplog): method test_videomama_priority_folder_over_video (line 574) | def test_videomama_priority_folder_over_video(self, stage_shot): method test_loop_chunking_logic (line 587) | def test_loop_chunking_logic(self, tmp_path): method test_videomama_mask_from_video (line 611) | def test_videomama_mask_from_video(self, stage_shot): method test_videomama_cleanup_on_failure (line 622) | def test_videomama_cleanup_on_failure(self, stage_shot, caplog): class TestOrganizeTarget (line 657) | class TestOrganizeTarget: method test_creates_hint_directories (line 663) | def test_creates_hint_directories(self, tmp_path): method test_existing_hint_dirs_preserved (line 675) | def test_existing_hint_dirs_preserved(self, tmp_clip_dir): method test_moves_loose_images_to_input (line 685) | def test_moves_loose_images_to_input(self, tmp_path): class TestOrganizeClips (line 707) | class TestOrganizeClips: method test_organize_loose_video_file (line 712) | def test_organize_loose_video_file(self, tmp_path): method test_skips_video_if_folder_exists (line 735) | def test_skips_video_if_folder_exists(self, tmp_path, caplog): method test_ignores_protected_folders (line 755) | def test_ignores_protected_folders(self, tmp_path): method test_handles_nonexistent_directory (line 776) | def test_handles_nonexistent_directory(self, caplog): method test_batch_organization_mix (line 790) | def test_batch_organization_mix(self, tmp_path): class TestScanClips (line 821) | class TestScanClips: method test_creates_clips_dir_and_returns_empty_if_missing (line 828) | def test_creates_clips_dir_and_returns_empty_if_missing(self, tmp_path... method test_returns_clips_with_valid_input (line 840) | def test_returns_clips_with_valid_input(self, tmp_clip_dir, monkeypatch): method test_excludes_frame_count_mismatch (line 851) | def test_excludes_frame_count_mismatch(self, tmp_clip_dir, monkeypatch): method test_skips_hidden_and_underscore_dirs (line 871) | def test_skips_hidden_and_underscore_dirs(self, tmp_clip_dir, monkeypa... method test_noise_filter_skips_hidden_folders (line 885) | def test_noise_filter_skips_hidden_folders(self, sandbox_clip_manager): method test_scanner_handles_multiple_shots (line 903) | def test_scanner_handles_multiple_shots(self, sandbox_clip_manager): method test_ideal_organization_loose_videos (line 920) | def test_ideal_organization_loose_videos(self, sandbox_clip_manager): method test_organization_skips_existing_folders (line 934) | def test_organization_skips_existing_folders(self, sandbox_clip_manage... method test_batch_processing_mix (line 947) | def test_batch_processing_mix(self, sandbox_clip_manager): method test_nonexistent_directory_logging (line 960) | def test_nonexistent_directory_logging(self, caplog): FILE: tests/test_color_utils.py function _to_np (line 21) | def _to_np(x): function _to_torch (line 26) | def _to_torch(x): class TestSrgbLinearConversion (line 36) | class TestSrgbLinearConversion: method test_identity_values_numpy (line 45) | def test_identity_values_numpy(self, value): method test_identity_values_torch (line 51) | def test_identity_values_torch(self, value): method test_mid_gray_numpy (line 57) | def test_mid_gray_numpy(self): method test_mid_gray_torch (line 62) | def test_mid_gray_torch(self): method test_roundtrip_numpy (line 69) | def test_roundtrip_numpy(self, value): method test_roundtrip_torch (line 75) | def test_roundtrip_torch(self, value): method test_breakpoint_continuity_linear_to_srgb (line 81) | def test_breakpoint_continuity_linear_to_srgb(self): method test_breakpoint_continuity_srgb_to_linear (line 91) | def test_breakpoint_continuity_srgb_to_linear(self): method test_negative_clamped_linear_to_srgb_numpy (line 100) | def test_negative_clamped_linear_to_srgb_numpy(self): method test_negative_clamped_linear_to_srgb_torch (line 104) | def test_negative_clamped_linear_to_srgb_torch(self): method test_negative_clamped_srgb_to_linear_numpy (line 108) | def test_negative_clamped_srgb_to_linear_numpy(self): method test_negative_clamped_srgb_to_linear_torch (line 112) | def test_negative_clamped_srgb_to_linear_torch(self): method test_vectorized_numpy (line 117) | def test_vectorized_numpy(self): method test_vectorized_torch (line 124) | def test_vectorized_torch(self): class TestPremultiply (line 137) | class TestPremultiply: method test_roundtrip_numpy (line 143) | def test_roundtrip_numpy(self): method test_roundtrip_torch (line 150) | def test_roundtrip_torch(self): method test_output_bounded_by_fg_numpy (line 157) | def test_output_bounded_by_fg_numpy(self): method test_output_bounded_by_fg_torch (line 164) | def test_output_bounded_by_fg_torch(self): method test_zero_alpha_numpy (line 170) | def test_zero_alpha_numpy(self): method test_one_alpha_numpy (line 177) | def test_one_alpha_numpy(self): class TestCompositing (line 190) | class TestCompositing: method test_straight_vs_premul_equivalence_numpy (line 197) | def test_straight_vs_premul_equivalence_numpy(self): method test_straight_vs_premul_equivalence_torch (line 208) | def test_straight_vs_premul_equivalence_torch(self): method test_alpha_zero_shows_background (line 219) | def test_alpha_zero_shows_background(self): method test_alpha_one_shows_foreground (line 226) | def test_alpha_one_shows_foreground(self): class TestDespill (line 239) | class TestDespill: method test_pure_green_reduced_average_mode_numpy (line 246) | def test_pure_green_reduced_average_mode_numpy(self): method test_pure_green_reduced_max_mode_numpy (line 253) | def test_pure_green_reduced_max_mode_numpy(self): method test_pure_red_unchanged_numpy (line 259) | def test_pure_red_unchanged_numpy(self): method test_strength_zero_is_noop_numpy (line 265) | def test_strength_zero_is_noop_numpy(self): method test_partial_green_average_mode_numpy (line 271) | def test_partial_green_average_mode_numpy(self): method test_max_mode_higher_limit_than_average (line 279) | def test_max_mode_higher_limit_than_average(self): method test_fractional_strength_interpolates (line 287) | def test_fractional_strength_interpolates(self): method test_despill_torch (line 299) | def test_despill_torch(self): method test_green_below_limit_unchanged_numpy (line 307) | def test_green_below_limit_unchanged_numpy(self): class TestCleanMatte (line 327) | class TestCleanMatte: method test_large_blob_preserved (line 334) | def test_large_blob_preserved(self): method test_small_blob_removed (line 342) | def test_small_blob_removed(self): method test_mixed_blobs (line 349) | def test_mixed_blobs(self): method test_3d_input_preserved (line 361) | def test_3d_input_preserved(self): class TestCheckerboard (line 375) | class TestCheckerboard: method test_output_shape (line 378) | def test_output_shape(self): method test_output_range (line 382) | def test_output_range(self): method test_uses_specified_colors (line 387) | def test_uses_specified_colors(self): class TestRgbToYuv (line 398) | class TestRgbToYuv: method test_pure_white_bchw (line 408) | def test_pure_white_bchw(self): method test_pure_red_known_values (line 419) | def test_pure_red_known_values(self): method test_chw_layout (line 431) | def test_chw_layout(self): method test_last_dim_layout (line 440) | def test_last_dim_layout(self): method test_rejects_numpy (line 452) | def test_rejects_numpy(self): class TestDilateMask (line 464) | class TestDilateMask: method test_radius_zero_noop_numpy (line 470) | def test_radius_zero_noop_numpy(self): method test_radius_zero_noop_torch (line 476) | def test_radius_zero_noop_torch(self): method test_dilation_expands_numpy (line 482) | def test_dilation_expands_numpy(self): method test_dilation_expands_torch (line 492) | def test_dilation_expands_torch(self): method test_preserves_2d_shape_numpy (line 501) | def test_preserves_2d_shape_numpy(self): method test_preserves_2d_shape_torch (line 506) | def test_preserves_2d_shape_torch(self): method test_preserves_3d_shape_torch (line 511) | def test_preserves_3d_shape_torch(self): class TestApplyGarbageMatte (line 523) | class TestApplyGarbageMatte: method test_none_input_passthrough (line 529) | def test_none_input_passthrough(self): method test_zeros_outside_garbage_region (line 536) | def test_zeros_outside_garbage_region(self): method test_3d_matte_with_2d_garbage (line 547) | def test_3d_matte_with_2d_garbage(self): FILE: tests/test_device_utils.py function _patch_gpu (line 25) | def _patch_gpu(monkeypatch, *, cuda=False, mps=False): class TestDetectBestDevice (line 39) | class TestDetectBestDevice: method test_returns_cuda_when_available (line 42) | def test_returns_cuda_when_available(self, monkeypatch): method test_returns_mps_when_no_cuda (line 46) | def test_returns_mps_when_no_cuda(self, monkeypatch): method test_returns_cpu_when_nothing (line 50) | def test_returns_cpu_when_nothing(self, monkeypatch): class TestResolveDevice (line 60) | class TestResolveDevice: method test_none_triggers_auto_detect (line 65) | def test_none_triggers_auto_detect(self, monkeypatch): method test_auto_string_triggers_auto_detect (line 70) | def test_auto_string_triggers_auto_detect(self, monkeypatch): method test_env_var_used_when_no_cli_arg (line 77) | def test_env_var_used_when_no_cli_arg(self, monkeypatch): method test_env_var_auto_triggers_detect (line 82) | def test_env_var_auto_triggers_detect(self, monkeypatch): method test_cli_arg_overrides_env_var (line 89) | def test_cli_arg_overrides_env_var(self, monkeypatch): method test_explicit_cuda (line 96) | def test_explicit_cuda(self, monkeypatch): method test_explicit_mps (line 100) | def test_explicit_mps(self, monkeypatch): method test_explicit_cpu (line 104) | def test_explicit_cpu(self, monkeypatch): method test_case_insensitive (line 107) | def test_case_insensitive(self, monkeypatch): method test_cuda_unavailable_raises (line 112) | def test_cuda_unavailable_raises(self, monkeypatch): method test_mps_no_backend_raises (line 117) | def test_mps_no_backend_raises(self, monkeypatch): method test_mps_unavailable_raises (line 126) | def test_mps_unavailable_raises(self, monkeypatch): method test_invalid_device_raises (line 133) | def test_invalid_device_raises(self, monkeypatch): class TestClearDeviceCache (line 143) | class TestClearDeviceCache: method test_cuda_clears_cache (line 146) | def test_cuda_clears_cache(self, monkeypatch): method test_mps_clears_cache (line 152) | def test_mps_clears_cache(self, monkeypatch): method test_cpu_is_noop (line 158) | def test_cpu_is_noop(self): method test_accepts_torch_device_object (line 162) | def test_accepts_torch_device_object(self, monkeypatch): method test_accepts_mps_device_object (line 168) | def test_accepts_mps_device_object(self, monkeypatch): FILE: tests/test_e2e_workflow.py function _fake_result (line 25) | def _fake_result(h: int = 4, w: int = 4) -> dict: class TestE2EInferenceWorkflow (line 40) | class TestE2EInferenceWorkflow: method test_output_directories_created (line 48) | def test_output_directories_created(self, tmp_clip_dir, monkeypatch): method test_output_files_written_per_frame (line 70) | def test_output_files_written_per_frame(self, tmp_clip_dir, monkeypatch): method test_clip_without_alpha_skipped (line 96) | def test_clip_without_alpha_skipped(self, tmp_clip_dir, monkeypatch): FILE: tests/test_exr_gamma_bug_condition.py function _write_exr (line 64) | def _write_exr(path: str, rgb_data: np.ndarray) -> None: class TestDefect3NaivePowVsPiecewiseSRGB (line 75) | class TestDefect3NaivePowVsPiecewiseSRGB: method test_gamma_corrected_exr_matches_piecewise_srgb (line 84) | def test_gamma_corrected_exr_matches_piecewise_srgb(self, data: np.nda... method test_threshold_region_divergence (line 120) | def test_threshold_region_divergence(self, pixel_val: float) -> None: class TestDefect1And2RunInferenceEXRPath (line 156) | class TestDefect1And2RunInferenceEXRPath: method test_exr_srgb_frame_is_gamma_corrected (line 167) | def test_exr_srgb_frame_is_gamma_corrected(self, data: np.ndarray) -> ... FILE: tests/test_exr_gamma_preservation.py function _write_exr (line 61) | def _write_exr(path: str, rgb_data: np.ndarray) -> None: function _write_png (line 67) | def _write_png(path: str, rgb_data: np.ndarray) -> None: class TestPreservationLinearEXRRead (line 78) | class TestPreservationLinearEXRRead: method test_exr_default_returns_raw_linear_data (line 88) | def test_exr_default_returns_raw_linear_data(self, data: np.ndarray) -... method test_exr_explicit_false_returns_raw_linear_data (line 121) | def test_exr_explicit_false_returns_raw_linear_data(self, data: np.nda... class TestPreservationStandardImageRead (line 152) | class TestPreservationStandardImageRead: method test_png_read_returns_uint8_normalized (line 161) | def test_png_read_returns_uint8_normalized(self, data: np.ndarray) -> ... method test_png_result_dtype_and_range (line 189) | def test_png_result_dtype_and_range(self, data: np.ndarray) -> None: class TestPreservationLinearEXRInference (line 211) | class TestPreservationLinearEXRInference: method test_linear_exr_passes_through_unchanged (line 221) | def test_linear_exr_passes_through_unchanged(self, data: np.ndarray) -... FILE: tests/test_frame_io.py class TestReadVideoFrameAtNegativeIndex (line 12) | class TestReadVideoFrameAtNegativeIndex: method test_negative_one_returns_none (line 15) | def test_negative_one_returns_none(self, tmp_path): method test_large_negative_returns_none (line 21) | def test_large_negative_returns_none(self, tmp_path): method test_zero_does_not_trigger_guard (line 26) | def test_zero_does_not_trigger_guard(self, tmp_path): class TestReadVideoMaskAtNegativeIndex (line 38) | class TestReadVideoMaskAtNegativeIndex: method test_negative_one_returns_none (line 41) | def test_negative_one_returns_none(self, tmp_path): method test_large_negative_returns_none (line 46) | def test_large_negative_returns_none(self, tmp_path): method test_zero_does_not_trigger_guard (line 51) | def test_zero_does_not_trigger_guard(self, tmp_path): FILE: tests/test_gamma_consistency.py class TestGammaInconsistency (line 41) | class TestGammaInconsistency: method test_linear_to_srgb_differs_from_gamma_22 (line 47) | def test_linear_to_srgb_differs_from_gamma_22(self): method test_srgb_to_linear_differs_from_gamma_22 (line 64) | def test_srgb_to_linear_differs_from_gamma_22(self): class TestGammaDivergenceMagnitude (line 82) | class TestGammaDivergenceMagnitude: method test_divergence_at_known_values (line 104) | def test_divergence_at_known_values(self, linear_val, expected_min_diff): method test_both_methods_agree_at_zero_and_one (line 117) | def test_both_methods_agree_at_zero_and_one(self): method test_worst_case_divergence_in_darks (line 125) | def test_worst_case_divergence_in_darks(self): FILE: tests/test_imports.py function test_import_corridorkey_module (line 8) | def test_import_corridorkey_module(): function test_import_color_utils (line 12) | def test_import_color_utils(): function test_import_inference_engine (line 16) | def test_import_inference_engine(): function test_import_model_transformer (line 20) | def test_import_model_transformer(): function test_import_gvm_core (line 24) | def test_import_gvm_core(): function test_import_gvm_wrapper (line 28) | def test_import_gvm_wrapper(): function test_import_videomama (line 32) | def test_import_videomama(): function test_import_videomama_inference (line 36) | def test_import_videomama_inference(): FILE: tests/test_inference_engine.py function _make_engine_with_mock (line 27) | def _make_engine_with_mock(mock_greenformer, img_size=64): class TestProcessFrameOutputs (line 53) | class TestProcessFrameOutputs: method test_output_keys (line 56) | def test_output_keys(self, sample_frame_rgb, sample_mask, mock_greenfo... method test_output_shapes_match_input (line 66) | def test_output_shapes_match_input(self, sample_frame_rgb, sample_mask... method test_output_dtype_float32 (line 77) | def test_output_dtype_float32(self, sample_frame_rgb, sample_mask, moc... method test_alpha_output_range_is_zero_to_one (line 85) | def test_alpha_output_range_is_zero_to_one(self, sample_frame_rgb, sam... method test_fg_output_range_is_zero_to_one (line 93) | def test_fg_output_range_is_zero_to_one(self, sample_frame_rgb, sample... class TestProcessFrameColorSpace (line 107) | class TestProcessFrameColorSpace: method test_srgb_input_default (line 115) | def test_srgb_input_default(self, sample_frame_rgb, sample_mask, mock_... method test_linear_input_path (line 122) | def test_linear_input_path(self, sample_frame_rgb, sample_mask, mock_g... method test_uint8_input_normalized (line 128) | def test_uint8_input_normalized(self, sample_mask, mock_greenformer): method test_model_called_exactly_once (line 136) | def test_model_called_exactly_once(self, sample_frame_rgb, sample_mask... class TestProcessFramePostProcessing (line 151) | class TestProcessFramePostProcessing: method test_despill_strength_reduces_green_in_spill_pixels (line 154) | def test_despill_strength_reduces_green_in_spill_pixels(self, sample_f... method test_auto_despeckle_toggle (line 197) | def test_auto_despeckle_toggle(self, sample_frame_rgb, sample_mask, mo... method test_processed_is_linear_premul_rgba (line 203) | def test_processed_is_linear_premul_rgba(self, sample_frame_rgb, sampl... method test_mask_2d_vs_3d_input (line 226) | def test_mask_2d_vs_3d_input(self, sample_frame_rgb, mock_greenformer): method test_refiner_scale_parameter_accepted (line 238) | def test_refiner_scale_parameter_accepted(self, sample_frame_rgb, samp... class TestNvidiaGPUProcess (line 250) | class TestNvidiaGPUProcess: method test_process_frame_on_gpu (line 252) | def test_process_frame_on_gpu(self, sample_frame_rgb, sample_mask, moc... FILE: tests/test_mlx_smoke.py function mlx_engine (line 10) | def mlx_engine(): function test_mlx_smoke_2048 (line 17) | def test_mlx_smoke_2048(mlx_engine): FILE: tests/test_pbt_auto_download.py class TestMissingCheckpointTriggersDownload (line 66) | class TestMissingCheckpointTriggersDownload: method test_missing_pth_triggers_download_and_returns_valid_path (line 79) | def test_missing_pth_triggers_download_and_returns_valid_path( class TestExistingCheckpointSkipsDownload (line 141) | class TestExistingCheckpointSkipsDownload: method test_existing_pth_skips_download (line 153) | def test_existing_pth_skips_download(self, pth_name: str) -> None: class TestAutoDownloadIsTorchOnly (line 186) | class TestAutoDownloadIsTorchOnly: method test_non_pth_extension_raises_without_download (line 198) | def test_non_pth_extension_raises_without_download(self, ext: str) -> ... function _make_hf_hub_http_error (line 225) | def _make_hf_hub_http_error(message: str) -> Exception: class TestNetworkErrorsProduceActionableMessages (line 253) | class TestNetworkErrorsProduceActionableMessages: method test_network_errors_produce_actionable_messages (line 266) | def test_network_errors_produce_actionable_messages( FILE: tests/test_pbt_backend_resolution.py function _expected_backend (line 30) | def _expected_backend(cli: str | None, env: str | None, auto: str) -> str: function test_backend_resolution_priority_chain (line 46) | def test_backend_resolution_priority_chain(cli: str | None, env: str | N... FILE: tests/test_pbt_dep_preservation.py function _parse_base_dependencies (line 53) | def _parse_base_dependencies() -> list[str]: function _normalize_dep (line 60) | def _normalize_dep(dep: str) -> str: function _dep_present (line 69) | def _dep_present(dep: str, dep_list: list[str]) -> bool: function test_non_torch_dependency_preserved (line 80) | def test_non_torch_dependency_preserved(dep: str) -> None: FILE: tests/test_pyproject_structure.py function pyproject (line 26) | def pyproject() -> dict: class TestCudaExtra (line 37) | class TestCudaExtra: method test_cuda_extra_contains_torch (line 40) | def test_cuda_extra_contains_torch(self, pyproject: dict) -> None: method test_cuda_extra_contains_torchvision (line 44) | def test_cuda_extra_contains_torchvision(self, pyproject: dict) -> None: class TestMlxExtra (line 54) | class TestMlxExtra: method test_mlx_extra_contains_corridorkey_mlx (line 57) | def test_mlx_extra_contains_corridorkey_mlx(self, pyproject: dict) -> ... class TestPytorchIndex (line 68) | class TestPytorchIndex: method test_pytorch_index_has_cuda_extra (line 71) | def test_pytorch_index_has_cuda_extra(self, pyproject: dict) -> None: class TestUvSources (line 83) | class TestUvSources: method test_torch_source_has_cuda_extra (line 86) | def test_torch_source_has_cuda_extra(self, pyproject: dict) -> None: method test_torchvision_source_has_cuda_extra (line 92) | def test_torchvision_source_has_cuda_extra(self, pyproject: dict) -> N... class TestConflicts (line 104) | class TestConflicts: method test_cuda_mlx_conflict_declared (line 107) | def test_cuda_mlx_conflict_declared(self, pyproject: dict) -> None: class TestTimmSourcePreserved (line 121) | class TestTimmSourcePreserved: method test_timm_source_is_git (line 124) | def test_timm_source_is_git(self, pyproject: dict) -> None: method test_timm_git_url (line 128) | def test_timm_git_url(self, pyproject: dict) -> None: method test_timm_git_branch (line 132) | def test_timm_git_branch(self, pyproject: dict) -> None: class TestTritonWindowsPreserved (line 142) | class TestTritonWindowsPreserved: method test_triton_windows_in_base_deps (line 145) | def test_triton_windows_in_base_deps(self, pyproject: dict) -> None: method test_triton_windows_has_win32_marker (line 150) | def test_triton_windows_has_win32_marker(self, pyproject: dict) -> None: class TestDevDependencyGroup (line 161) | class TestDevDependencyGroup: method test_dev_group_contains_pytest (line 164) | def test_dev_group_contains_pytest(self, pyproject: dict) -> None: method test_dev_group_contains_pytest_cov (line 168) | def test_dev_group_contains_pytest_cov(self, pyproject: dict) -> None: method test_dev_group_contains_ruff (line 172) | def test_dev_group_contains_ruff(self, pyproject: dict) -> None: class TestDocsDependencyGroup (line 182) | class TestDocsDependencyGroup: method test_docs_group_contains_zensical (line 185) | def test_docs_group_contains_zensical(self, pyproject: dict) -> None: