Files
M1kep-ComfyLiterals/nodes.py
T

137 lines
2.9 KiB
Python

import folder_paths
# Hack: string type that is always equal in not equal comparisons
class AnyType(str):
def __ne__(self, __value: object) -> bool:
return False
# Our any instance wants to be a wildcard string
ANY = AnyType("*")
class IntLiteral:
def __init__(self, ):
pass
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"Number": ("STRING", {}),
}
}
RETURN_TYPES = ("INT",)
FUNCTION = "to_int"
CATEGORY = "Literals"
def to_int(self, Number):
try:
ret_val = int(Number)
except Exception:
raise Exception("Invalid value provided for INT")
return (ret_val,)
class FloatLiteral:
def __init__(self, ):
pass
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"Number": ("STRING", {}),
}
}
RETURN_TYPES = ("FLOAT",)
FUNCTION = "to_float"
CATEGORY = "Literals"
def to_float(self, Number):
try:
ret_val = float(Number)
except Exception:
raise Exception("Invalid value provided for FLOAT")
return (ret_val,)
class StringLiteral:
def __init__(self, ):
pass
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"String": ("STRING", {"multiline": True}),
}
}
RETURN_TYPES = ("STRING",)
FUNCTION = "to_string"
CATEGORY = "Literals"
def to_string(self, String):
return (String,)
class CheckpointListLiteral:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"literal": ("STRING", {
"multiline": True,
"default": "\n".join(folder_paths.get_filename_list("checkpoints"))
}),
},
}
RETURN_TYPES = (ANY,)
RETURN_NAMES = ("Selected Checkpoints",)
OUTPUT_IS_LIST = (True,)
FUNCTION = "parse_literal"
# OUTPUT_NODE = False
CATEGORY = "List Stuff"
def parse_literal(self, literal):
split = list(filter(None, literal.split("\n")))
return (split,)
class LoraListLiteral:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"literal": ("STRING", {
"multiline": True,
"default": "\n".join(folder_paths.get_filename_list("loras"))
}),
},
}
RETURN_TYPES = (ANY,)
RETURN_NAMES = ("Selected Loras",)
OUTPUT_IS_LIST = (True,)
FUNCTION = "parse_literal"
# OUTPUT_NODE = False
CATEGORY = "List Stuff"
def parse_literal(self, literal):
split = list(filter(None, literal.split("\n")))
return (split,)