From 61c5a00296361bce691fae5a2dcee89ece401785 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Tue, 17 Mar 2026 20:30:32 -0400 Subject: [PATCH 1/2] Added support for Exactly --- modules/imageInferenceInputs.py | 50 +++++++++++++------ .../Runware_Image_Inference_Exactly.json | 1 + 2 files changed, 35 insertions(+), 16 deletions(-) create mode 100644 workflows/Runware_Image_Inference_Exactly.json diff --git a/modules/imageInferenceInputs.py b/modules/imageInferenceInputs.py index 710e805..2b36577 100644 --- a/modules/imageInferenceInputs.py +++ b/modules/imageInferenceInputs.py @@ -27,6 +27,17 @@ def INPUT_TYPES(cls): "tooltip": f"Optional tag describing {ordinal.capitalize()} Reference Image. Leave empty to omit.", "default": "", }) + optionalInputs[f"Reference Type {i}"] = ("STRING", { + "tooltip": f"Optional type for {ordinal} reference, e.g. 'sketch' for illustrious style models. Leave empty to omit.", + "default": "", + }) + optionalInputs[f"Reference Strength {i}"] = ("FLOAT", { + "tooltip": f"Strength (0-1) for sketch reference. Only used when Reference Type is 'sketch'.", + "default": 0.0, + "min": 0.0, + "max": 1.0, + "step": 0.1, + }) for i in range(1, cls.MAX_SUPER_RESOLUTION_REFERENCE_IMAGES + 1): ordinal = rwUtils.getOrdinal(i) @@ -39,7 +50,7 @@ def INPUT_TYPES(cls): "optional": optionalInputs } - DESCRIPTION = "Configure custom inputs for Runware Image Inference, including reference images that can be passed to the inference node." + DESCRIPTION = "Configure custom inputs for Runware Image Inference, including reference images (with optional type e.g. 'sketch' for illustrious style models, and strength 0-1 for sketch) that can be passed to the inference node." FUNCTION = "createInputs" RETURN_TYPES = ("RUNWAREIMAGEINFERENCEINPUTS",) RETURN_NAMES = ("Inference Inputs",) @@ -68,37 +79,44 @@ def createInputs(self, **kwargs): return (inputs,) def _collectReferences(self, kwargs): - """Collect and convert reference images to list""" - referencePairs = [] - - # Collect all reference image and tag pairs + """Collect and convert reference images to list. Each entry may include type (e.g. 'sketch') and strength (0-1, only for sketch).""" + referenceSlots = [] + for i in range(1, self.MAX_REFERENCE_IMAGES + 1): image = kwargs.get(f"Reference Image {i}", None) tag = kwargs.get(f"Reference Tag {i}", "") + ref_type = kwargs.get(f"Reference Type {i}", "") + strength = kwargs.get(f"Reference Strength {i}", 0.0) if image is not None: - referencePairs.append((image, tag)) - - if not referencePairs: + referenceSlots.append((image, tag, ref_type, strength)) + + if not referenceSlots: return [] - - # Determine if any tag is provided - hasTags = any( + + has_tags = any( isinstance(tag, str) and tag.strip() != "" - for _, tag in referencePairs + for _, tag, _, _ in referenceSlots + ) + has_type = any( + isinstance(rt, str) and rt.strip() != "" + for _, _, rt, _ in referenceSlots ) - if not hasTags: - # Use legacy behavior: simple list of images + if not has_tags and not has_type: return [ rwUtils.convertTensor2IMG(image) - for image, _ in referencePairs + for image, _, _, _ in referenceSlots ] references = [] - for image, tag in referencePairs: + for image, tag, ref_type, strength in referenceSlots: entry = {"image": rwUtils.convertTensor2IMG(image)} if isinstance(tag, str) and tag.strip() != "": entry["tag"] = tag.strip() + if isinstance(ref_type, str) and ref_type.strip() != "": + entry["type"] = ref_type.strip() + if ref_type.strip().lower() == "sketch": + entry["strength"] = max(0.0, min(1.0, float(strength))) references.append(entry) return references diff --git a/workflows/Runware_Image_Inference_Exactly.json b/workflows/Runware_Image_Inference_Exactly.json new file mode 100644 index 0000000..16bd8d9 --- /dev/null +++ b/workflows/Runware_Image_Inference_Exactly.json @@ -0,0 +1 @@ +{"id":"5bf78e79-3da6-42a6-8384-2cbaa6dbd06d","revision":0,"last_node_id":6,"last_link_id":7,"nodes":[{"id":6,"type":"Runware Image Inference Inputs","pos":[401.9212951660156,631.5524291992188],"size":[388.505859375,1442],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"image","name":"image","shape":7,"type":"IMAGE","link":null},{"localized_name":"mask","name":"mask","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 1","name":"Reference Image 1","shape":7,"type":"IMAGE","link":7},{"localized_name":"Reference Image 2","name":"Reference Image 2","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 3","name":"Reference Image 3","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 4","name":"Reference Image 4","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 5","name":"Reference Image 5","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 6","name":"Reference Image 6","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 7","name":"Reference Image 7","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 8","name":"Reference Image 8","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 9","name":"Reference Image 9","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 10","name":"Reference Image 10","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 11","name":"Reference Image 11","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 12","name":"Reference Image 12","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 13","name":"Reference Image 13","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 14","name":"Reference Image 14","shape":7,"type":"IMAGE","link":null},{"localized_name":"Super Resolution Reference Image 1","name":"Super Resolution Reference Image 1","shape":7,"type":"IMAGE","link":null},{"localized_name":"Super Resolution Reference Image 2","name":"Super Resolution Reference Image 2","shape":7,"type":"IMAGE","link":null},{"localized_name":"Super Resolution Reference Image 3","name":"Super Resolution Reference Image 3","shape":7,"type":"IMAGE","link":null},{"localized_name":"Super Resolution Reference Image 4","name":"Super Resolution Reference Image 4","shape":7,"type":"IMAGE","link":null},{"localized_name":"Super Resolution Reference Image 5","name":"Super Resolution Reference Image 5","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Tag 1","name":"Reference Tag 1","shape":7,"type":"STRING","widget":{"name":"Reference Tag 1"},"link":null},{"localized_name":"Reference Type 1","name":"Reference Type 1","shape":7,"type":"STRING","widget":{"name":"Reference Type 1"},"link":null},{"localized_name":"Reference Strength 1","name":"Reference Strength 1","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 1"},"link":null},{"localized_name":"Reference Tag 2","name":"Reference Tag 2","shape":7,"type":"STRING","widget":{"name":"Reference Tag 2"},"link":null},{"localized_name":"Reference Type 2","name":"Reference Type 2","shape":7,"type":"STRING","widget":{"name":"Reference Type 2"},"link":null},{"localized_name":"Reference Strength 2","name":"Reference Strength 2","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 2"},"link":null},{"localized_name":"Reference Tag 3","name":"Reference Tag 3","shape":7,"type":"STRING","widget":{"name":"Reference Tag 3"},"link":null},{"localized_name":"Reference Type 3","name":"Reference Type 3","shape":7,"type":"STRING","widget":{"name":"Reference Type 3"},"link":null},{"localized_name":"Reference Strength 3","name":"Reference Strength 3","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 3"},"link":null},{"localized_name":"Reference Tag 4","name":"Reference Tag 4","shape":7,"type":"STRING","widget":{"name":"Reference Tag 4"},"link":null},{"localized_name":"Reference Type 4","name":"Reference Type 4","shape":7,"type":"STRING","widget":{"name":"Reference Type 4"},"link":null},{"localized_name":"Reference Strength 4","name":"Reference Strength 4","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 4"},"link":null},{"localized_name":"Reference Tag 5","name":"Reference Tag 5","shape":7,"type":"STRING","widget":{"name":"Reference Tag 5"},"link":null},{"localized_name":"Reference Type 5","name":"Reference Type 5","shape":7,"type":"STRING","widget":{"name":"Reference Type 5"},"link":null},{"localized_name":"Reference Strength 5","name":"Reference Strength 5","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 5"},"link":null},{"localized_name":"Reference Tag 6","name":"Reference Tag 6","shape":7,"type":"STRING","widget":{"name":"Reference Tag 6"},"link":null},{"localized_name":"Reference Type 6","name":"Reference Type 6","shape":7,"type":"STRING","widget":{"name":"Reference Type 6"},"link":null},{"localized_name":"Reference Strength 6","name":"Reference Strength 6","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 6"},"link":null},{"localized_name":"Reference Tag 7","name":"Reference Tag 7","shape":7,"type":"STRING","widget":{"name":"Reference Tag 7"},"link":null},{"localized_name":"Reference Type 7","name":"Reference Type 7","shape":7,"type":"STRING","widget":{"name":"Reference Type 7"},"link":null},{"localized_name":"Reference Strength 7","name":"Reference Strength 7","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 7"},"link":null},{"localized_name":"Reference Tag 8","name":"Reference Tag 8","shape":7,"type":"STRING","widget":{"name":"Reference Tag 8"},"link":null},{"localized_name":"Reference Type 8","name":"Reference Type 8","shape":7,"type":"STRING","widget":{"name":"Reference Type 8"},"link":null},{"localized_name":"Reference Strength 8","name":"Reference Strength 8","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 8"},"link":null},{"localized_name":"Reference Tag 9","name":"Reference Tag 9","shape":7,"type":"STRING","widget":{"name":"Reference Tag 9"},"link":null},{"localized_name":"Reference Type 9","name":"Reference Type 9","shape":7,"type":"STRING","widget":{"name":"Reference Type 9"},"link":null},{"localized_name":"Reference Strength 9","name":"Reference Strength 9","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 9"},"link":null},{"localized_name":"Reference Tag 10","name":"Reference Tag 10","shape":7,"type":"STRING","widget":{"name":"Reference Tag 10"},"link":null},{"localized_name":"Reference Type 10","name":"Reference Type 10","shape":7,"type":"STRING","widget":{"name":"Reference Type 10"},"link":null},{"localized_name":"Reference Strength 10","name":"Reference Strength 10","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 10"},"link":null},{"localized_name":"Reference Tag 11","name":"Reference Tag 11","shape":7,"type":"STRING","widget":{"name":"Reference Tag 11"},"link":null},{"localized_name":"Reference Type 11","name":"Reference Type 11","shape":7,"type":"STRING","widget":{"name":"Reference Type 11"},"link":null},{"localized_name":"Reference Strength 11","name":"Reference Strength 11","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 11"},"link":null},{"localized_name":"Reference Tag 12","name":"Reference Tag 12","shape":7,"type":"STRING","widget":{"name":"Reference Tag 12"},"link":null},{"localized_name":"Reference Type 12","name":"Reference Type 12","shape":7,"type":"STRING","widget":{"name":"Reference Type 12"},"link":null},{"localized_name":"Reference Strength 12","name":"Reference Strength 12","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 12"},"link":null},{"localized_name":"Reference Tag 13","name":"Reference Tag 13","shape":7,"type":"STRING","widget":{"name":"Reference Tag 13"},"link":null},{"localized_name":"Reference Type 13","name":"Reference Type 13","shape":7,"type":"STRING","widget":{"name":"Reference Type 13"},"link":null},{"localized_name":"Reference Strength 13","name":"Reference Strength 13","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 13"},"link":null},{"localized_name":"Reference Tag 14","name":"Reference Tag 14","shape":7,"type":"STRING","widget":{"name":"Reference Tag 14"},"link":null},{"localized_name":"Reference Type 14","name":"Reference Type 14","shape":7,"type":"STRING","widget":{"name":"Reference Type 14"},"link":null},{"localized_name":"Reference Strength 14","name":"Reference Strength 14","shape":7,"type":"FLOAT","widget":{"name":"Reference Strength 14"},"link":null}],"outputs":[{"localized_name":"Inference Inputs","name":"Inference Inputs","type":"RUNWAREIMAGEINFERENCEINPUTS","links":[6]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"0c61bb1662e10f95c112bd4b349b11ce9fcd3eab","Node name for S&R":"Runware Image Inference Inputs"},"widgets_values":["","reference",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0,"","",0],"bgcolor":"#5345bf"},{"id":5,"type":"LoadImage","pos":[74.2012710571289,481.1651916503906],"size":[274.080078125,314.0000305175781],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[7]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["human2.jpg","image"]},{"id":3,"type":"Runware Save Image","pos":[1299.94970703125,470.3695068359375],"size":[270,318.0000305175781],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"Images","name":"Images","type":"STRING","widget":{"name":"Images"},"link":2},{"localized_name":"filenamePrefix","name":"filenamePrefix","type":"STRING","widget":{"name":"filenamePrefix"},"link":null},{"localized_name":"saveImage","name":"saveImage","type":"BOOLEAN","widget":{"name":"saveImage"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"0c61bb1662e10f95c112bd4b349b11ce9fcd3eab","Node name for S&R":"Runware Save Image"},"widgets_values":["","ComfyUI",true],"bgcolor":"#5345bf"},{"id":1,"type":"Runware Image Inference","pos":[829.9067993164062,425.285400390625],"size":[400,1058],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":3},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREIMAGEINFERENCEINPUTS","link":6},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":null},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":null},{"localized_name":"settings","name":"settings","shape":7,"type":"RUNWARESETTINGS","link":null},{"localized_name":"ultralytics","name":"ultralytics","shape":7,"type":"RUNWAREULTRALYTICSINPUTS","link":null},{"localized_name":"advancedFeatures","name":"advancedFeatures","shape":7,"type":"RUNWAREIMAGEINFERENCEADVANCEDFEATURES","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useResolution","name":"useResolution","type":"BOOLEAN","widget":{"name":"useResolution"},"link":null},{"localized_name":"resolution","name":"resolution","type":"COMBO","widget":{"name":"resolution"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useScheduler","name":"useScheduler","type":"BOOLEAN","widget":{"name":"useScheduler"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"useCFGScale","name":"useCFGScale","type":"BOOLEAN","widget":{"name":"useCFGScale"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useClipSkip","name":"useClipSkip","type":"BOOLEAN","widget":{"name":"useClipSkip"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"STRING","links":[2]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"0c61bb1662e10f95c112bd4b349b11ce9fcd3eab","Node name for S&R":"Runware Image Inference"},"widgets_values":["Moody comic-book style portrait of a woman with strong shadows and saturated colors on a dark background.","",false,"Disabled","Square HD (1024x1024)",1024,1024,false,"1k",false,4,false,"Default",false,6.5,false,1503776222,"randomize",true,0,0.8,false,32,"WEBP",1,"none"],"bgcolor":"#5345bf"},{"id":4,"type":"Runware Model Search","pos":[420.1650695800781,416.2917785644531],"size":[270,154],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","links":[3]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"0c61bb1662e10f95c112bd4b349b11ce9fcd3eab","Node name for S&R":"Runware Model Search"},"widgets_values":["exactly:illustrative@earthy-elegance","All","Base Model","runware:100@1 (Flux Schnell)",true],"bgcolor":"#5345bf"}],"links":[[2,1,0,3,0,"STRING"],[3,4,0,1,0,"RUNWAREMODEL"],[6,6,0,1,12,"RUNWAREIMAGEINFERENCEINPUTS"],[7,5,0,6,2,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6830134553650705,"offset":[145.19675754625615,-375.96482249901925]}},"version":0.4} \ No newline at end of file From 4d80715daed1adb6c5df22be31e7caced6a8cee8 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Tue, 17 Mar 2026 20:48:17 -0400 Subject: [PATCH 2/2] Fixed naming --- modules/imageInferenceInputs.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/imageInferenceInputs.py b/modules/imageInferenceInputs.py index 2b36577..0a4ff6f 100644 --- a/modules/imageInferenceInputs.py +++ b/modules/imageInferenceInputs.py @@ -28,7 +28,7 @@ def INPUT_TYPES(cls): "default": "", }) optionalInputs[f"Reference Type {i}"] = ("STRING", { - "tooltip": f"Optional type for {ordinal} reference, e.g. 'sketch' for illustrious style models. Leave empty to omit.", + "tooltip": f"Optional type for {ordinal} reference, e.g. 'sketch' for illustrative style models. Leave empty to omit.", "default": "", }) optionalInputs[f"Reference Strength {i}"] = ("FLOAT", { @@ -50,7 +50,7 @@ def INPUT_TYPES(cls): "optional": optionalInputs } - DESCRIPTION = "Configure custom inputs for Runware Image Inference, including reference images (with optional type e.g. 'sketch' for illustrious style models, and strength 0-1 for sketch) that can be passed to the inference node." + DESCRIPTION = "Configure custom inputs for Runware Image Inference, including reference images (with optional type e.g. 'sketch' for illustrative style models, and strength 0-1 for sketch) that can be passed to the inference node." FUNCTION = "createInputs" RETURN_TYPES = ("RUNWAREIMAGEINFERENCEINPUTS",) RETURN_NAMES = ("Inference Inputs",) @@ -80,7 +80,7 @@ def createInputs(self, **kwargs): def _collectReferences(self, kwargs): """Collect and convert reference images to list. Each entry may include type (e.g. 'sketch') and strength (0-1, only for sketch).""" - referenceSlots = [] + reference_slots = [] for i in range(1, self.MAX_REFERENCE_IMAGES + 1): image = kwargs.get(f"Reference Image {i}", None) @@ -88,28 +88,28 @@ def _collectReferences(self, kwargs): ref_type = kwargs.get(f"Reference Type {i}", "") strength = kwargs.get(f"Reference Strength {i}", 0.0) if image is not None: - referenceSlots.append((image, tag, ref_type, strength)) + reference_slots.append((image, tag, ref_type, strength)) - if not referenceSlots: + if not reference_slots: return [] has_tags = any( isinstance(tag, str) and tag.strip() != "" - for _, tag, _, _ in referenceSlots + for _, tag, _, _ in reference_slots ) has_type = any( isinstance(rt, str) and rt.strip() != "" - for _, _, rt, _ in referenceSlots + for _, _, rt, _ in reference_slots ) if not has_tags and not has_type: return [ rwUtils.convertTensor2IMG(image) - for image, _, _, _ in referenceSlots + for image, _, _, _ in reference_slots ] references = [] - for image, tag, ref_type, strength in referenceSlots: + for image, tag, ref_type, strength in reference_slots: entry = {"image": rwUtils.convertTensor2IMG(image)} if isinstance(tag, str) and tag.strip() != "": entry["tag"] = tag.strip()