Renamed SchemaV3 to Schema

This commit is contained in:
Jedrzej Kosinski 2025-07-23 14:55:53 -07:00
parent a9f5554342
commit b0f73174b2
48 changed files with 181 additions and 181 deletions

View File

@ -932,7 +932,7 @@ class NodeInfoV3:
@dataclass @dataclass
class SchemaV3: class Schema:
"""Definition of V3 node properties.""" """Definition of V3 node properties."""
node_id: str node_id: str
@ -1128,8 +1128,8 @@ class _ComfyNodeBaseInternal(ComfyNodeInternal):
@classmethod @classmethod
@abstractmethod @abstractmethod
def define_schema(cls) -> SchemaV3: def define_schema(cls) -> Schema:
"""Override this function with one that returns a SchemaV3 instance.""" """Override this function with one that returns a Schema instance."""
raise NotImplementedError raise NotImplementedError
@classmethod @classmethod
@ -1344,7 +1344,7 @@ class _ComfyNodeBaseInternal(ComfyNodeInternal):
@final @final
@classmethod @classmethod
def INPUT_TYPES(cls, include_hidden=True, return_schema=False) -> dict[str, dict] | tuple[dict[str, dict], SchemaV3]: def INPUT_TYPES(cls, include_hidden=True, return_schema=False) -> dict[str, dict] | tuple[dict[str, dict], Schema]:
schema = cls.FINALIZE_SCHEMA() schema = cls.FINALIZE_SCHEMA()
info = schema.get_v1_info(cls) info = schema.get_v1_info(cls)
input = info.input input = info.input
@ -1364,7 +1364,7 @@ class _ComfyNodeBaseInternal(ComfyNodeInternal):
@final @final
@classmethod @classmethod
def GET_SCHEMA(cls) -> SchemaV3: def GET_SCHEMA(cls) -> Schema:
"""Validate node class, finalize schema, validate schema, and set expected class properties.""" """Validate node class, finalize schema, validate schema, and set expected class properties."""
cls.VALIDATE_CLASS() cls.VALIDATE_CLASS()
schema = cls.FINALIZE_SCHEMA() schema = cls.FINALIZE_SCHEMA()
@ -1413,8 +1413,8 @@ class ComfyNodeV3(_ComfyNodeBaseInternal):
@classmethod @classmethod
@abstractmethod @abstractmethod
def define_schema(cls) -> SchemaV3: def define_schema(cls) -> Schema:
"""Override this function with one that returns a SchemaV3 instance.""" """Override this function with one that returns a Schema instance."""
raise NotImplementedError raise NotImplementedError
@classmethod @classmethod

View File

