d3d846f748
Tres funciones para gestionar y ampliar el repositorio de estilos del selector
WAS de ComfyUI (Prompt Styles Selector / Prompt Multiple Styles Selector):
- comfyui_curated_styles_catalog (pure): catálogo curado de 190 estilos en 13
categorías (photography, render3d, painting, anime, pixel, illustration,
comic, lighting, camera, material, scifi, fantasy, mood), formato WAS exacto.
- comfyui_append_styles (impure): merge+dedup no destructivo sobre el styles.json
real, con backup atómico, validación de entradas y preservación de existentes.
- comfyui_generate_styles_llm (impure): genera estilos de una categoría vía
ask_llm (grupo claude-direct); robusta (devuelve {} ante 429/JSON corrupto).
Aplicado en vivo: styles.json 269 -> 503 estilos (+190 curados +44 LLM),
backup hecho, selector verifica 503 en /object_info. Tests offline verdes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
5.2 KiB
5.2 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params | output | tested | tests | test_file_path | file_path | |||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| comfyui_append_styles | function | py | ml | 1.0.0 | impure | def comfyui_append_styles(new_styles: dict, styles_path: str = DEFAULT_STYLES_PATH, overwrite: bool = False, backup: bool = True, dry_run: bool = False) -> dict | Fusiona (merge+dedup) un dict de estilos nuevos sobre el styles.json del selector WAS de ComfyUI (Prompt Styles Selector / Prompt Multiple Styles Selector) de forma SEGURA y NO destructiva. Preserva TODOS los estilos existentes (dedup por nombre; los existentes ganan salvo overwrite=True), hace backup con timestamp antes de escribir, valida cada entrada nueva (descarta las que no tengan prompt no vacio, rellena negative_prompt por defecto si falta) y escribe de forma atomica (.tmp + os.replace). Devuelve un resumen con conteos antes/despues, anadidos, duplicados saltados e invalidos para verificar el efecto sin releer el archivo. Impura: lee y escribe disco; no usa red, no borra el original. |
|
false | error_go_core |
|
dict resumen: {styles_path, backup_path, total_before, total_after, added:[nombres], overwritten:[nombres], skipped_existing:[nombres], invalid:[nombres], dry_run:bool}. | true |
|
python/functions/ml/comfyui_append_styles_test.py | python/functions/ml/comfyui_append_styles.py |
Ejemplo
import sys, os
sys.path.insert(0, os.path.join(os.environ["HOME"], "fn_registry", "python", "functions"))
from ml.comfyui_append_styles import comfyui_append_styles
from ml.comfyui_curated_styles_catalog import comfyui_curated_styles_catalog
# Fusionar el catalogo curado sobre el styles.json real, preservando los existentes.
nuevos = comfyui_curated_styles_catalog() # 190 estilos curados
res = comfyui_append_styles(nuevos) # backup + merge + dedup + escritura atomica
print(res["total_before"], "->", res["total_after"], "anadidos:", len(res["added"]))
# 269 -> 459 anadidos: 190 (los duplicados por nombre quedan en skipped_existing)
# Previsualizar sin escribir:
print(comfyui_append_styles(nuevos, dry_run=True)["total_after"])
O por CLI: echo '{"x":{"prompt":"neon glow"}}' | python/.venv/bin/python3 python/functions/ml/comfyui_append_styles.py --dry-run
Cuando usarla
Cuando quieras AMPLIAR el repositorio de estilos del selector WAS de ComfyUI sin perder los que
ya hay. Es el paso de escritura del flujo "generar estilos -> fusionar": genera un dict de estilos
(con comfyui_curated_styles_catalog y/o comfyui_generate_styles_llm), pasalo aqui y el archivo
queda fusionado con backup. Usala SIEMPRE en vez de editar el JSON a mano (preserva los existentes,
valida formato, hace backup atomico). Tras escribir, reinicia comfyui.service para que el
selector recargue el catalogo.
Gotchas
- Reinicio necesario: el nodo WAS lee styles.json al arrancar. Despues de fusionar hay que
systemctl --user restart comfyui.service(o reiniciar el server) para que el selector liste los nuevos. Verifica conGET /object_infocontando los enum delPrompt Styles Selector. - dedup por NOMBRE, no por contenido: dos estilos con el mismo nombre se consideran el mismo;
por defecto gana el existente. Si quieres reemplazar deliberadamente, pasa
overwrite=True. - El archivo debe existir: no se crea de cero (FileNotFoundError) para no enmascarar una
instalacion WAS rota. Si lo necesitas vacio, crea
{}a mano primero. - Backups se acumulan: cada escritura deja un
styles.json.bak.<epoch>. Limpialos a mano si molestan; son la red de seguridad para restaurar. - No versionar: el styles.json es de ComfyUI, no de fn_registry. No hacer
git addde el.
Capability growth log
(v1.0.0 — sin cambios todavia.)