Test work around for missing imports when the GitHub actions are running, part 2

This commit is contained in:
StableLlama
2025-05-25 14:56:15 +02:00
parent 42fa147352
commit 48c68f3e5c
16 changed files with 207 additions and 17 deletions
+32
View File
@@ -0,0 +1,32 @@
class ContainsDynamicDict(dict):
"""
A custom dictionary that dynamically returns values for keys based on a pattern.
- If a key in the passed dictionary has a value with `{"_dynamic": "number"}` in the tuple's second position,
then any other key starting with the same string and ending with a number will return that value.
- For other keys, normal dictionary lookup behavior applies.
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Store prefixes associated with `_dynamic` values for efficient lookup
self._dynamic_prefixes = {
key.rstrip("0123456789"): value
for key, value in self.items()
if isinstance(value, tuple) and len(value) > 1 and value[1].get("_dynamic") == "number"
}
def __contains__(self, key):
# Check if key matches a dynamically handled prefix or exists normally
return (
any(key.startswith(prefix) and key[len(prefix):].isdigit() for prefix in self._dynamic_prefixes)
or super().__contains__(key)
)
def __getitem__(self, key):
# Dynamically return the value for keys matching a `prefix<number>` pattern
print(f'_ dynamic prefixes: {self._dynamic_prefixes}; get key: {key}')
for prefix, value in self._dynamic_prefixes.items():
if key.startswith(prefix) and key[len(prefix):].isdigit():
return value
# Fallback to normal dictionary behavior for other keys
return super().__getitem__(key)
+1
View File
@@ -1,4 +1,5 @@
from inspect import cleandoc
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
+12 -1
View File
@@ -1,6 +1,17 @@
from typing import Any
from inspect import cleandoc
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
class CastToBoolean(ComfyNodeABC):
"""
+12 -1
View File
@@ -1,6 +1,17 @@
from typing import Any
from inspect import cleandoc
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
class Equal(ComfyNodeABC):
"""
+14 -2
View File
@@ -1,7 +1,19 @@
from typing import Any
from inspect import cleandoc
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
from comfy_execution.graph import ExecutionBlocker
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
from comfy_execution.graph import ExecutionBlocker
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
ExecutionBlocker = lambda x: x
class IfElse(ComfyNodeABC):
+12 -1
View File
@@ -1,6 +1,17 @@
from typing import Any
from inspect import cleandoc
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
INT_MAX = 2**15-1 # the computer can do more but be nice to the eyes
+12 -1
View File
@@ -1,6 +1,17 @@
from typing import Any
from inspect import cleandoc
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
class DictCreate(ComfyNodeABC):
+12 -1
View File
@@ -1,5 +1,16 @@
from inspect import cleandoc
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
class FloatCreate(ComfyNodeABC):
+12 -1
View File
@@ -1,6 +1,17 @@
from inspect import cleandoc
from typing import Literal
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
class IntCreate(ComfyNodeABC):
+16 -3
View File
@@ -1,6 +1,19 @@
from typing import Any
from inspect import cleandoc
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
from ._dynamic_input import ContainsDynamicDict
INT_MAX = 2**15-1 # the computer can do more but be nice to the eyes
@@ -115,9 +128,9 @@ class ListCreateFromString(ComfyNodeABC):
@classmethod
def INPUT_TYPES(cls):
return {
"optional": {
"optional": ContainsDynamicDict({
"item_0": (IO.STRING, {"_dynamic": "number"}),
}
})
}
RETURN_TYPES = ("LIST",)
+12 -1
View File
@@ -1,5 +1,16 @@
from inspect import cleandoc
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
class MathFormula(ComfyNodeABC):
"""
+12 -1
View File
@@ -1,7 +1,18 @@
import math
from inspect import cleandoc
from typing import Literal, Union
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
class MathAbs(ComfyNodeABC):
"""
+12 -1
View File
@@ -1,7 +1,18 @@
from inspect import cleandoc
import os
import glob
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
class PathAbspath(ComfyNodeABC):
+12 -1
View File
@@ -1,6 +1,17 @@
from inspect import cleandoc
import re
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
class RegexFindallDataList(ComfyNodeABC):
"""
+12 -1
View File
@@ -1,6 +1,17 @@
from typing import Any
from inspect import cleandoc
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
class SetCreate(ComfyNodeABC):
+12 -1
View File
@@ -1,5 +1,16 @@
from inspect import cleandoc
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
try:
from comfy.comfy_types.node_typing import IO, ComfyNodeABC
except:
class IO:
BOOLEAN = "BOOLEAN"
INT = "INT"
FLOAT = "FLOAT"
STRING = "STRING"
NUMBER = "FLOAT,INT"
ANY = "*"
ComfyNodeABC = object
class StringCapitalize(ComfyNodeABC):
"""Converts the first character of the input string to uppercase and all other characters to lowercase."""