71 lines
2.1 KiB
Python
71 lines
2.1 KiB
Python
from workflow_extractor import WorkflowExtractor
|
|
|
|
|
|
def test_workflow_extractor_basic_prompt():
|
|
prompt = {
|
|
"1": {
|
|
"class_type": "CheckpointLoaderSimple",
|
|
"inputs": {"ckpt_name": "model.safetensors"},
|
|
},
|
|
"2": {
|
|
"class_type": "CLIPTextEncode",
|
|
"inputs": {"text": "positive", "clip": ["1", 1]},
|
|
},
|
|
"3": {
|
|
"class_type": "CLIPTextEncode",
|
|
"inputs": {"text": "negative", "clip": ["1", 1]},
|
|
},
|
|
"4": {
|
|
"class_type": "KSampler",
|
|
"inputs": {
|
|
"seed": 123,
|
|
"steps": 20,
|
|
"cfg": 7.5,
|
|
"sampler_name": "euler",
|
|
"scheduler": "normal",
|
|
"denoise": 1.0,
|
|
"model": ["1", 0],
|
|
"positive": ["2", 0],
|
|
"negative": ["3", 0],
|
|
},
|
|
},
|
|
"5": {
|
|
"class_type": "VAEDecode",
|
|
"inputs": {"samples": ["4", 0], "vae": ["1", 2]},
|
|
},
|
|
"6": {
|
|
"class_type": "MetaHubSaveNode",
|
|
"inputs": {"images": ["5", 0]},
|
|
},
|
|
}
|
|
|
|
extractor = WorkflowExtractor(prompt)
|
|
data, missing = extractor.extract(save_node_id="6")
|
|
|
|
assert not missing
|
|
assert data["seed"] == 123
|
|
assert data["steps"] == 20
|
|
assert data["cfg"] == 7.5
|
|
assert data["sampler_name"] == "euler"
|
|
assert data["scheduler"] == "normal"
|
|
assert data["denoise"] == 1.0
|
|
assert data["positive"] == "positive"
|
|
assert data["negative"] == "negative"
|
|
assert data["model_name"] == "model.safetensors"
|
|
assert data["vae_name"] == "model.safetensors"
|
|
|
|
|
|
def test_workflow_extractor_lora_detection():
|
|
prompt = {
|
|
"1": {
|
|
"class_type": "LoraLoader",
|
|
"inputs": {"lora_name": "detail.safetensors", "strength_model": 0.8},
|
|
}
|
|
}
|
|
|
|
extractor = WorkflowExtractor(prompt)
|
|
data, missing = extractor.extract()
|
|
|
|
assert "loras" not in missing
|
|
assert data["lora_list"] == [{"name": "detail.safetensors", "weight": 0.8}]
|