@ -25,7 +25,7 @@ class V3TestNode(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="V3_01_TestNode1", node_id="V3_01_TestNode1",
display_name="V3 Test Node", display_name="V3 Test Node",
category="v3 nodes", category="v3 nodes",
@ -94,7 +94,7 @@ class V3TestNode(io.ComfyNodeV3):
class V3LoraLoader(io.ComfyNodeV3): class V3LoraLoader(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="V3_LoraLoader", node_id="V3_LoraLoader",
display_name="V3 LoRA Loader", display_name="V3 LoRA Loader",
category="v3 nodes", category="v3 nodes",
@ -144,7 +144,7 @@ class V3LoraLoader(io.ComfyNodeV3):
class NInputsTest(io.ComfyNodeV3): class NInputsTest(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="V3_NInputsTest", node_id="V3_NInputsTest",
display_name="V3 N Inputs Test", display_name="V3 N Inputs Test",
inputs=[ inputs=[
@ -186,7 +186,7 @@ class NInputsTest(io.ComfyNodeV3):
class V3TestSleep(io.ComfyNodeV3): class V3TestSleep(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="V3_TestSleep", node_id="V3_TestSleep",
display_name="V3 Test Sleep", display_name="V3 Test Sleep",
category="_for_testing", category="_for_testing",
@ -221,7 +221,7 @@ class V3TestSleep(io.ComfyNodeV3):
class V3DummyStart(io.ComfyNodeV3): class V3DummyStart(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="V3_DummyStart", node_id="V3_DummyStart",
display_name="V3 Dummy Start", display_name="V3 Dummy Start",
category="v3 nodes", category="v3 nodes",
@ -242,7 +242,7 @@ class V3DummyEnd(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="V3_DummyEnd", node_id="V3_DummyEnd",
display_name="V3 Dummy End", display_name="V3 Dummy End",
category="v3 nodes", category="v3 nodes",

View File

@ -10,7 +10,7 @@ from comfy_api.v3 import io
class TextEncodeAceStepAudio(io.ComfyNodeV3): class TextEncodeAceStepAudio(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="TextEncodeAceStepAudio_V3", node_id="TextEncodeAceStepAudio_V3",
category="conditioning", category="conditioning",
inputs=[ inputs=[
@ -32,7 +32,7 @@ class TextEncodeAceStepAudio(io.ComfyNodeV3):
class EmptyAceStepLatentAudio(io.ComfyNodeV3): class EmptyAceStepLatentAudio(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="EmptyAceStepLatentAudio_V3", node_id="EmptyAceStepLatentAudio_V3",
category="latent/audio", category="latent/audio",
inputs=[ inputs=[

View File

@ -45,8 +45,8 @@ class SamplerLCMUpscale(io.ComfyNodeV3):
UPSCALE_METHODS = ["bislerp", "nearest-exact", "bilinear", "area", "bicubic"] UPSCALE_METHODS = ["bislerp", "nearest-exact", "bilinear", "area", "bicubic"]
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="SamplerLCMUpscale_V3", node_id="SamplerLCMUpscale_V3",
category="sampling/custom_sampling/samplers", category="sampling/custom_sampling/samplers",
inputs=[ inputs=[
@ -101,8 +101,8 @@ def sample_euler_pp(model, x, sigmas, extra_args=None, callback=None, disable=No
class SamplerEulerCFGpp(io.ComfyNodeV3): class SamplerEulerCFGpp(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="SamplerEulerCFGpp_V3", node_id="SamplerEulerCFGpp_V3",
display_name="SamplerEulerCFG++ _V3", display_name="SamplerEulerCFG++ _V3",
category="_for_testing", category="_for_testing",

View File

@ -49,8 +49,8 @@ def loglinear_interp(t_steps, num_steps):
class AlignYourStepsScheduler(io.ComfyNodeV3): class AlignYourStepsScheduler(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="AlignYourStepsScheduler_V3", node_id="AlignYourStepsScheduler_V3",
category="sampling/custom_sampling/schedulers", category="sampling/custom_sampling/schedulers",
inputs=[ inputs=[

View File

@ -12,8 +12,8 @@ def project(v0, v1):
class APG(io.ComfyNodeV3): class APG(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="APG_V3", node_id="APG_V3",
display_name="Adaptive Projected Guidance _V3", display_name="Adaptive Projected Guidance _V3",
category="sampling/custom_sampling", category="sampling/custom_sampling",

View File

@ -19,8 +19,8 @@ def attention_multiply(attn, model, q, k, v, out):
class UNetSelfAttentionMultiply(io.ComfyNodeV3): class UNetSelfAttentionMultiply(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="UNetSelfAttentionMultiply_V3", node_id="UNetSelfAttentionMultiply_V3",
category="_for_testing/attention_experiments", category="_for_testing/attention_experiments",
inputs=[ inputs=[
@ -41,8 +41,8 @@ class UNetSelfAttentionMultiply(io.ComfyNodeV3):
class UNetCrossAttentionMultiply(io.ComfyNodeV3): class UNetCrossAttentionMultiply(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="UNetCrossAttentionMultiply_V3", node_id="UNetCrossAttentionMultiply_V3",
category="_for_testing/attention_experiments", category="_for_testing/attention_experiments",
inputs=[ inputs=[
@ -63,8 +63,8 @@ class UNetCrossAttentionMultiply(io.ComfyNodeV3):
class CLIPAttentionMultiply(io.ComfyNodeV3): class CLIPAttentionMultiply(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="CLIPAttentionMultiply_V3", node_id="CLIPAttentionMultiply_V3",
category="_for_testing/attention_experiments", category="_for_testing/attention_experiments",
inputs=[ inputs=[
@ -97,8 +97,8 @@ class CLIPAttentionMultiply(io.ComfyNodeV3):
class UNetTemporalAttentionMultiply(io.ComfyNodeV3): class UNetTemporalAttentionMultiply(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="UNetTemporalAttentionMultiply_V3", node_id="UNetTemporalAttentionMultiply_V3",
category="_for_testing/attention_experiments", category="_for_testing/attention_experiments",
inputs=[ inputs=[

View File

@ -15,7 +15,7 @@ from comfy_api.v3 import io, ui
class ConditioningStableAudio(io.ComfyNodeV3): class ConditioningStableAudio(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ConditioningStableAudio_V3", node_id="ConditioningStableAudio_V3",
category="conditioning", category="conditioning",
inputs=[ inputs=[
@ -45,7 +45,7 @@ class ConditioningStableAudio(io.ComfyNodeV3):
class EmptyLatentAudio(io.ComfyNodeV3): class EmptyLatentAudio(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="EmptyLatentAudio_V3", node_id="EmptyLatentAudio_V3",
category="latent/audio", category="latent/audio",
inputs=[ inputs=[
@ -67,7 +67,7 @@ class EmptyLatentAudio(io.ComfyNodeV3):
class LoadAudio(io.ComfyNodeV3): class LoadAudio(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LoadAudio_V3", # frontend expects "LoadAudio" to work node_id="LoadAudio_V3", # frontend expects "LoadAudio" to work
display_name="Load Audio _V3", # frontend ignores "display_name" for this node display_name="Load Audio _V3", # frontend ignores "display_name" for this node
category="audio", category="audio",
@ -105,7 +105,7 @@ class LoadAudio(io.ComfyNodeV3):
class PreviewAudio(io.ComfyNodeV3): class PreviewAudio(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PreviewAudio_V3", # frontend expects "PreviewAudio" to work node_id="PreviewAudio_V3", # frontend expects "PreviewAudio" to work
display_name="Preview Audio _V3", # frontend ignores "display_name" for this node display_name="Preview Audio _V3", # frontend ignores "display_name" for this node
category="audio", category="audio",
@ -124,7 +124,7 @@ class PreviewAudio(io.ComfyNodeV3):
class SaveAudioMP3(io.ComfyNodeV3): class SaveAudioMP3(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SaveAudioMP3_V3", # frontend expects "SaveAudioMP3" to work node_id="SaveAudioMP3_V3", # frontend expects "SaveAudioMP3" to work
display_name="Save Audio(MP3) _V3", # frontend ignores "display_name" for this node display_name="Save Audio(MP3) _V3", # frontend ignores "display_name" for this node
category="audio", category="audio",
@ -149,7 +149,7 @@ class SaveAudioMP3(io.ComfyNodeV3):
class SaveAudioOpus(io.ComfyNodeV3): class SaveAudioOpus(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SaveAudioOpus_V3", # frontend expects "SaveAudioOpus" to work node_id="SaveAudioOpus_V3", # frontend expects "SaveAudioOpus" to work
display_name="Save Audio(Opus) _V3", # frontend ignores "display_name" for this node display_name="Save Audio(Opus) _V3", # frontend ignores "display_name" for this node
category="audio", category="audio",
@ -174,7 +174,7 @@ class SaveAudioOpus(io.ComfyNodeV3):
class SaveAudio(io.ComfyNodeV3): class SaveAudio(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SaveAudio_V3", # frontend expects "SaveAudio" to work node_id="SaveAudio_V3", # frontend expects "SaveAudio" to work
display_name="Save Audio _V3", # frontend ignores "display_name" for this node display_name="Save Audio _V3", # frontend ignores "display_name" for this node
category="audio", category="audio",
@ -196,7 +196,7 @@ class SaveAudio(io.ComfyNodeV3):
class VAEDecodeAudio(io.ComfyNodeV3): class VAEDecodeAudio(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="VAEDecodeAudio_V3", node_id="VAEDecodeAudio_V3",
category="latent/audio", category="latent/audio",
inputs=[ inputs=[
@ -218,7 +218,7 @@ class VAEDecodeAudio(io.ComfyNodeV3):
class VAEEncodeAudio(io.ComfyNodeV3): class VAEEncodeAudio(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="VAEEncodeAudio_V3", node_id="VAEEncodeAudio_V3",
category="latent/audio", category="latent/audio",
inputs=[ inputs=[

View File

@ -138,7 +138,7 @@ def get_camera_motion(angle, T, speed, n=81):
class WanCameraEmbedding(io.ComfyNodeV3): class WanCameraEmbedding(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="WanCameraEmbedding_V3", node_id="WanCameraEmbedding_V3",
category="camera", category="camera",
inputs=[ inputs=[

View File

@ -9,7 +9,7 @@ from comfy_api.v3 import io
class Canny(io.ComfyNodeV3): class Canny(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="Canny_V3", node_id="Canny_V3",
category="image/preprocessors", category="image/preprocessors",
inputs=[ inputs=[

View File

@ -23,8 +23,8 @@ def optimized_scale(positive, negative):
class CFGNorm(io.ComfyNodeV3): class CFGNorm(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="CFGNorm_V3", node_id="CFGNorm_V3",
category="advanced/guidance", category="advanced/guidance",
inputs=[ inputs=[
@ -54,8 +54,8 @@ class CFGNorm(io.ComfyNodeV3):
class CFGZeroStar(io.ComfyNodeV3): class CFGZeroStar(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="CFGZeroStar_V3", node_id="CFGZeroStar_V3",
category="advanced/guidance", category="advanced/guidance",
inputs=[ inputs=[

View File

@ -7,7 +7,7 @@ from comfy_api.v3 import io
class CLIPTextEncodeSDXL(io.ComfyNodeV3): class CLIPTextEncodeSDXL(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="CLIPTextEncodeSDXL_V3", node_id="CLIPTextEncodeSDXL_V3",
category="advanced/conditioning", category="advanced/conditioning",
inputs=[ inputs=[
@ -51,7 +51,7 @@ class CLIPTextEncodeSDXL(io.ComfyNodeV3):
class CLIPTextEncodeSDXLRefiner(io.ComfyNodeV3): class CLIPTextEncodeSDXLRefiner(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="CLIPTextEncodeSDXLRefiner_V3", node_id="CLIPTextEncodeSDXLRefiner_V3",
category="advanced/conditioning", category="advanced/conditioning",
inputs=[ inputs=[

View File

@ -115,7 +115,7 @@ def porter_duff_composite(
class JoinImageWithAlpha(io.ComfyNodeV3): class JoinImageWithAlpha(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="JoinImageWithAlpha_V3", node_id="JoinImageWithAlpha_V3",
display_name="Join Image with Alpha _V3", display_name="Join Image with Alpha _V3",
category="mask/compositing", category="mask/compositing",
@ -141,7 +141,7 @@ class JoinImageWithAlpha(io.ComfyNodeV3):
class PorterDuffImageComposite(io.ComfyNodeV3): class PorterDuffImageComposite(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PorterDuffImageComposite_V3", node_id="PorterDuffImageComposite_V3",
display_name="Porter-Duff Image Composite _V3", display_name="Porter-Duff Image Composite _V3",
category="mask/compositing", category="mask/compositing",
@ -202,7 +202,7 @@ class PorterDuffImageComposite(io.ComfyNodeV3):
class SplitImageWithAlpha(io.ComfyNodeV3): class SplitImageWithAlpha(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SplitImageWithAlpha_V3", node_id="SplitImageWithAlpha_V3",
display_name="Split Image with Alpha _V3", display_name="Split Image with Alpha _V3",
category="mask/compositing", category="mask/compositing",

View File

@ -5,8 +5,8 @@ from comfy_api.v3 import io
class CLIPTextEncodeControlnet(io.ComfyNodeV3): class CLIPTextEncodeControlnet(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="CLIPTextEncodeControlnet_V3", node_id="CLIPTextEncodeControlnet_V3",
category="_for_testing/conditioning", category="_for_testing/conditioning",
inputs=[ inputs=[
@ -32,8 +32,8 @@ class CLIPTextEncodeControlnet(io.ComfyNodeV3):
class T5TokenizerOptions(io.ComfyNodeV3): class T5TokenizerOptions(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="T5TokenizerOptions_V3", node_id="T5TokenizerOptions_V3",
category="_for_testing/conditioning", category="_for_testing/conditioning",
inputs=[ inputs=[

View File

@ -6,7 +6,7 @@ from comfy_api.v3 import io
class ControlNetApplyAdvanced(io.ComfyNodeV3): class ControlNetApplyAdvanced(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ControlNetApplyAdvanced_V3", node_id="ControlNetApplyAdvanced_V3",
display_name="Apply ControlNet _V3", display_name="Apply ControlNet _V3",
category="conditioning/controlnet", category="conditioning/controlnet",
@ -63,7 +63,7 @@ class ControlNetApplyAdvanced(io.ComfyNodeV3):
class SetUnionControlNetType(io.ComfyNodeV3): class SetUnionControlNetType(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SetUnionControlNetType_V3", node_id="SetUnionControlNetType_V3",
category="conditioning/controlnet", category="conditioning/controlnet",
inputs=[ inputs=[
@ -90,7 +90,7 @@ class SetUnionControlNetType(io.ComfyNodeV3):
class ControlNetInpaintingAliMamaApply(ControlNetApplyAdvanced): class ControlNetInpaintingAliMamaApply(ControlNetApplyAdvanced):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ControlNetInpaintingAliMamaApply_V3", node_id="ControlNetInpaintingAliMamaApply_V3",
category="conditioning/controlnet", category="conditioning/controlnet",
inputs=[ inputs=[

View File

@ -22,8 +22,8 @@ def vae_encode_with_padding(vae, image, width, height, length, padding=0):
class CosmosImageToVideoLatent(io.ComfyNodeV3): class CosmosImageToVideoLatent(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="CosmosImageToVideoLatent_V3", node_id="CosmosImageToVideoLatent_V3",
category="conditioning/inpaint", category="conditioning/inpaint",
inputs=[ inputs=[
@ -69,8 +69,8 @@ class CosmosImageToVideoLatent(io.ComfyNodeV3):
class CosmosPredict2ImageToVideoLatent(io.ComfyNodeV3): class CosmosPredict2ImageToVideoLatent(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="CosmosPredict2ImageToVideoLatent_V3", node_id="CosmosPredict2ImageToVideoLatent_V3",
category="conditioning/inpaint", category="conditioning/inpaint",
inputs=[ inputs=[
@ -118,8 +118,8 @@ class CosmosPredict2ImageToVideoLatent(io.ComfyNodeV3):
class EmptyCosmosLatentVideo(io.ComfyNodeV3): class EmptyCosmosLatentVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls) -> io.SchemaV3: def define_schema(cls) -> io.Schema:
return io.SchemaV3( return io.Schema(
node_id="EmptyCosmosLatentVideo_V3", node_id="EmptyCosmosLatentVideo_V3",
category="latent/video", category="latent/video",
inputs=[ inputs=[

View File

@ -8,7 +8,7 @@ from comfy_api.v3 import io
class DifferentialDiffusion(io.ComfyNodeV3): class DifferentialDiffusion(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="DifferentialDiffusion_V3", node_id="DifferentialDiffusion_V3",
display_name="Differential Diffusion _V3", display_name="Differential Diffusion _V3",
category="_for_testing", category="_for_testing",

View File

@ -7,7 +7,7 @@ from comfy_api.v3 import io
class ReferenceLatent(io.ComfyNodeV3): class ReferenceLatent(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ReferenceLatent_V3", node_id="ReferenceLatent_V3",
category="advanced/conditioning/edit_models", category="advanced/conditioning/edit_models",
description="This node sets the guiding latent for an edit model. If the model supports it you can chain multiple to set multiple reference images.", description="This node sets the guiding latent for an edit model. If the model supports it you can chain multiple to set multiple reference images.",

View File

@ -28,7 +28,7 @@ PREFERED_KONTEXT_RESOLUTIONS = [
class CLIPTextEncodeFlux(io.ComfyNodeV3): class CLIPTextEncodeFlux(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="CLIPTextEncodeFlux_V3", node_id="CLIPTextEncodeFlux_V3",
category="advanced/conditioning/flux", category="advanced/conditioning/flux",
inputs=[ inputs=[
@ -53,7 +53,7 @@ class CLIPTextEncodeFlux(io.ComfyNodeV3):
class FluxDisableGuidance(io.ComfyNodeV3): class FluxDisableGuidance(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="FluxDisableGuidance_V3", node_id="FluxDisableGuidance_V3",
category="advanced/conditioning/flux", category="advanced/conditioning/flux",
description="This node completely disables the guidance embed on Flux and Flux like models", description="This node completely disables the guidance embed on Flux and Flux like models",
@ -74,7 +74,7 @@ class FluxDisableGuidance(io.ComfyNodeV3):
class FluxGuidance(io.ComfyNodeV3): class FluxGuidance(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="FluxGuidance_V3", node_id="FluxGuidance_V3",
category="advanced/conditioning/flux", category="advanced/conditioning/flux",
inputs=[ inputs=[
@ -95,7 +95,7 @@ class FluxGuidance(io.ComfyNodeV3):
class FluxKontextImageScale(io.ComfyNodeV3): class FluxKontextImageScale(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="FluxKontextImageScale_V3", node_id="FluxKontextImageScale_V3",
category="advanced/conditioning/flux", category="advanced/conditioning/flux",
description="This node resizes the image to one that is more optimal for flux kontext.", description="This node resizes the image to one that is more optimal for flux kontext.",

View File

@ -31,7 +31,7 @@ def Fourier_filter(x, threshold, scale):
class FreeU(io.ComfyNodeV3): class FreeU(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="FreeU_V3", node_id="FreeU_V3",
category="model_patches/unet", category="model_patches/unet",
inputs=[ inputs=[
@ -76,7 +76,7 @@ class FreeU(io.ComfyNodeV3):
class FreeU_V2(io.ComfyNodeV3): class FreeU_V2(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="FreeU_V2_V3", node_id="FreeU_V2_V3",
category="model_patches/unet", category="model_patches/unet",
inputs=[ inputs=[

View File

@ -59,7 +59,7 @@ def Fourier_filter(x, scale_low=1.0, scale_high=1.5, freq_cutoff=20):
class FreSca(io.ComfyNodeV3): class FreSca(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="FreSca_V3", node_id="FreSca_V3",
display_name="FreSca _V3", display_name="FreSca _V3",
category="_for_testing", category="_for_testing",

View File

@ -339,7 +339,7 @@ NOISE_LEVELS = {
class GITSScheduler(io.ComfyNodeV3): class GITSScheduler(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="GITSScheduler_V3", node_id="GITSScheduler_V3",
category="sampling/custom_sampling/schedulers", category="sampling/custom_sampling/schedulers",
inputs=[ inputs=[

View File

@ -9,7 +9,7 @@ from comfy_api.v3 import io
class CLIPTextEncodeHiDream(io.ComfyNodeV3): class CLIPTextEncodeHiDream(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="CLIPTextEncodeHiDream_V3", node_id="CLIPTextEncodeHiDream_V3",
category="advanced/conditioning", category="advanced/conditioning",
inputs=[ inputs=[
@ -36,7 +36,7 @@ class CLIPTextEncodeHiDream(io.ComfyNodeV3):
class QuadrupleCLIPLoader(io.ComfyNodeV3): class QuadrupleCLIPLoader(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="QuadrupleCLIPLoader_V3", node_id="QuadrupleCLIPLoader_V3",
category="advanced/loaders", category="advanced/loaders",
description="[Recipes]\n\nhidream: long clip-l, long clip-g, t5xxl, llama_8b_3.1_instruct", description="[Recipes]\n\nhidream: long clip-l, long clip-g, t5xxl, llama_8b_3.1_instruct",

View File

@ -16,7 +16,7 @@ from server import PromptServer
class GetImageSize(io.ComfyNodeV3): class GetImageSize(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="GetImageSize_V3", node_id="GetImageSize_V3",
display_name="Get Image Size _V3", display_name="Get Image Size _V3",
description="Returns width and height of the image, and passes it through unchanged.", description="Returns width and height of the image, and passes it through unchanged.",
@ -49,7 +49,7 @@ class GetImageSize(io.ComfyNodeV3):
class ImageAddNoise(io.ComfyNodeV3): class ImageAddNoise(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageAddNoise_V3", node_id="ImageAddNoise_V3",
display_name="Image Add Noise _V3", display_name="Image Add Noise _V3",
category="image", category="image",
@ -82,7 +82,7 @@ class ImageAddNoise(io.ComfyNodeV3):
class ImageCrop(io.ComfyNodeV3): class ImageCrop(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageCrop_V3", node_id="ImageCrop_V3",
display_name="Image Crop _V3", display_name="Image Crop _V3",
category="image/transform", category="image/transform",
@ -108,7 +108,7 @@ class ImageCrop(io.ComfyNodeV3):
class ImageFlip(io.ComfyNodeV3): class ImageFlip(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageFlip_V3", node_id="ImageFlip_V3",
display_name="Image Flip _V3", display_name="Image Flip _V3",
category="image/transform", category="image/transform",
@ -132,7 +132,7 @@ class ImageFlip(io.ComfyNodeV3):
class ImageFromBatch(io.ComfyNodeV3): class ImageFromBatch(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageFromBatch_V3", node_id="ImageFromBatch_V3",
display_name="Image From Batch _V3", display_name="Image From Batch _V3",
category="image/batch", category="image/batch",
@ -156,7 +156,7 @@ class ImageFromBatch(io.ComfyNodeV3):
class ImageRotate(io.ComfyNodeV3): class ImageRotate(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageRotate_V3", node_id="ImageRotate_V3",
display_name="Image Rotate _V3", display_name="Image Rotate _V3",
category="image/transform", category="image/transform",
@ -185,7 +185,7 @@ class ImageStitch(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageStitch_V3", node_id="ImageStitch_V3",
display_name="Image Stitch _V3", display_name="Image Stitch _V3",
description="Stitches image2 to image1 in the specified direction. " description="Stitches image2 to image1 in the specified direction. "
@ -353,7 +353,7 @@ class ImageStitch(io.ComfyNodeV3):
class LoadImage(io.ComfyNodeV3): class LoadImage(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LoadImage_V3", node_id="LoadImage_V3",
display_name="Load Image _V3", display_name="Load Image _V3",
category="image", category="image",
@ -441,7 +441,7 @@ class LoadImage(io.ComfyNodeV3):
class LoadImageOutput(io.ComfyNodeV3): class LoadImageOutput(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LoadImageOutput_V3", node_id="LoadImageOutput_V3",
display_name="Load Image (from Outputs) _V3", display_name="Load Image (from Outputs) _V3",
description="Load an image from the output folder. " description="Load an image from the output folder. "
@ -530,7 +530,7 @@ class LoadImageOutput(io.ComfyNodeV3):
class PreviewImage(io.ComfyNodeV3): class PreviewImage(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PreviewImage_V3", node_id="PreviewImage_V3",
display_name="Preview Image _V3", display_name="Preview Image _V3",
description="Preview the input images.", description="Preview the input images.",
@ -550,7 +550,7 @@ class PreviewImage(io.ComfyNodeV3):
class RepeatImageBatch(io.ComfyNodeV3): class RepeatImageBatch(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="RepeatImageBatch_V3", node_id="RepeatImageBatch_V3",
display_name="Repeat Image Batch _V3", display_name="Repeat Image Batch _V3",
category="image/batch", category="image/batch",
@ -569,7 +569,7 @@ class RepeatImageBatch(io.ComfyNodeV3):
class ResizeAndPadImage(io.ComfyNodeV3): class ResizeAndPadImage(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ResizeAndPadImage_V3", node_id="ResizeAndPadImage_V3",
display_name="Resize and Pad Image _V3", display_name="Resize and Pad Image _V3",
category="image/transform", category="image/transform",
@ -614,7 +614,7 @@ class ResizeAndPadImage(io.ComfyNodeV3):
class SaveAnimatedPNG(io.ComfyNodeV3): class SaveAnimatedPNG(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SaveAnimatedPNG_V3", node_id="SaveAnimatedPNG_V3",
display_name="Save Animated PNG _V3", display_name="Save Animated PNG _V3",
category="image/animation", category="image/animation",
@ -646,7 +646,7 @@ class SaveAnimatedWEBP(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SaveAnimatedWEBP_V3", node_id="SaveAnimatedWEBP_V3",
display_name="Save Animated WEBP _V3", display_name="Save Animated WEBP _V3",
category="image/animation", category="image/animation",
@ -680,7 +680,7 @@ class SaveAnimatedWEBP(io.ComfyNodeV3):
class SaveImage(io.ComfyNodeV3): class SaveImage(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SaveImage_V3", node_id="SaveImage_V3",
display_name="Save Image _V3", display_name="Save Image _V3",
description="Saves the input images to your ComfyUI output directory.", description="Saves the input images to your ComfyUI output directory.",

View File

@ -20,7 +20,7 @@ def reshape_latent_to(target_shape, latent, repeat_batch=True):
class LatentAdd(io.ComfyNodeV3): class LatentAdd(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LatentAdd_V3", node_id="LatentAdd_V3",
category="latent/advanced", category="latent/advanced",
inputs=[ inputs=[
@ -47,7 +47,7 @@ class LatentAdd(io.ComfyNodeV3):
class LatentApplyOperation(io.ComfyNodeV3): class LatentApplyOperation(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LatentApplyOperation_V3", node_id="LatentApplyOperation_V3",
category="latent/advanced/operations", category="latent/advanced/operations",
is_experimental=True, is_experimental=True,
@ -72,7 +72,7 @@ class LatentApplyOperation(io.ComfyNodeV3):
class LatentApplyOperationCFG(io.ComfyNodeV3): class LatentApplyOperationCFG(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LatentApplyOperationCFG_V3", node_id="LatentApplyOperationCFG_V3",
category="latent/advanced/operations", category="latent/advanced/operations",
is_experimental=True, is_experimental=True,
@ -104,7 +104,7 @@ class LatentApplyOperationCFG(io.ComfyNodeV3):
class LatentBatch(io.ComfyNodeV3): class LatentBatch(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LatentBatch_V3", node_id="LatentBatch_V3",
category="latent/batch", category="latent/batch",
inputs=[ inputs=[
@ -133,7 +133,7 @@ class LatentBatch(io.ComfyNodeV3):
class LatentBatchSeedBehavior(io.ComfyNodeV3): class LatentBatchSeedBehavior(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LatentBatchSeedBehavior_V3", node_id="LatentBatchSeedBehavior_V3",
category="latent/advanced", category="latent/advanced",
inputs=[ inputs=[
@ -162,7 +162,7 @@ class LatentBatchSeedBehavior(io.ComfyNodeV3):
class LatentInterpolate(io.ComfyNodeV3): class LatentInterpolate(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LatentInterpolate_V3", node_id="LatentInterpolate_V3",
category="latent/advanced", category="latent/advanced",
inputs=[ inputs=[
@ -201,7 +201,7 @@ class LatentInterpolate(io.ComfyNodeV3):
class LatentMultiply(io.ComfyNodeV3): class LatentMultiply(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LatentMultiply_V3", node_id="LatentMultiply_V3",
category="latent/advanced", category="latent/advanced",
inputs=[ inputs=[
@ -225,7 +225,7 @@ class LatentMultiply(io.ComfyNodeV3):
class LatentOperationSharpen(io.ComfyNodeV3): class LatentOperationSharpen(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LatentOperationSharpen_V3", node_id="LatentOperationSharpen_V3",
category="latent/advanced/operations", category="latent/advanced/operations",
is_experimental=True, is_experimental=True,
@ -267,7 +267,7 @@ class LatentOperationSharpen(io.ComfyNodeV3):
class LatentOperationTonemapReinhard(io.ComfyNodeV3): class LatentOperationTonemapReinhard(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LatentOperationTonemapReinhard_V3", node_id="LatentOperationTonemapReinhard_V3",
category="latent/advanced/operations", category="latent/advanced/operations",
is_experimental=True, is_experimental=True,
@ -302,7 +302,7 @@ class LatentOperationTonemapReinhard(io.ComfyNodeV3):
class LatentSubtract(io.ComfyNodeV3): class LatentSubtract(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LatentSubtract_V3", node_id="LatentSubtract_V3",
category="latent/advanced", category="latent/advanced",
inputs=[ inputs=[

View File

@ -89,7 +89,7 @@ def preprocess(image: torch.Tensor, crf=29):
class EmptyLTXVLatentVideo(io.ComfyNodeV3): class EmptyLTXVLatentVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="EmptyLTXVLatentVideo_V3", node_id="EmptyLTXVLatentVideo_V3",
category="latent/video/ltxv", category="latent/video/ltxv",
inputs=[ inputs=[
@ -118,7 +118,7 @@ class LTXVAddGuide(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LTXVAddGuide_V3", node_id="LTXVAddGuide_V3",
category="conditioning/video_models", category="conditioning/video_models",
inputs=[ inputs=[
@ -278,7 +278,7 @@ class LTXVAddGuide(io.ComfyNodeV3):
class LTXVConditioning(io.ComfyNodeV3): class LTXVConditioning(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LTXVConditioning_V3", node_id="LTXVConditioning_V3",
category="conditioning/video_models", category="conditioning/video_models",
inputs=[ inputs=[
@ -302,7 +302,7 @@ class LTXVConditioning(io.ComfyNodeV3):
class LTXVCropGuides(io.ComfyNodeV3): class LTXVCropGuides(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LTXVCropGuides_V3", node_id="LTXVCropGuides_V3",
category="conditioning/video_models", category="conditioning/video_models",
inputs=[ inputs=[
@ -338,7 +338,7 @@ class LTXVCropGuides(io.ComfyNodeV3):
class LTXVImgToVideo(io.ComfyNodeV3): class LTXVImgToVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LTXVImgToVideo_V3", node_id="LTXVImgToVideo_V3",
category="conditioning/video_models", category="conditioning/video_models",
inputs=[ inputs=[
@ -386,7 +386,7 @@ class LTXVImgToVideo(io.ComfyNodeV3):
class LTXVPreprocess(io.ComfyNodeV3): class LTXVPreprocess(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LTXVPreprocess_V3", node_id="LTXVPreprocess_V3",
category="image", category="image",
inputs=[ inputs=[
@ -411,7 +411,7 @@ class LTXVPreprocess(io.ComfyNodeV3):
class LTXVScheduler(io.ComfyNodeV3): class LTXVScheduler(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LTXVScheduler_V3", node_id="LTXVScheduler_V3",
category="sampling/custom_sampling/schedulers", category="sampling/custom_sampling/schedulers",
inputs=[ inputs=[
@ -474,7 +474,7 @@ class LTXVScheduler(io.ComfyNodeV3):
class ModelSamplingLTXV(io.ComfyNodeV3): class ModelSamplingLTXV(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ModelSamplingLTXV_V3", node_id="ModelSamplingLTXV_V3",
category="advanced/model", category="advanced/model",
inputs=[ inputs=[

View File

@ -60,7 +60,7 @@ def composite(destination, source, x, y, mask=None, multiplier=8, resize_source=
class CropMask(io.ComfyNodeV3): class CropMask(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="CropMask_V3", node_id="CropMask_V3",
display_name="Crop Mask _V3", display_name="Crop Mask _V3",
category="mask", category="mask",
@ -83,7 +83,7 @@ class CropMask(io.ComfyNodeV3):
class FeatherMask(io.ComfyNodeV3): class FeatherMask(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="FeatherMask_V3", node_id="FeatherMask_V3",
display_name="Feather Mask _V3", display_name="Feather Mask _V3",
category="mask", category="mask",
@ -128,7 +128,7 @@ class FeatherMask(io.ComfyNodeV3):
class GrowMask(io.ComfyNodeV3): class GrowMask(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="GrowMask_V3", node_id="GrowMask_V3",
display_name="Grow Mask _V3", display_name="Grow Mask _V3",
category="mask", category="mask",
@ -161,7 +161,7 @@ class GrowMask(io.ComfyNodeV3):
class ImageColorToMask(io.ComfyNodeV3): class ImageColorToMask(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageColorToMask_V3", node_id="ImageColorToMask_V3",
display_name="Image Color to Mask _V3", display_name="Image Color to Mask _V3",
category="mask", category="mask",
@ -186,7 +186,7 @@ class ImageColorToMask(io.ComfyNodeV3):
class ImageCompositeMasked(io.ComfyNodeV3): class ImageCompositeMasked(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageCompositeMasked_V3", node_id="ImageCompositeMasked_V3",
display_name="Image Composite Masked _V3", display_name="Image Composite Masked _V3",
category="image", category="image",
@ -214,7 +214,7 @@ class ImageToMask(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageToMask_V3", node_id="ImageToMask_V3",
display_name="Convert Image to Mask _V3", display_name="Convert Image to Mask _V3",
category="mask", category="mask",
@ -233,7 +233,7 @@ class ImageToMask(io.ComfyNodeV3):
class InvertMask(io.ComfyNodeV3): class InvertMask(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="InvertMask_V3", node_id="InvertMask_V3",
display_name="Invert Mask _V3", display_name="Invert Mask _V3",
category="mask", category="mask",
@ -251,7 +251,7 @@ class InvertMask(io.ComfyNodeV3):
class LatentCompositeMasked(io.ComfyNodeV3): class LatentCompositeMasked(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="LatentCompositeMasked_V3", node_id="LatentCompositeMasked_V3",
display_name="Latent Composite Masked _V3", display_name="Latent Composite Masked _V3",
category="latent", category="latent",
@ -278,7 +278,7 @@ class LatentCompositeMasked(io.ComfyNodeV3):
class MaskComposite(io.ComfyNodeV3): class MaskComposite(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="MaskComposite_V3", node_id="MaskComposite_V3",
display_name="Mask Composite _V3", display_name="Mask Composite _V3",
category="mask", category="mask",
@ -344,7 +344,7 @@ class MaskPreview(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="MaskPreview_V3", node_id="MaskPreview_V3",
display_name="Preview Mask _V3", display_name="Preview Mask _V3",
category="mask", category="mask",
@ -363,7 +363,7 @@ class MaskPreview(io.ComfyNodeV3):
class MaskToImage(io.ComfyNodeV3): class MaskToImage(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="MaskToImage_V3", node_id="MaskToImage_V3",
display_name="Convert Mask to Image _V3", display_name="Convert Mask to Image _V3",
category="mask", category="mask",
@ -381,7 +381,7 @@ class MaskToImage(io.ComfyNodeV3):
class SolidMask(io.ComfyNodeV3): class SolidMask(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SolidMask_V3", node_id="SolidMask_V3",
display_name="Solid Mask _V3", display_name="Solid Mask _V3",
category="mask", category="mask",
@ -401,7 +401,7 @@ class SolidMask(io.ComfyNodeV3):
class ThresholdMask(io.ComfyNodeV3): class ThresholdMask(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ThresholdMask_V3", node_id="ThresholdMask_V3",
display_name="Threshold Mask _V3", display_name="Threshold Mask _V3",
category="mask", category="mask",

View File

@ -10,7 +10,7 @@ from comfy_api.v3 import io
class EmptyMochiLatentVideo(io.ComfyNodeV3): class EmptyMochiLatentVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="EmptyMochiLatentVideo_V3", node_id="EmptyMochiLatentVideo_V3",
category="latent/video", category="latent/video",
inputs=[ inputs=[

View File

@ -60,7 +60,7 @@ class ModelSamplingDiscreteDistilled(comfy.model_sampling.ModelSamplingDiscrete)
class ModelComputeDtype(io.ComfyNodeV3): class ModelComputeDtype(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ModelComputeDtype_V3", node_id="ModelComputeDtype_V3",
category="advanced/debug/model", category="advanced/debug/model",
inputs=[ inputs=[
@ -82,7 +82,7 @@ class ModelComputeDtype(io.ComfyNodeV3):
class ModelSamplingContinuousEDM(io.ComfyNodeV3): class ModelSamplingContinuousEDM(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ModelSamplingContinuousEDM_V3", node_id="ModelSamplingContinuousEDM_V3",
category="advanced/model", category="advanced/model",
inputs=[ inputs=[
@ -134,7 +134,7 @@ class ModelSamplingContinuousEDM(io.ComfyNodeV3):
class ModelSamplingContinuousV(io.ComfyNodeV3): class ModelSamplingContinuousV(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ModelSamplingContinuousV_V3", node_id="ModelSamplingContinuousV_V3",
category="advanced/model", category="advanced/model",
inputs=[ inputs=[
@ -168,7 +168,7 @@ class ModelSamplingContinuousV(io.ComfyNodeV3):
class ModelSamplingDiscrete(io.ComfyNodeV3): class ModelSamplingDiscrete(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ModelSamplingDiscrete_V3", node_id="ModelSamplingDiscrete_V3",
category="advanced/model", category="advanced/model",
inputs=[ inputs=[
@ -210,7 +210,7 @@ class ModelSamplingDiscrete(io.ComfyNodeV3):
class ModelSamplingFlux(io.ComfyNodeV3): class ModelSamplingFlux(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ModelSamplingFlux_V3", node_id="ModelSamplingFlux_V3",
category="advanced/model", category="advanced/model",
inputs=[ inputs=[
@ -250,7 +250,7 @@ class ModelSamplingFlux(io.ComfyNodeV3):
class ModelSamplingSD3(io.ComfyNodeV3): class ModelSamplingSD3(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ModelSamplingSD3_V3", node_id="ModelSamplingSD3_V3",
category="advanced/model", category="advanced/model",
inputs=[ inputs=[
@ -281,7 +281,7 @@ class ModelSamplingSD3(io.ComfyNodeV3):
class ModelSamplingAuraFlow(ModelSamplingSD3): class ModelSamplingAuraFlow(ModelSamplingSD3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ModelSamplingAuraFlow_V3", node_id="ModelSamplingAuraFlow_V3",
category="advanced/model", category="advanced/model",
inputs=[ inputs=[
@ -301,7 +301,7 @@ class ModelSamplingAuraFlow(ModelSamplingSD3):
class ModelSamplingStableCascade(io.ComfyNodeV3): class ModelSamplingStableCascade(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ModelSamplingStableCascade_V3", node_id="ModelSamplingStableCascade_V3",
category="advanced/model", category="advanced/model",
inputs=[ inputs=[
@ -332,7 +332,7 @@ class ModelSamplingStableCascade(io.ComfyNodeV3):
class RescaleCFG(io.ComfyNodeV3): class RescaleCFG(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="RescaleCFG_V3", node_id="RescaleCFG_V3",
category="advanced/model", category="advanced/model",
inputs=[ inputs=[

View File

@ -9,7 +9,7 @@ class PatchModelAddDownscale(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PatchModelAddDownscale_V3", node_id="PatchModelAddDownscale_V3",
display_name="PatchModelAddDownscale (Kohya Deep Shrink) _V3", display_name="PatchModelAddDownscale (Kohya Deep Shrink) _V3",
category="model_patches/unet", category="model_patches/unet",

View File

@ -19,7 +19,7 @@ from comfy_api.v3 import io
class ImageRGBToYUV(io.ComfyNodeV3): class ImageRGBToYUV(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageRGBToYUV_V3", node_id="ImageRGBToYUV_V3",
category="image/batch", category="image/batch",
inputs=[ inputs=[
@ -41,7 +41,7 @@ class ImageRGBToYUV(io.ComfyNodeV3):
class ImageYUVToRGB(io.ComfyNodeV3): class ImageYUVToRGB(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageYUVToRGB_V3", node_id="ImageYUVToRGB_V3",
category="image/batch", category="image/batch",
inputs=[ inputs=[
@ -63,7 +63,7 @@ class ImageYUVToRGB(io.ComfyNodeV3):
class Morphology(io.ComfyNodeV3): class Morphology(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="Morphology_V3", node_id="Morphology_V3",
display_name="ImageMorphology _V3", display_name="ImageMorphology _V3",
category="image/postprocessing", category="image/postprocessing",

View File

@ -29,7 +29,7 @@ NOISE_LEVELS = {
class OptimalStepsScheduler(io.ComfyNodeV3): class OptimalStepsScheduler(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="OptimalStepsScheduler_V3", node_id="OptimalStepsScheduler_V3",
category="sampling/custom_sampling/schedulers", category="sampling/custom_sampling/schedulers",
inputs=[ inputs=[

View File

@ -13,7 +13,7 @@ from comfy_api.v3 import io
class PerturbedAttentionGuidance(io.ComfyNodeV3): class PerturbedAttentionGuidance(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PerturbedAttentionGuidance_V3", node_id="PerturbedAttentionGuidance_V3",
category="model_patches/unet", category="model_patches/unet",
inputs=[ inputs=[

View File

@ -84,7 +84,7 @@ class Guider_PerpNeg(comfy.samplers.CFGGuider):
class PerpNegGuider(io.ComfyNodeV3): class PerpNegGuider(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PerpNegGuider_V3", node_id="PerpNegGuider_V3",
category="_for_testing", category="_for_testing",
inputs=[ inputs=[

View File

@ -124,7 +124,7 @@ class PhotoMakerIDEncoder(comfy.clip_model.CLIPVisionModelProjection):
class PhotoMakerEncode(io.ComfyNodeV3): class PhotoMakerEncode(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PhotoMakerEncode_V3", node_id="PhotoMakerEncode_V3",
category="_for_testing/photomaker", category="_for_testing/photomaker",
inputs=[ inputs=[
@ -176,7 +176,7 @@ class PhotoMakerEncode(io.ComfyNodeV3):
class PhotoMakerLoader(io.ComfyNodeV3): class PhotoMakerLoader(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PhotoMakerLoader_V3", node_id="PhotoMakerLoader_V3",
category="_for_testing/photomaker", category="_for_testing/photomaker",
inputs=[ inputs=[

View File

@ -7,7 +7,7 @@ from comfy_api.v3 import io
class CLIPTextEncodePixArtAlpha(io.ComfyNodeV3): class CLIPTextEncodePixArtAlpha(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="CLIPTextEncodePixArtAlpha_V3", node_id="CLIPTextEncodePixArtAlpha_V3",
category="advanced/conditioning", category="advanced/conditioning",
description="Encodes text and sets the resolution conditioning for PixArt Alpha. Does not apply to PixArt Sigma.", description="Encodes text and sets the resolution conditioning for PixArt Alpha. Does not apply to PixArt Sigma.",

View File

@ -23,7 +23,7 @@ def gaussian_kernel(kernel_size: int, sigma: float, device=None):
class Blend(io.ComfyNodeV3): class Blend(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageBlend_V3", node_id="ImageBlend_V3",
category="image/postprocessing", category="image/postprocessing",
inputs=[ inputs=[
@ -77,7 +77,7 @@ class Blend(io.ComfyNodeV3):
class Blur(io.ComfyNodeV3): class Blur(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageBlur_V3", node_id="ImageBlur_V3",
category="image/postprocessing", category="image/postprocessing",
inputs=[ inputs=[
@ -115,7 +115,7 @@ class ImageScaleToTotalPixels(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageScaleToTotalPixels_V3", node_id="ImageScaleToTotalPixels_V3",
category="image/upscaling", category="image/upscaling",
inputs=[ inputs=[
@ -144,7 +144,7 @@ class ImageScaleToTotalPixels(io.ComfyNodeV3):
class Quantize(io.ComfyNodeV3): class Quantize(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageQuantize_V3", node_id="ImageQuantize_V3",
category="image/postprocessing", category="image/postprocessing",
inputs=[ inputs=[
@ -208,7 +208,7 @@ class Quantize(io.ComfyNodeV3):
class Sharpen(io.ComfyNodeV3): class Sharpen(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="ImageSharpen_V3", node_id="ImageSharpen_V3",
category="image/postprocessing", category="image/postprocessing",
inputs=[ inputs=[

View File

@ -12,7 +12,7 @@ class PreviewAny(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PreviewAny_V3", # frontend expects "PreviewAny" to work node_id="PreviewAny_V3", # frontend expects "PreviewAny" to work
display_name="Preview Any _V3", # frontend ignores "display_name" for this node display_name="Preview Any _V3", # frontend ignores "display_name" for this node
description="Preview any type of data by converting it to a readable text format.", description="Preview any type of data by converting it to a readable text format.",

View File

@ -8,7 +8,7 @@ from comfy_api.v3 import io
class String(io.ComfyNodeV3): class String(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PrimitiveString_V3", node_id="PrimitiveString_V3",
display_name="String _V3", display_name="String _V3",
category="utils/primitive", category="utils/primitive",
@ -26,7 +26,7 @@ class String(io.ComfyNodeV3):
class StringMultiline(io.ComfyNodeV3): class StringMultiline(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PrimitiveStringMultiline_V3", node_id="PrimitiveStringMultiline_V3",
display_name="String (Multiline) _V3", display_name="String (Multiline) _V3",
category="utils/primitive", category="utils/primitive",
@ -44,7 +44,7 @@ class StringMultiline(io.ComfyNodeV3):
class Int(io.ComfyNodeV3): class Int(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PrimitiveInt_V3", node_id="PrimitiveInt_V3",
display_name="Int _V3", display_name="Int _V3",
category="utils/primitive", category="utils/primitive",
@ -62,7 +62,7 @@ class Int(io.ComfyNodeV3):
class Float(io.ComfyNodeV3): class Float(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PrimitiveFloat_V3", node_id="PrimitiveFloat_V3",
display_name="Float _V3", display_name="Float _V3",
category="utils/primitive", category="utils/primitive",
@ -80,7 +80,7 @@ class Float(io.ComfyNodeV3):
class Boolean(io.ComfyNodeV3): class Boolean(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="PrimitiveBoolean_V3", node_id="PrimitiveBoolean_V3",
display_name="Boolean _V3", display_name="Boolean _V3",
category="utils/primitive", category="utils/primitive",

View File

@ -8,7 +8,7 @@ from comfy_api.v3 import io
class ImageRebatch(io.ComfyNodeV3): class ImageRebatch(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="RebatchImages_V3", node_id="RebatchImages_V3",
display_name="Rebatch Images _V3", display_name="Rebatch Images _V3",
category="image/batch", category="image/batch",
@ -41,7 +41,7 @@ class ImageRebatch(io.ComfyNodeV3):
class LatentRebatch(io.ComfyNodeV3): class LatentRebatch(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="RebatchLatents_V3", node_id="RebatchLatents_V3",
display_name="Rebatch Latents _V3", display_name="Rebatch Latents _V3",
category="latent/batch", category="latent/batch",

View File

@ -114,7 +114,7 @@ def gaussian_blur_2d(img, kernel_size, sigma):
class SelfAttentionGuidance(io.ComfyNodeV3): class SelfAttentionGuidance(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SelfAttentionGuidance_V3", node_id="SelfAttentionGuidance_V3",
display_name="Self-Attention Guidance _V3", display_name="Self-Attention Guidance _V3",
category="_for_testing", category="_for_testing",

View File

@ -13,7 +13,7 @@ from comfy_extras.v3.nodes_slg import SkipLayerGuidanceDiT
class CLIPTextEncodeSD3(io.ComfyNodeV3): class CLIPTextEncodeSD3(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="CLIPTextEncodeSD3_V3", node_id="CLIPTextEncodeSD3_V3",
category="advanced/conditioning", category="advanced/conditioning",
inputs=[ inputs=[
@ -57,7 +57,7 @@ class CLIPTextEncodeSD3(io.ComfyNodeV3):
class EmptySD3LatentImage(io.ComfyNodeV3): class EmptySD3LatentImage(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="EmptySD3LatentImage_V3", node_id="EmptySD3LatentImage_V3",
category="latent/sd3", category="latent/sd3",
inputs=[ inputs=[
@ -86,7 +86,7 @@ class SkipLayerGuidanceSD3(SkipLayerGuidanceDiT):
""" """
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SkipLayerGuidanceSD3_V3", node_id="SkipLayerGuidanceSD3_V3",
category="advanced/guidance", category="advanced/guidance",
inputs=[ inputs=[
@ -112,7 +112,7 @@ class SkipLayerGuidanceSD3(SkipLayerGuidanceDiT):
class TripleCLIPLoader(io.ComfyNodeV3): class TripleCLIPLoader(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="TripleCLIPLoader_V3", node_id="TripleCLIPLoader_V3",
category="advanced/loaders", category="advanced/loaders",
description="[Recipes]\n\nsd3: clip-l, clip-g, t5", description="[Recipes]\n\nsd3: clip-l, clip-g, t5",

View File

@ -9,7 +9,7 @@ from comfy_api.v3 import io
class SD_4XUpscale_Conditioning(io.ComfyNodeV3): class SD_4XUpscale_Conditioning(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SD_4XUpscale_Conditioning_V3", node_id="SD_4XUpscale_Conditioning_V3",
category="conditioning/upscale_diffusion", category="conditioning/upscale_diffusion",
inputs=[ inputs=[

View File

@ -16,7 +16,7 @@ class SkipLayerGuidanceDiT(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SkipLayerGuidanceDiT_V3", node_id="SkipLayerGuidanceDiT_V3",
category="advanced/guidance", category="advanced/guidance",
description="Generic version of SkipLayerGuidance node that can be used on every DiT model.", description="Generic version of SkipLayerGuidance node that can be used on every DiT model.",
@ -97,7 +97,7 @@ class SkipLayerGuidanceDiTSimple(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SkipLayerGuidanceDiTSimple_V3", node_id="SkipLayerGuidanceDiTSimple_V3",
category="advanced/guidance", category="advanced/guidance",
description="Simple version of the SkipLayerGuidanceDiT node that only modifies the uncond pass.", description="Simple version of the SkipLayerGuidanceDiT node that only modifies the uncond pass.",

View File

@ -26,7 +26,7 @@ from comfy_api.v3 import io
class StableCascade_EmptyLatentImage(io.ComfyNodeV3): class StableCascade_EmptyLatentImage(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="StableCascade_EmptyLatentImage_V3", node_id="StableCascade_EmptyLatentImage_V3",
category="latent/stable_cascade", category="latent/stable_cascade",
inputs=[ inputs=[
@ -51,7 +51,7 @@ class StableCascade_EmptyLatentImage(io.ComfyNodeV3):
class StableCascade_StageC_VAEEncode(io.ComfyNodeV3): class StableCascade_StageC_VAEEncode(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="StableCascade_StageC_VAEEncode_V3", node_id="StableCascade_StageC_VAEEncode_V3",
category="latent/stable_cascade", category="latent/stable_cascade",
inputs=[ inputs=[
@ -82,7 +82,7 @@ class StableCascade_StageC_VAEEncode(io.ComfyNodeV3):
class StableCascade_StageB_Conditioning(io.ComfyNodeV3): class StableCascade_StageB_Conditioning(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="StableCascade_StageB_Conditioning_V3", node_id="StableCascade_StageB_Conditioning_V3",
category="conditioning/stable_cascade", category="conditioning/stable_cascade",
inputs=[ inputs=[
@ -108,7 +108,7 @@ class StableCascade_StageB_Conditioning(io.ComfyNodeV3):
class StableCascade_SuperResolutionControlnet(io.ComfyNodeV3): class StableCascade_SuperResolutionControlnet(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="StableCascade_SuperResolutionControlnet_V3", node_id="StableCascade_SuperResolutionControlnet_V3",
category="_for_testing/stable_cascade", category="_for_testing/stable_cascade",
is_experimental=True, is_experimental=True,

View File

@ -18,7 +18,7 @@ from comfy_api.v3 import io, ui
class CreateVideo(io.ComfyNodeV3): class CreateVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="CreateVideo_V3", node_id="CreateVideo_V3",
display_name="Create Video _V3", display_name="Create Video _V3",
category="image/video", category="image/video",
@ -47,7 +47,7 @@ class CreateVideo(io.ComfyNodeV3):
class GetVideoComponents(io.ComfyNodeV3): class GetVideoComponents(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="GetVideoComponents_V3", node_id="GetVideoComponents_V3",
display_name="Get Video Components _V3", display_name="Get Video Components _V3",
category="image/video", category="image/video",
@ -74,7 +74,7 @@ class LoadVideo(io.ComfyNodeV3):
input_dir = folder_paths.get_input_directory() input_dir = folder_paths.get_input_directory()
files = [f for f in os.listdir(input_dir) if os.path.isfile(os.path.join(input_dir, f))] files = [f for f in os.listdir(input_dir) if os.path.isfile(os.path.join(input_dir, f))]
files = folder_paths.filter_files_content_types(files, ["video"]) files = folder_paths.filter_files_content_types(files, ["video"])
return io.SchemaV3( return io.Schema(
node_id="LoadVideo_V3", node_id="LoadVideo_V3",
display_name="Load Video _V3", display_name="Load Video _V3",
category="image/video", category="image/video",
@ -108,7 +108,7 @@ class LoadVideo(io.ComfyNodeV3):
class SaveVideo(io.ComfyNodeV3): class SaveVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SaveVideo_V3", node_id="SaveVideo_V3",
display_name="Save Video _V3", display_name="Save Video _V3",
category="image/video", category="image/video",
@ -155,7 +155,7 @@ class SaveVideo(io.ComfyNodeV3):
class SaveWEBM(io.ComfyNodeV3): class SaveWEBM(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="SaveWEBM_V3", node_id="SaveWEBM_V3",
category="image/video", category="image/video",
is_experimental=True, is_experimental=True,

View File

@ -14,7 +14,7 @@ from comfy_api.v3 import io
class TrimVideoLatent(io.ComfyNodeV3): class TrimVideoLatent(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="TrimVideoLatent_V3", node_id="TrimVideoLatent_V3",
category="latent/video", category="latent/video",
is_experimental=True, is_experimental=True,
@ -39,7 +39,7 @@ class TrimVideoLatent(io.ComfyNodeV3):
class WanCameraImageToVideo(io.ComfyNodeV3): class WanCameraImageToVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="WanCameraImageToVideo_V3", node_id="WanCameraImageToVideo_V3",
category="conditioning/video_models", category="conditioning/video_models",
inputs=[ inputs=[
@ -91,7 +91,7 @@ class WanCameraImageToVideo(io.ComfyNodeV3):
class WanFirstLastFrameToVideo(io.ComfyNodeV3): class WanFirstLastFrameToVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="WanFirstLastFrameToVideo_V3", node_id="WanFirstLastFrameToVideo_V3",
category="conditioning/video_models", category="conditioning/video_models",
inputs=[ inputs=[
@ -162,7 +162,7 @@ class WanFirstLastFrameToVideo(io.ComfyNodeV3):
class WanFunControlToVideo(io.ComfyNodeV3): class WanFunControlToVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="WanFunControlToVideo_V3", node_id="WanFunControlToVideo_V3",
category="conditioning/video_models", category="conditioning/video_models",
inputs=[ inputs=[
@ -216,7 +216,7 @@ class WanFunControlToVideo(io.ComfyNodeV3):
class WanFunInpaintToVideo(io.ComfyNodeV3): class WanFunInpaintToVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="WanFunInpaintToVideo_V3", node_id="WanFunInpaintToVideo_V3",
category="conditioning/video_models", category="conditioning/video_models",
inputs=[ inputs=[
@ -247,7 +247,7 @@ class WanFunInpaintToVideo(io.ComfyNodeV3):
class WanImageToVideo(io.ComfyNodeV3): class WanImageToVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="WanImageToVideo_V3", node_id="WanImageToVideo_V3",
category="conditioning/video_models", category="conditioning/video_models",
inputs=[ inputs=[
@ -295,7 +295,7 @@ class WanImageToVideo(io.ComfyNodeV3):
class WanPhantomSubjectToVideo(io.ComfyNodeV3): class WanPhantomSubjectToVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="WanPhantomSubjectToVideo_V3", node_id="WanPhantomSubjectToVideo_V3",
category="conditioning/video_models", category="conditioning/video_models",
inputs=[ inputs=[
@ -339,7 +339,7 @@ class WanPhantomSubjectToVideo(io.ComfyNodeV3):
class WanVaceToVideo(io.ComfyNodeV3): class WanVaceToVideo(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="WanVaceToVideo_V3", node_id="WanVaceToVideo_V3",
category="conditioning/video_models", category="conditioning/video_models",
is_experimental=True, is_experimental=True,

View File

@ -13,7 +13,7 @@ from comfy_api.v3 import io
class WebcamCapture(io.ComfyNodeV3): class WebcamCapture(io.ComfyNodeV3):
@classmethod @classmethod
def define_schema(cls): def define_schema(cls):
return io.SchemaV3( return io.Schema(
node_id="WebcamCapture_V3", node_id="WebcamCapture_V3",
display_name="Webcam Capture _V3", display_name="Webcam Capture _V3",
category="image", category="image",