mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2025-12-19 02:53:05 +08:00
Separate integer primitive that does not contain randomizing function which will act as primary integer primitive and for integers with randomizing, a new primitive named RandInt instead. This will greatly reduce canvas clutter when using primitive integer for purposes like steps, resolution and other use cases that does not need randomization nor are related to seed. Having the randomizing element always present also runs the risk of the user accidentally leaving node at random on a primitive that then passes that value to a node that causes server to hang because of it. Possibly even worse.
129 lines
3.3 KiB
Python
129 lines
3.3 KiB
Python
import sys
|
|
from typing_extensions import override
|
|
|
|
from comfy_api.latest import ComfyExtension, io
|
|
|
|
|
|
class String(io.ComfyNode):
|
|
@classmethod
|
|
def define_schema(cls):
|
|
return io.Schema(
|
|
node_id="PrimitiveString",
|
|
display_name="String",
|
|
category="utils/primitive",
|
|
inputs=[
|
|
io.String.Input("value"),
|
|
],
|
|
outputs=[io.String.Output()],
|
|
)
|
|
|
|
@classmethod
|
|
def execute(cls, value: str) -> io.NodeOutput:
|
|
return io.NodeOutput(value)
|
|
|
|
|
|
class StringMultiline(io.ComfyNode):
|
|
@classmethod
|
|
def define_schema(cls):
|
|
return io.Schema(
|
|
node_id="PrimitiveStringMultiline",
|
|
display_name="String (Multiline)",
|
|
category="utils/primitive",
|
|
inputs=[
|
|
io.String.Input("value", multiline=True),
|
|
],
|
|
outputs=[io.String.Output()],
|
|
)
|
|
|
|
@classmethod
|
|
def execute(cls, value: str) -> io.NodeOutput:
|
|
return io.NodeOutput(value)
|
|
|
|
|
|
class RandInt(io.ComfyNode):
|
|
@classmethod
|
|
def define_schema(cls):
|
|
return io.Schema(
|
|
node_id="PrimitiveRandomInt",
|
|
display_name="RandomInt",
|
|
category="utils/primitive",
|
|
inputs=[
|
|
io.Int.Input("value", min=-sys.maxsize, max=sys.maxsize, control_after_generate=True),
|
|
],
|
|
outputs=[io.Int.Output()],
|
|
)
|
|
|
|
@classmethod
|
|
def execute(cls, value: int) -> io.NodeOutput:
|
|
return io.NodeOutput(value)
|
|
|
|
|
|
class Int(io.ComfyNode):
|
|
@classmethod
|
|
def define_schema(cls):
|
|
return io.Schema(
|
|
node_id="PrimitiveInt",
|
|
display_name="Int",
|
|
category="utils/primitive",
|
|
inputs=[
|
|
io.Int.Input("value", min=-sys.maxsize, max=sys.maxsize),
|
|
],
|
|
outputs=[io.Int.Output()],
|
|
)
|
|
|
|
@classmethod
|
|
def execute(cls, value: int) -> io.NodeOutput:
|
|
return io.NodeOutput(value)
|
|
|
|
|
|
class Float(io.ComfyNode):
|
|
@classmethod
|
|
def define_schema(cls):
|
|
return io.Schema(
|
|
node_id="PrimitiveFloat",
|
|
display_name="Float",
|
|
category="utils/primitive",
|
|
inputs=[
|
|
io.Float.Input("value", min=-sys.maxsize, max=sys.maxsize),
|
|
],
|
|
outputs=[io.Float.Output()],
|
|
)
|
|
|
|
@classmethod
|
|
def execute(cls, value: float) -> io.NodeOutput:
|
|
return io.NodeOutput(value)
|
|
|
|
|
|
class Boolean(io.ComfyNode):
|
|
@classmethod
|
|
def define_schema(cls):
|
|
return io.Schema(
|
|
node_id="PrimitiveBoolean",
|
|
display_name="Boolean",
|
|
category="utils/primitive",
|
|
inputs=[
|
|
io.Boolean.Input("value"),
|
|
],
|
|
outputs=[io.Boolean.Output()],
|
|
)
|
|
|
|
@classmethod
|
|
def execute(cls, value: bool) -> io.NodeOutput:
|
|
return io.NodeOutput(value)
|
|
|
|
|
|
class PrimitivesExtension(ComfyExtension):
|
|
@override
|
|
async def get_node_list(self) -> list[type[io.ComfyNode]]:
|
|
return [
|
|
String,
|
|
StringMultiline,
|
|
RandInt,
|
|
Int,
|
|
Float,
|
|
Boolean,
|
|
]
|
|
|
|
async def comfy_entrypoint() -> PrimitivesExtension:
|
|
return PrimitivesExtension()
|