|
"""The original Context Switch.""" |
|
from .constants import get_category, get_name |
|
from .context_utils import is_context_empty |
|
from .utils import ByPassTypeTuple, FlexibleOptionalInputType |
|
|
|
|
|
class RgthreeDynamicContextSwitch: |
|
"""The initial Context Switch node.""" |
|
|
|
NAME = get_name("Dynamic Context Switch") |
|
CATEGORY = get_category() |
|
|
|
@classmethod |
|
def INPUT_TYPES(cls): |
|
return { |
|
"required": {}, |
|
"optional": FlexibleOptionalInputType("RGTHREE_DYNAMIC_CONTEXT"), |
|
} |
|
|
|
RETURN_TYPES = ByPassTypeTuple(("RGTHREE_DYNAMIC_CONTEXT",)) |
|
RETURN_NAMES = ByPassTypeTuple(("CONTEXT",)) |
|
FUNCTION = "switch" |
|
|
|
def switch(self, **kwargs): |
|
"""Chooses the first non-empty Context to output.""" |
|
|
|
output_keys = kwargs.get('output_keys', None) |
|
|
|
ctx = None |
|
for key, value in kwargs.items(): |
|
if key.startswith('ctx_') and not is_context_empty(value): |
|
ctx = value |
|
break |
|
|
|
res = [ctx] |
|
output_keys = output_keys.split(',') if output_keys is not None else [] |
|
for key in output_keys: |
|
res.append(ctx[key] if ctx is not None and key in ctx else None) |
|
return tuple(res) |
|
|