Files
hao-ai-lab-FastVideo/fastvideo/tests/api/test_overrides.py

106 lines
3.1 KiB
Python

# SPDX-License-Identifier: Apache-2.0
import yaml
from fastvideo.api import (
apply_overrides,
load_run_config,
parse_cli_overrides,
)
def test_parse_cli_overrides_casts_supported_scalar_and_collection_types() -> None:
parsed = parse_cli_overrides([
"--generator.engine.num_gpus",
"4",
"--request.runtime.enable_teacache=true",
"--request.sampling.guidance_scale",
"1.5",
"--request.prompt",
"[\"a\", \"b\"]",
"--request.extensions",
"{\"ltx2\": {\"initial_latent_path\": \"/tmp/init.pt\"}}",
"--request.output.output_video_name",
"clip",
"--request.state",
"null",
])
assert parsed == {
"generator.engine.num_gpus": 4,
"request.runtime.enable_teacache": True,
"request.sampling.guidance_scale": 1.5,
"request.prompt": ["a", "b"],
"request.extensions": {
"ltx2": {
"initial_latent_path": "/tmp/init.pt"
}
},
"request.output.output_video_name": "clip",
"request.state": None,
}
def test_parse_cli_overrides_normalizes_dashed_dotted_keys() -> None:
parsed = parse_cli_overrides([
"--generator.engine.num-gpus",
"2",
"--request.output.output-path",
"outputs/custom.mp4",
])
assert parsed == {
"generator.engine.num_gpus": 2,
"request.output.output_path": "outputs/custom.mp4",
}
def test_apply_overrides_merges_nested_dicts_without_mutating_source() -> None:
original = {
"generator": {
"model_path": "/models/base",
"engine": {
"num_gpus": 1
},
},
"request": {},
}
updated = apply_overrides(
original,
{
"generator.engine.num_gpus": 8,
"request.extensions.ltx2.initial_latent_path": "/tmp/init.pt",
},
)
assert original["generator"]["engine"]["num_gpus"] == 1
assert updated["generator"]["engine"]["num_gpus"] == 8
assert updated["request"]["extensions"]["ltx2"]["initial_latent_path"] == "/tmp/init.pt"
def test_load_run_config_applies_dotted_overrides_before_validation(tmp_path) -> None:
raw = {
"generator": {
"model_path": "/models/base"
},
"request": {
"prompt": "baseline"
},
}
path = tmp_path / "run.yaml"
path.write_text(yaml.safe_dump(raw), encoding="utf-8")
loaded = load_run_config(path,
overrides=[
"--generator.pipeline.workload_type",
"t2v",
"--request.sampling.num_frames",
"81",
"--request.extensions.ltx2.initial_latent_path",
"/tmp/latent.pt",
])
assert loaded.generator.pipeline.workload_type == "t2v"
assert loaded.request.sampling.num_frames == 81
assert loaded.request.extensions["ltx2"]["initial_latent_path"] == "/tmp/latent.pt"