| from typing_extensions import override |
|
|
| from comfy_api.latest import ComfyExtension, io |
|
|
|
|
| class CLIPTextEncodeControlnet(io.ComfyNode): |
| @classmethod |
| def define_schema(cls) -> io.Schema: |
| return io.Schema( |
| node_id="CLIPTextEncodeControlnet", |
| category="_for_testing/conditioning", |
| inputs=[ |
| io.Clip.Input("clip"), |
| io.Conditioning.Input("conditioning"), |
| io.String.Input("text", multiline=True, dynamic_prompts=True), |
| ], |
| outputs=[io.Conditioning.Output()], |
| is_experimental=True, |
| ) |
|
|
| @classmethod |
| def execute(cls, clip, conditioning, text) -> io.NodeOutput: |
| tokens = clip.tokenize(text) |
| cond, pooled = clip.encode_from_tokens(tokens, return_pooled=True) |
| c = [] |
| for t in conditioning: |
| n = [t[0], t[1].copy()] |
| n[1]['cross_attn_controlnet'] = cond |
| n[1]['pooled_output_controlnet'] = pooled |
| c.append(n) |
| return io.NodeOutput(c) |
|
|
| class T5TokenizerOptions(io.ComfyNode): |
| @classmethod |
| def define_schema(cls) -> io.Schema: |
| return io.Schema( |
| node_id="T5TokenizerOptions", |
| category="_for_testing/conditioning", |
| inputs=[ |
| io.Clip.Input("clip"), |
| io.Int.Input("min_padding", default=0, min=0, max=10000, step=1), |
| io.Int.Input("min_length", default=0, min=0, max=10000, step=1), |
| ], |
| outputs=[io.Clip.Output()], |
| is_experimental=True, |
| ) |
|
|
| @classmethod |
| def execute(cls, clip, min_padding, min_length) -> io.NodeOutput: |
| clip = clip.clone() |
| for t5_type in ["t5xxl", "pile_t5xl", "t5base", "mt5xl", "umt5xxl"]: |
| clip.set_tokenizer_option("{}_min_padding".format(t5_type), min_padding) |
| clip.set_tokenizer_option("{}_min_length".format(t5_type), min_length) |
|
|
| return io.NodeOutput(clip) |
|
|
|
|
| class CondExtension(ComfyExtension): |
| @override |
| async def get_node_list(self) -> list[type[io.ComfyNode]]: |
| return [ |
| CLIPTextEncodeControlnet, |
| T5TokenizerOptions, |
| ] |
|
|
|
|
| async def comfy_entrypoint() -> CondExtension: |
| return CondExtension() |
|
|