mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-25 23:25:43 -03:00
fix(metadata_hook): correct function signature to fix bound method error
Fix issue #866 where the metadata hook's async wrapper used *args/**kwargs which caused AttributeError when ComfyUI's make_locked_method_func tried to access __func__ on the func parameter. The async_map_node_over_list_with_metadata wrapper now uses the exact same signature as ComfyUI's _async_map_node_over_list: - Removed: *args, **kwargs - Added: explicit v3_data=None parameter This ensures the func parameter (always a string like obj.FUNCTION) is passed correctly to make_locked_method_func without any type conversion. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -149,9 +149,12 @@ class MetadataHook:
|
|||||||
# Store the original _async_map_node_over_list function
|
# Store the original _async_map_node_over_list function
|
||||||
original_map_node_over_list = getattr(execution, map_node_func_name)
|
original_map_node_over_list = getattr(execution, map_node_func_name)
|
||||||
|
|
||||||
# Wrapped async function, compatible with both stable and nightly
|
# Wrapped async function - signature must exactly match _async_map_node_over_list
|
||||||
async def async_map_node_over_list_with_metadata(prompt_id, unique_id, obj, input_data_all, func, allow_interrupt=False, execution_block_cb=None, pre_execute_cb=None, *args, **kwargs):
|
async def async_map_node_over_list_with_metadata(
|
||||||
hidden_inputs = kwargs.get('hidden_inputs', None)
|
prompt_id, unique_id, obj, input_data_all, func,
|
||||||
|
allow_interrupt=False, execution_block_cb=None,
|
||||||
|
pre_execute_cb=None, v3_data=None
|
||||||
|
):
|
||||||
# Only collect metadata when calling the main function of nodes
|
# Only collect metadata when calling the main function of nodes
|
||||||
if func == obj.FUNCTION and hasattr(obj, '__class__'):
|
if func == obj.FUNCTION and hasattr(obj, '__class__'):
|
||||||
try:
|
try:
|
||||||
@@ -164,10 +167,10 @@ class MetadataHook:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error collecting metadata (pre-execution): {str(e)}")
|
logger.error(f"Error collecting metadata (pre-execution): {str(e)}")
|
||||||
|
|
||||||
# Call original function with all args/kwargs
|
# Call original function with exact parameters
|
||||||
results = await original_map_node_over_list(
|
results = await original_map_node_over_list(
|
||||||
prompt_id, unique_id, obj, input_data_all, func,
|
prompt_id, unique_id, obj, input_data_all, func,
|
||||||
allow_interrupt, execution_block_cb, pre_execute_cb, *args, **kwargs
|
allow_interrupt, execution_block_cb, pre_execute_cb, v3_data=v3_data
|
||||||
)
|
)
|
||||||
|
|
||||||
if func == obj.FUNCTION and hasattr(obj, '__class__'):
|
if func == obj.FUNCTION and hasattr(obj, '__class__'):
|
||||||
|
|||||||
Reference in New Issue
Block a user