Merge branch 'dev' into RUF013

This commit is contained in:
awsr
2026-03-24 07:12:51 -07:00
committed by GitHub
66 changed files with 3643 additions and 3019 deletions
+2
View File
@@ -88,6 +88,7 @@ class Api:
self.add_api_route("/sdapi/v1/sd-vae", endpoints.get_sd_vaes, methods=["GET"], response_model=list[models.ItemVae])
self.add_api_route("/sdapi/v1/extensions", endpoints.get_extensions_list, methods=["GET"], response_model=list[models.ItemExtension])
self.add_api_route("/sdapi/v1/extra-networks", endpoints.get_extra_networks, methods=["GET"], response_model=list[models.ItemExtraNetwork])
self.add_api_route("/sdapi/v1/unets", endpoints.get_unets, methods=["GET"], response_model=list[models.ItemUNet])
# functional api
self.add_api_route("/sdapi/v1/png-info", endpoints.post_pnginfo, methods=["POST"], response_model=models.ResImageInfo, tags=["Functional"])
@@ -98,6 +99,7 @@ class Api:
self.add_api_route("/sdapi/v1/reload-checkpoint", endpoints.post_reload_checkpoint, methods=["POST"], tags=["Functional"])
self.add_api_route("/sdapi/v1/lock-checkpoint", endpoints.post_lock_checkpoint, methods=["POST"], tags=["Functional"])
self.add_api_route("/sdapi/v1/refresh-vae", endpoints.post_refresh_vae, methods=["POST"], tags=["Functional"])
self.add_api_route("/sdapi/v1/refresh-unets", endpoints.post_refresh_unets, methods=["POST"], tags=["Functional"])
self.add_api_route("/sdapi/v1/latents", endpoints.get_latent_history, methods=["GET"], response_model=list[str], tags=["Functional"])
self.add_api_route("/sdapi/v1/latents", endpoints.post_latent_history, methods=["POST"], response_model=int, tags=["Functional"])
self.add_api_route("/sdapi/v1/modules", endpoints.get_modules, methods=["GET"], tags=["Functional"])
+10 -1
View File
@@ -65,7 +65,6 @@ get_restorers = get_detailers # legacy alias for /sdapi/v1/face-restorers
def get_ip_adapters():
"""
List available IP-Adapter models.
Returns adapter names that can be used for image-prompt conditioning during generation.
"""
from modules import ipadapter
@@ -75,6 +74,11 @@ def get_prompt_styles():
"""List all saved prompt styles with their prompt, negative prompt, and preview."""
return [{ 'name': v.name, 'prompt': v.prompt, 'negative_prompt': v.negative_prompt, 'extra': v.extra, 'filename': v.filename, 'preview': v.preview} for v in shared.prompt_styles.styles.values()]
def get_unets():
"""List available UNet models with their names and filenames."""
from modules.sd_unet import unet_dict
return [{"name": k, "filename": v} for k, v in unet_dict.items()]
def get_embeddings():
"""List loaded and skipped textual-inversion embeddings for the current model."""
db = getattr(shared.sd_model, 'embedding_db', None) if shared.sd_loaded else None
@@ -221,6 +225,11 @@ def post_lock_checkpoint(lock:bool=False):
modeldata.model_data.locked = lock
return {}
def post_refresh_unets():
"""Rescan UNet directories and update the available UNet list."""
import modules.sd_unet
return modules.sd_unet.refresh_unet_list()
def get_checkpoint():
"""Return information about the currently loaded checkpoint including type, class, title, and hash."""
if not shared.sd_loaded or shared.sd_model is None:
+4
View File
@@ -146,6 +146,10 @@ class ItemStyle(BaseModel):
filename: str | None = Field(title="Filename", description="Path to the styles file")
preview: str | None = Field(title="Preview", description="URL to the style preview image")
class ItemUNet(BaseModel):
name: str = Field(title="Name", description="UNet/DiT name")
filename: str | None = Field(title="Filename", description="Path to the UNet/DiT file")
class ItemExtraNetwork(BaseModel):
name: str = Field(title="Name", description="Network short name")
type: str = Field(title="Type", description="Network type (lora, checkpoint, embedding, etc.)")