""" Central utilities module for SageUtils nodes. This module provides explicit imports that replace wildcard imports in nodes. """ from .logger import get_logger from .type_utils import ( str_to_bool, bool_to_str, ) from .file_utils import ( name_from_path, get_path_without_base, get_file_extension, get_files_in_dir, get_file_sha256, last_used, days_since_last_used, get_file_modification_date, ) from .model_metadata import ( update_cache_from_civitai_json, update_cache_without_civitai_json, add_file_to_cache, recheck_hash, update_model_timestamp, pull_and_update_model_timestamp, pull_metadata, ) from .lora_utils import ( lora_to_string, lora_to_prompt, get_lora_hash, ) from .model_discovery import ( model_scan, get_model_list, ) from .prompt_utils import ( clean_keywords, clean_text, clean_if_needed, condition_text, get_save_file_path, unwrap_tuple ) # Image utilities from .helpers_image import ( blank_image, url_to_torch_image, tensor_to_base64, tensor_to_temp_image, load_image_from_path, load_image_from_url, vae_decode, vae_decode_tiled, load_upscaler, upscale_with_model, calc_padding, image_manipulate, resize_needed ) # CivitAI utilities from .helpers_civitai import ( get_civitai_model_version_json_by_hash, get_civitai_model_version_json_by_id, get_civitai_model_json, get_model_dict, get_latest_model_version, pull_lora_image_urls, civitai_sampler_name ) from .helpers_graph import ( add_ckpt_node, add_unet_node, add_clip_node, add_vae_node, create_model_shift_nodes, create_lora_nodes, create_lora_shift_nodes, add_lora_stack_node, create_model_loader_nodes ) # LoRA utilities from .lora_stack import ( get_lora_keywords, get_lora_stack_keywords, add_lora_to_stack ) logger = get_logger('utils.common') # Model info utilities - import function directly to avoid circular dependency def get_model_types(model_info): """Determine which model types are present in model_info.""" model_types = [] if not isinstance(model_info, tuple): model_info = (model_info,) for info in model_info: logger.debug(f"Checking model info: {info}") if isinstance(info, dict) and "type" in info: logger.debug(f"Model type found: {info['type']}") model_types.append(info["type"]) return model_types # Path and file management from .path_manager import path_manager, file_manager # Model cache from .model_cache import cache # Configuration management from . import config_manager # Convenience paths from sage_utils from .sage_utils import ( sage_users_path, sage_backup_path, sage_wildcard_path, sage_notes_path, assets_path, get_user_path, get_asset_path, get_backup_path, get_notes_path, get_wildcard_path, load_json, save_json, ensure_config_file ) # LLM service from .llm import service as llm __all__ = [ # Helper functions 'str_to_bool', 'bool_to_str', 'name_from_path', 'get_path_without_base', 'get_file_extension', 'get_file_sha256', 'get_files_in_dir', 'last_used', 'days_since_last_used', 'get_file_modification_date', 'update_cache_from_civitai_json', 'update_cache_without_civitai_json', 'add_file_to_cache', 'recheck_hash', 'pull_metadata', 'update_model_timestamp', 'pull_and_update_model_timestamp', 'lora_to_string', 'lora_to_prompt', 'get_lora_hash', 'model_scan', 'get_model_list', 'clean_keywords', 'clean_text', 'clean_if_needed', 'condition_text', 'get_save_file_path', 'unwrap_tuple', # Image utilities 'blank_image', 'url_to_torch_image', 'tensor_to_base64', 'tensor_to_temp_image', 'load_image_from_path', 'load_image_from_url', 'vae_decode', 'vae_decode_tiled', 'load_upscaler', 'upscale_with_model', 'calc_padding', 'image_manipulate', 'resize_needed', # CivitAI utilities 'get_civitai_model_version_json_by_hash', 'get_civitai_model_version_json_by_id', 'get_civitai_model_json', 'get_model_dict', 'get_latest_model_version', 'pull_lora_image_urls', 'civitai_sampler_name', # Graph utilities 'add_ckpt_node', 'add_unet_node', 'add_clip_node', 'add_vae_node', 'create_lora_nodes', 'create_lora_shift_nodes', 'create_model_shift_nodes', 'add_lora_stack_node', 'create_model_loader_nodes', # LoRA utilities 'get_lora_keywords', 'get_lora_stack_keywords', 'add_lora_to_stack', # Core objects 'path_manager', 'file_manager', 'cache', 'config_manager', 'llm', # Path utilities 'sage_users_path', 'sage_backup_path', 'sage_wildcard_path', 'sage_notes_path', 'assets_path', 'get_user_path', 'get_asset_path', 'get_backup_path', 'get_notes_path', 'get_wildcard_path', 'load_json', 'save_json', 'ensure_config_file' ]