diff --git a/comfy_api/internal/__init__.py b/comfy_api/internal/__init__.py index 7b53c639e..f62831068 100644 --- a/comfy_api/internal/__init__.py +++ b/comfy_api/internal/__init__.py @@ -1,6 +1,6 @@ class ComfyNodeInternal: - '''Class that all V3-based APIs inhertif from for ComfyNode. - - This is intended to only be referenced within execution.py, as it has to handle all V3 APIs going forward.''' + """Class that all V3-based APIs inherit from for ComfyNode. + + This is intended to only be referenced within execution.py, as it has to handle all V3 APIs going forward.""" ... diff --git a/comfy_api/v3/io.py b/comfy_api/v3/io.py index 7d2cc71f8..eac50330c 100644 --- a/comfy_api/v3/io.py +++ b/comfy_api/v3/io.py @@ -230,7 +230,7 @@ class OutputV3(IO_V3): self.display_name = display_name self.tooltip = tooltip self.is_output_list = is_output_list - + def as_dict_V3(self): return prune_dict({ "display_name": self.display_name, @@ -893,16 +893,16 @@ class MatchType(ComfyTypeIO): return super().as_dict_V1() | prune_dict({ "template": self.template.as_dict(), }) - + class Output(DynamicOutput): def __init__(self, id: str, template: MatchType.Template, display_name: str=None, tooltip: str=None, is_output_list=False): super().__init__(id, display_name, tooltip, is_output_list) self.template = template - + def get_dynamic(self) -> list[OutputV3]: return [self] - + def as_dict_V3(self): return super().as_dict_V3() | prune_dict({ "template": self.template.as_dict(), @@ -1155,7 +1155,7 @@ class ComfyNodeV3(ComfyNodeInternal): @classmethod @abstractmethod - def DEFINE_SCHEMA(cls) -> SchemaV3: + def define_schema(cls) -> SchemaV3: """Override this function with one that returns a SchemaV3 instance.""" raise NotImplementedError @@ -1207,8 +1207,8 @@ class ComfyNodeV3(ComfyNodeInternal): @classmethod def VALIDATE_CLASS(cls): - if not callable(cls.DEFINE_SCHEMA): - raise Exception(f"No DEFINE_SCHEMA function was defined for node class {cls.__name__}.") + if not callable(cls.define_schema): + raise Exception(f"No define_schema function was defined for node class {cls.__name__}.") if not callable(cls.execute): raise Exception(f"No execute function was defined for node class {cls.__name__}.") @@ -1350,8 +1350,8 @@ class ComfyNodeV3(ComfyNodeInternal): @classmethod def FINALIZE_SCHEMA(cls): - """Call DEFINE_SCHEMA and finalize it.""" - schema = cls.DEFINE_SCHEMA() + """Call define_schema and finalize it.""" + schema = cls.define_schema() schema.finalize() return schema @@ -1482,7 +1482,7 @@ class _UIOutput(ABC): class TestNode(ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return SchemaV3( node_id="TestNode_v3", display_name="Test Node (V3)", diff --git a/comfy_extras/nodes_v3_test.py b/comfy_extras/nodes_v3_test.py index 71a212e61..f536d7c14 100644 --- a/comfy_extras/nodes_v3_test.py +++ b/comfy_extras/nodes_v3_test.py @@ -27,7 +27,7 @@ class V3TestNode(io.ComfyNodeV3): self.hahajkunless = ";)" @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="V3_01_TestNode1", display_name="V3 Test Node", @@ -113,7 +113,7 @@ class V3TestNode(io.ComfyNodeV3): class V3LoraLoader(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="V3_LoraLoader", display_name="V3 LoRA Loader", @@ -163,7 +163,7 @@ class V3LoraLoader(io.ComfyNodeV3): class NInputsTest(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="V3_NInputsTest", display_name="V3 N Inputs Test", diff --git a/comfy_extras/v3/nodes_audio.py b/comfy_extras/v3/nodes_audio.py index 72c4b6c65..04cc3093a 100644 --- a/comfy_extras/v3/nodes_audio.py +++ b/comfy_extras/v3/nodes_audio.py @@ -18,7 +18,7 @@ from comfy_api.v3 import io, ui class ConditioningStableAudio_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="ConditioningStableAudio_V3", category="conditioning", @@ -48,7 +48,7 @@ class ConditioningStableAudio_V3(io.ComfyNodeV3): class EmptyLatentAudio_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="EmptyLatentAudio_V3", category="latent/audio", @@ -70,7 +70,7 @@ class EmptyLatentAudio_V3(io.ComfyNodeV3): class LoadAudio_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="LoadAudio_V3", # frontend expects "LoadAudio" to work display_name="Load Audio _V3", # frontend ignores "display_name" for this node @@ -108,7 +108,7 @@ class LoadAudio_V3(io.ComfyNodeV3): class PreviewAudio_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="PreviewAudio_V3", # frontend expects "PreviewAudio" to work display_name="Preview Audio _V3", # frontend ignores "display_name" for this node @@ -127,7 +127,7 @@ class PreviewAudio_V3(io.ComfyNodeV3): class SaveAudioMP3_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="SaveAudioMP3_V3", # frontend expects "SaveAudioMP3" to work display_name="Save Audio(MP3) _V3", # frontend ignores "display_name" for this node @@ -148,7 +148,7 @@ class SaveAudioMP3_V3(io.ComfyNodeV3): class SaveAudioOpus_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="SaveAudioOpus_V3", # frontend expects "SaveAudioOpus" to work display_name="Save Audio(Opus) _V3", # frontend ignores "display_name" for this node @@ -169,7 +169,7 @@ class SaveAudioOpus_V3(io.ComfyNodeV3): class SaveAudio_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="SaveAudio_V3", # frontend expects "SaveAudio" to work display_name="Save Audio _V3", # frontend ignores "display_name" for this node @@ -189,7 +189,7 @@ class SaveAudio_V3(io.ComfyNodeV3): class VAEDecodeAudio_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="VAEDecodeAudio_V3", category="latent/audio", @@ -211,7 +211,7 @@ class VAEDecodeAudio_V3(io.ComfyNodeV3): class VAEEncodeAudio_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="VAEEncodeAudio_V3", category="latent/audio", diff --git a/comfy_extras/v3/nodes_controlnet.py b/comfy_extras/v3/nodes_controlnet.py index 528acf0fe..9c378aabe 100644 --- a/comfy_extras/v3/nodes_controlnet.py +++ b/comfy_extras/v3/nodes_controlnet.py @@ -5,7 +5,7 @@ from comfy_api.v3 import io class ControlNetApplyAdvanced_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="ControlNetApplyAdvanced_V3", display_name="Apply ControlNet _V3", @@ -62,7 +62,7 @@ class ControlNetApplyAdvanced_V3(io.ComfyNodeV3): class SetUnionControlNetType_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="SetUnionControlNetType_V3", category="conditioning/controlnet", @@ -89,7 +89,7 @@ class SetUnionControlNetType_V3(io.ComfyNodeV3): class ControlNetInpaintingAliMamaApply_V3(ControlNetApplyAdvanced_V3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="ControlNetInpaintingAliMamaApply_V3", category="conditioning/controlnet", diff --git a/comfy_extras/v3/nodes_images.py b/comfy_extras/v3/nodes_images.py index ad89dde5e..297719e7c 100644 --- a/comfy_extras/v3/nodes_images.py +++ b/comfy_extras/v3/nodes_images.py @@ -18,7 +18,7 @@ from server import PromptServer class GetImageSize(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="GetImageSize_V3", display_name="Get Image Size _V3", @@ -51,7 +51,7 @@ class GetImageSize(io.ComfyNodeV3): class ImageAddNoise(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="ImageAddNoise_V3", display_name="Image Add Noise _V3", @@ -84,7 +84,7 @@ class ImageAddNoise(io.ComfyNodeV3): class ImageCrop(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="ImageCrop_V3", display_name="Image Crop _V3", @@ -110,7 +110,7 @@ class ImageCrop(io.ComfyNodeV3): class ImageFlip(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="ImageFlip_V3", display_name="Image Flip _V3", @@ -134,7 +134,7 @@ class ImageFlip(io.ComfyNodeV3): class ImageFromBatch(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="ImageFromBatch_V3", display_name="Image From Batch _V3", @@ -158,7 +158,7 @@ class ImageFromBatch(io.ComfyNodeV3): class ImageRotate(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="ImageRotate_V3", display_name="Image Rotate _V3", @@ -187,7 +187,7 @@ class ImageStitch(io.ComfyNodeV3): """Upstreamed from https://github.com/kijai/ComfyUI-KJNodes""" @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="ImageStitch_V3", display_name="Image Stitch _V3", @@ -355,7 +355,7 @@ class ImageStitch(io.ComfyNodeV3): class LoadImage(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="LoadImage_V3", display_name="Load Image _V3", @@ -443,7 +443,7 @@ class LoadImage(io.ComfyNodeV3): class LoadImageOutput(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="LoadImageOutput_V3", display_name="Load Image (from Outputs) _V3", @@ -532,7 +532,7 @@ class LoadImageOutput(io.ComfyNodeV3): class PreviewImage(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="PreviewImage_V3", display_name="Preview Image _V3", @@ -552,7 +552,7 @@ class PreviewImage(io.ComfyNodeV3): class RepeatImageBatch(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="RepeatImageBatch_V3", display_name="Repeat Image Batch _V3", @@ -571,7 +571,7 @@ class RepeatImageBatch(io.ComfyNodeV3): class ResizeAndPadImage(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="ResizeAndPadImage_V3", display_name="Resize and Pad Image _V3", @@ -616,7 +616,7 @@ class ResizeAndPadImage(io.ComfyNodeV3): class SaveAnimatedPNG(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="SaveAnimatedPNG_V3", display_name="Save Animated PNG _V3", @@ -681,7 +681,7 @@ class SaveAnimatedWEBP(io.ComfyNodeV3): COMPRESS_METHODS = {"default": 4, "fastest": 0, "slowest": 6} @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="SaveAnimatedWEBP_V3", display_name="Save Animated WEBP _V3", @@ -744,7 +744,7 @@ class SaveAnimatedWEBP(io.ComfyNodeV3): class SaveImage(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="SaveImage_V3", display_name="Save Image _V3", diff --git a/comfy_extras/v3/nodes_mask.py b/comfy_extras/v3/nodes_mask.py index 90cbb3b59..b7a200071 100644 --- a/comfy_extras/v3/nodes_mask.py +++ b/comfy_extras/v3/nodes_mask.py @@ -9,7 +9,7 @@ class MaskPreview_V3(io.ComfyNodeV3): """ @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="MaskPreview_V3", display_name="Preview Mask _V3", diff --git a/comfy_extras/v3/nodes_primitive.py b/comfy_extras/v3/nodes_primitive.py index debfa60d5..c453f0780 100644 --- a/comfy_extras/v3/nodes_primitive.py +++ b/comfy_extras/v3/nodes_primitive.py @@ -7,7 +7,7 @@ from comfy_api.v3 import io class String_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="PrimitiveString_V3", display_name="String _V3", @@ -25,7 +25,7 @@ class String_V3(io.ComfyNodeV3): class StringMultiline_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="PrimitiveStringMultiline_V3", display_name="String (Multiline) _V3", @@ -43,7 +43,7 @@ class StringMultiline_V3(io.ComfyNodeV3): class Int_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="PrimitiveInt_V3", display_name="Int _V3", @@ -61,7 +61,7 @@ class Int_V3(io.ComfyNodeV3): class Float_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="PrimitiveFloat_V3", display_name="Float _V3", @@ -79,7 +79,7 @@ class Float_V3(io.ComfyNodeV3): class Boolean_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="PrimitiveBoolean_V3", display_name="Boolean _V3", diff --git a/comfy_extras/v3/nodes_stable_cascade.py b/comfy_extras/v3/nodes_stable_cascade.py index 4693ad9eb..427f3fbb2 100644 --- a/comfy_extras/v3/nodes_stable_cascade.py +++ b/comfy_extras/v3/nodes_stable_cascade.py @@ -25,7 +25,7 @@ from comfy_api.v3 import io class StableCascade_EmptyLatentImage_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="StableCascade_EmptyLatentImage_V3", category="latent/stable_cascade", @@ -50,7 +50,7 @@ class StableCascade_EmptyLatentImage_V3(io.ComfyNodeV3): class StableCascade_StageC_VAEEncode_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="StableCascade_StageC_VAEEncode_V3", category="latent/stable_cascade", @@ -81,7 +81,7 @@ class StableCascade_StageC_VAEEncode_V3(io.ComfyNodeV3): class StableCascade_StageB_Conditioning_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="StableCascade_StageB_Conditioning_V3", category="conditioning/stable_cascade", @@ -107,7 +107,7 @@ class StableCascade_StageB_Conditioning_V3(io.ComfyNodeV3): class StableCascade_SuperResolutionControlnet_V3(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="StableCascade_SuperResolutionControlnet_V3", category="_for_testing/stable_cascade", diff --git a/comfy_extras/v3/nodes_webcam.py b/comfy_extras/v3/nodes_webcam.py index 6b65fa7d9..4823417e3 100644 --- a/comfy_extras/v3/nodes_webcam.py +++ b/comfy_extras/v3/nodes_webcam.py @@ -9,32 +9,18 @@ import node_helpers import nodes from comfy_api.v3 import io -MAX_RESOLUTION = nodes.MAX_RESOLUTION - -class WebcamCapture_V3(io.ComfyNodeV3): +class WebcamCapture(io.ComfyNodeV3): @classmethod - def DEFINE_SCHEMA(cls): + def define_schema(cls): return io.SchemaV3( node_id="WebcamCapture_V3", display_name="Webcam Capture _V3", category="image", inputs=[ io.Webcam.Input("image"), - io.Int.Input( - "width", - default=0, - min=0, - max=MAX_RESOLUTION, - step=1, - ), - io.Int.Input( - "height", - default=0, - min=0, - max=MAX_RESOLUTION, - step=1, - ), + io.Int.Input("width", default=0, min=0, max=nodes.MAX_RESOLUTION, step=1), + io.Int.Input("height", default=0, min=0, max=nodes.MAX_RESOLUTION, step=1), io.Boolean.Input("capture_on_queue", default=True), ], outputs=[ @@ -103,4 +89,4 @@ class WebcamCapture_V3(io.ComfyNodeV3): return True -NODES_LIST: list[type[io.ComfyNodeV3]] = [WebcamCapture_V3] +NODES_LIST: list[type[io.ComfyNodeV3]] = [WebcamCapture]