Skip to content

Commit 45ea998

Browse files
committed
Resolve GGUF models by normalized download category alias
1 parent da7d9b3 commit 45ea998

2 files changed

Lines changed: 50 additions & 1 deletion

File tree

core/workflow_analyzer.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1152,8 +1152,14 @@ def _resolve_from_available_models(
11521152
return None
11531153

11541154
for category in category_order:
1155+
normalized_category = normalize_download_category(category)
11551156
for model in available_models:
1156-
if model.get("category") != category:
1157+
model_category = model.get("category")
1158+
if (
1159+
model_category != category
1160+
and normalize_download_category(model_category)
1161+
!= normalized_category
1162+
):
11571163
continue
11581164

11591165
if requested_is_absolute:

tests/test_workflow_analyzer.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,49 @@ def test_gguf_unet_loader_keeps_diffusion_badge_and_raw_folder_hint(self):
447447
self.assertEqual(["diffusion_models"], refs[0]["category_hints"])
448448
self.assertEqual(["model_gguf"], refs[0]["folder_key_hints"])
449449

450+
def test_gguf_loader_resolves_scanner_category_alias(self):
451+
with tempfile.TemporaryDirectory() as tmpdir:
452+
model_path = os.path.join(tmpdir, "flux1-fill-dev-Q4_K_S.gguf")
453+
with open(model_path, "wb"):
454+
pass
455+
456+
available_models = [
457+
{
458+
"filename": "flux1-fill-dev-Q4_K_S.gguf",
459+
"path": model_path,
460+
"relative_path": r"FLUX\FILL\flux1-fill-dev-Q4_K_S.gguf",
461+
"category": "model_gguf",
462+
"base_directory": tmpdir,
463+
}
464+
]
465+
workflow = {
466+
"nodes": [
467+
{
468+
"id": 346,
469+
"type": "LoaderGGUF",
470+
"widgets": [{"name": "gguf_name"}],
471+
"widgets_values": [
472+
r"FLUX\FILL\flux1-fill-dev-Q4_K_S.gguf"
473+
],
474+
"outputs": [{"type": "MODEL", "links": [1]}],
475+
}
476+
]
477+
}
478+
479+
with patch(
480+
"core.workflow_analyzer.get_dynamic_widget_category_hints",
481+
return_value=["model_gguf"],
482+
):
483+
refs = analyze_workflow_models(
484+
workflow,
485+
available_models=available_models,
486+
)
487+
488+
self.assertEqual(1, len(refs))
489+
self.assertTrue(refs[0]["exists"])
490+
self.assertEqual(model_path, refs[0]["full_path"])
491+
self.assertEqual("diffusion_models", refs[0]["category"])
492+
450493

451494
class ScannerFolderModelTests(unittest.TestCase):
452495
def test_diffusers_folder_models_are_scanned_as_folder_entries(self):

0 commit comments

Comments
 (0)