Refactor and enhance SnapForm functionality
- Introduced MODEL_NUMBERS for better model indexing. - Improved enum_items function to cache results and handle download status. - Updated ActiveJob class to manage temporary input paths and added displacement_via property. - Changed IMAGE_DEPTH_PROCESS_RES_METHOD from "lower_bound_resize" to "upper_bound_resize". - Enhanced RunJob operator to include new properties and improved error messages. - Modified panel layout for better user experience and added runtime installation checks. - Updated SnapFormSettings to reflect new model properties and defaults. - Added temporary input path management in runtime. - Refined worker functions to improve error handling and messaging. - Expanded tests to cover new functionality and ensure backward compatibility. - Fixed packaging script to align with versioning conventions.
This commit is contained in:
@@ -53,18 +53,62 @@ MODELS = {
|
||||
supports_gs=True,
|
||||
),
|
||||
}
|
||||
MODEL_NUMBERS = {
|
||||
model_key: number for number, model_key in enumerate(MODELS)
|
||||
}
|
||||
|
||||
|
||||
def enum_items(supports_gs=None):
|
||||
return [
|
||||
(
|
||||
model.key,
|
||||
model.label,
|
||||
f"{model.description}; license: {model.license_name}",
|
||||
)
|
||||
_ENUM_ITEMS_CACHE = {}
|
||||
|
||||
|
||||
def enum_items(supports_gs=None, show_download_status=False):
|
||||
model_ready = None
|
||||
if show_download_status:
|
||||
from .runtime import model_ready
|
||||
|
||||
models = [
|
||||
model
|
||||
for model in MODELS.values()
|
||||
if supports_gs is None or model.supports_gs == supports_gs
|
||||
]
|
||||
download_status = (
|
||||
tuple(model_ready(model.key) for model in models)
|
||||
if model_ready is not None
|
||||
else ()
|
||||
)
|
||||
cache_key = (
|
||||
supports_gs,
|
||||
show_download_status,
|
||||
download_status,
|
||||
)
|
||||
cached_items = _ENUM_ITEMS_CACHE.get(cache_key)
|
||||
if cached_items is not None:
|
||||
return cached_items
|
||||
|
||||
items = []
|
||||
for index, model in enumerate(models):
|
||||
label = model.label
|
||||
if download_status and not download_status[index]:
|
||||
label = f"{label} (Missing)"
|
||||
items.append(
|
||||
(
|
||||
model.key,
|
||||
label,
|
||||
f"{model.description}; license: {model.license_name}",
|
||||
MODEL_NUMBERS[model.key],
|
||||
)
|
||||
)
|
||||
|
||||
_ENUM_ITEMS_CACHE[cache_key] = items
|
||||
return items
|
||||
|
||||
|
||||
def model_enum_items(_owner, _context):
|
||||
return enum_items(show_download_status=True)
|
||||
|
||||
|
||||
def gs_model_enum_items(_owner, _context):
|
||||
return enum_items(supports_gs=True, show_download_status=True)
|
||||
|
||||
|
||||
def selected_model_key(settings, export_format=None):
|
||||
|
||||
Reference in New Issue
Block a user