docs(core): add nodes and usage

This commit is contained in:
yemiancheng
2025-06-06 20:20:32 +08:00
parent 27f077e2f7
commit b101391df8
11 changed files with 332 additions and 44 deletions
+12
View File
@@ -0,0 +1,12 @@
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = false
+69
View File
@@ -0,0 +1,69 @@
# s: set *.js and other as js file for js project
# disable other with linguist-detectable for ps1
*.ps1 linguist-language=false
*.md linguist-detectable=false
*.py linguist-detectable=true
*.html linguist-detectable=false
*.js linguist-detectable=false
*.css linguist-detectable=false
# s: set *.js and other as js file for js project
# refer:
# https://huggingface.co/guoyww/animatediff/blob/main/.gitattributes
# https://huggingface.co/datasets/hdparmar/itt_specdata/blob/main/.gitattributes
# https://github.com/Richienb/git-files/blob/master/files/.gitattributes
*.7z filter=lfs diff=lfs merge=lfs -text
*.arrow filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.ckpt filter=lfs diff=lfs merge=lfs -text
*.ftz filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.h5 filter=lfs diff=lfs merge=lfs -text
*.joblib filter=lfs diff=lfs merge=lfs -text
*.lfs.* filter=lfs diff=lfs merge=lfs -text
*.mlmodel filter=lfs diff=lfs merge=lfs -text
*.model filter=lfs diff=lfs merge=lfs -text
*.msgpack filter=lfs diff=lfs merge=lfs -text
*.npy filter=lfs diff=lfs merge=lfs -text
*.npz filter=lfs diff=lfs merge=lfs -text
*.onnx filter=lfs diff=lfs merge=lfs -text
*.ot filter=lfs diff=lfs merge=lfs -text
*.parquet filter=lfs diff=lfs merge=lfs -text
*.pb filter=lfs diff=lfs merge=lfs -text
*.pickle filter=lfs diff=lfs merge=lfs -text
*.pkl filter=lfs diff=lfs merge=lfs -text
*.pt filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.safetensors filter=lfs diff=lfs merge=lfs -text
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.tar.* filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tflite filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.wasm filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
# Audio files - uncompressed
*.pcm filter=lfs diff=lfs merge=lfs -text
*.sam filter=lfs diff=lfs merge=lfs -text
*.raw filter=lfs diff=lfs merge=lfs -text
# Audio files - compressed
*.aac filter=lfs diff=lfs merge=lfs -text
*.flac filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
# Image files - uncompressed
*.bmp filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.tiff filter=lfs diff=lfs merge=lfs -text
# Image files - compressed
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
+21 -4
View File
@@ -24,6 +24,21 @@
- feat(core): node to set it as float type
- feat(core): node to set it as number type
## Nodes
- nodes show in console:
<div style="text-align: center;">
<img src="./shotscreen/nodes.console.png" alt="console" width="256">
<!-- <img src="./shotscreen/nodes.right.menu.png" alt="right mouse menu" width="256"> -->
</div>
- nodes show in right mouse menu:
<div style="text-align: center;">
<!-- <img src="./shotscreen/nodes.console.png" alt="console" width="256"> -->
<img src="./shotscreen/nodes.right.menu.png" alt="right mouse menu" width="256">
</div>
## Install
```bash
@@ -31,19 +46,21 @@
git clone https://github.com/ymc-github/ymc-node-as-x-type
```
- **deps will be installed automatically** if requirements in requirements.txt not installed when comfyui up
- **deps will be installed automatically** if deps in requirements.txt were not installed when comfyui up
## Usage
- you can find it in search box : double click + typing `set it as`
- you can find it in right mouse menu : `YMC/LINK`
- you can find it in right mouse menu : `YMC/as_x_type` (as alias)
- ~~you can find it in right mouse menu : `YMC/as_x_type` (as alias)~~
## Based-on
- pypi package [yors_comfyui_node_setup](https://pypi.org/project/yors_comfyui_node_setup/)
- pypi package [yors_comfyui_node_setup](https://pypi.org/project/yors_comfyui_node_setup/) - setup comfyui custom nodes easily
- ~~pypi package [yors_comfyui_node_as_x_type](https://pypi.org/project/yors_comfyui_node_as_x_type/) - use its nodes~~
- pypi package [yors_pano_ansi_color](https://pypi.org/project/yors_pano_ansi_color/) - info msg in console with color in your comfyui custom nodes easily
- pypi package [yors_pano_zero_field](https://pypi.org/project/yors_pano_zero_field/) - set nodes input field to be HQ in your comfyui custom nodes easily
- pypi package [yors_comfyui_node_as_x_type](https://pypi.org/project/yors_comfyui_node_as_x_type/)
## Published to Comfy registry
+39 -23
View File
@@ -1,31 +1,47 @@
# v1
# from yors_comfyui_node_setup import entry,node_install_requirements # global
# # install requirements
# node_install_requirements(__file__)
import pathlib
import toml
from yors_comfyui_node_setup import entry
from yors_pano_ansi_color import info_status,info_step,msg_padd,log_msg
# # export comfyui node vars
# __all__,NODE_CLASS_MAPPINGS,NODE_DISPLAY_NAME_MAPPINGS,NODE_MENU_NAMES = entry(__name__,__file__)
def get_version_from_pyproject(file: pathlib.Path, fallback: str = '1.0.0'):
"""
get version from pyproject.toml 's project.version
# v2
from yors_comfyui_node_setup import node_install_requirements,entry_pre_import,entry_import,get_all_classs_in_sys,register_node_list_local
get_version_from_pyproject(pathlib.Path(__file__).parent / 'pyproject.toml')
"""
try:
pyproject_content = file.read_text()
pyproject = toml.loads(pyproject_content)
version = pyproject.get('project', {}).get('version', '0.0.0')
except FileNotFoundError:
print("pyproject.toml not found, using default version.")
version = fallback
except Exception as e:
print(f"An error occurred while reading pyproject.toml: {e}")
version = fallback
return version
# install requirements
node_install_requirements(__file__)
__all__,NODE_CLASS_MAPPINGS,NODE_DISPLAY_NAME_MAPPINGS,NODE_MENU_NAMES = entry(__name__,__file__,False)
# gen __all__
__all__ = entry_pre_import(__name__,__file__)
info_step(f"__all__ + WEB_DIRECTORY")
WEB_DIRECTORY = "./web"
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS", "WEB_DIRECTORY"]
# import moudle with __all__
entry_import(__name__,__all__)
# get directory of this file
current_file_path = pathlib.Path(__file__)
name = str(current_file_path.parent)
pyproject_file = current_file_path.parent / 'pyproject.toml'
version= get_version_from_pyproject(pyproject_file)
# get class after importing moudle with __all__
this_module_all_classes = get_all_classs_in_sys(__name__)
# register node with default category
# NODE_CLASS_MAPPINGS,NODE_DISPLAY_NAME_MAPPINGS,NODE_MENU_NAMES = register_node_list(this_module_all_classes,False)
# addtional register node with custom category
NODE_CLASS_MAPPINGS,NODE_DISPLAY_NAME_MAPPINGS,NODE_MENU_NAMES = register_node_list_local(this_module_all_classes,True,"YMC/as_x_type")
# print(NODE_CLASS_MAPPINGS,NODE_DISPLAY_NAME_MAPPINGS,NODE_MENU_NAMES)
print("\n".join(NODE_MENU_NAMES))
log_msg(msg_padd("=",60,"="))
log_msg(msg_padd(f'welocme to {name}',60,"="))
log_msg(f'version: {version}')
log_msg(f'node counts:{len(NODE_MENU_NAMES)}')
log_msg(f'node menu names:')
NODE_MENU_NAMES.sort()
for node_name in NODE_MENU_NAMES:
# log_msg(f'node name:{node_name}')
info_status(f'{node_name}',0)
log_msg(msg_padd("=",60,"="))
+175 -15
View File
@@ -1,21 +1,181 @@
# 1. define yors comfyui nodes here
# ...
from yors_pano_zero_field import ZeroField,ZERO_ANY
# ucase 1.1:
from yors_comfyui_node_as_x_type import * # import all yors comfyui nodes from it
# class ZeroAnyType(str):
# def __ne__(self, __value: object) -> bool:
# return False
# def __eq__(self, _):
# return True
# ZERO_ANY = ZeroAnyType("*")
# ucase 1.2:
# from yors_comfyui_node_as_x_type import NodeSetItAsImage # import some yors comfyui nodes from it
CURRENT_CATEGORY="YMC/LINK"
CURRENT_FUNCTION="exec"
# feat(core): node to set it as any type
class NodeSetItAsAny:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
# 2. reset yors comfyui nodes category (it will be used set rmb in yors_comfyui_node_setup)
# from yors_comfyui_node_reset_rmb import reset_rmb
# reset_rmb(__name__,"YMC/as_x_type") // danger!
},
"optional":{
"a": (ZERO_ANY),
},
# "hidden": {
# "unique_id": "UNIQUE_ID",
# "extra_pnginfo": "EXTRA_PNGINFO",
# },
}
# 3. set nodes category alias
# to set the right mouse menu as your likes.
# INPUT_IS_LIST = True
RETURN_TYPES = (ZERO_ANY,)
RETURN_NAMES = ("a",)
FUNCTION = CURRENT_FUNCTION
CATEGORY = CURRENT_CATEGORY
NODE_NAME = "as any"
NODE_DESC = "set it as any type"
# OUTPUT_NODE = True
# OUTPUT_IS_LIST = (True,)
def exec(self, a=None):
return (a,)
# feat(core): node to set it as image type
class NodeSetItAsImage:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
import yors_comfyui_node_as_x_type as base
from yors_comfyui_node_setup import get_sys_module,set_node_class_category_alias
this_py_module = get_sys_module(__name__)
set_node_class_category_alias(base,this_py_module,"YMC/as_x_type",True)
},
"optional":{
"a": (ZERO_ANY),
},
# "hidden": {
# "unique_id": "UNIQUE_ID",
# "extra_pnginfo": "EXTRA_PNGINFO",
# },
}
# INPUT_IS_LIST = True
RETURN_TYPES = ("IMAGE",)
RETURN_NAMES = ("image",)
FUNCTION = CURRENT_FUNCTION
CATEGORY = CURRENT_CATEGORY
NODE_NAME = "as image"
NODE_DESC = "set it as image type"
# OUTPUT_NODE = True
# OUTPUT_IS_LIST = (True,)
def exec(self, a=None):
return (a,)
# feat(core): node to set it as model type
class NodeSetItAsModel:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
},
"optional":{
"a": (ZERO_ANY),
},
# "hidden": {
# "unique_id": "UNIQUE_ID",
# "extra_pnginfo": "EXTRA_PNGINFO",
# },
}
# INPUT_IS_LIST = True
RETURN_TYPES = ("MODEL",)
RETURN_NAMES = ("model",)
FUNCTION = CURRENT_FUNCTION
CATEGORY = CURRENT_CATEGORY
NODE_NAME = "as model"
NODE_DESC = "set it as model type"
# OUTPUT_NODE = True
# OUTPUT_IS_LIST = (True,)
def exec(self, a=None):
return (a,)
# feat(core): node to set it as clip type
class NodeSetItAsClip(NodeSetItAsAny):
RETURN_TYPES = ("CLIP",)
RETURN_NAMES = ("clip",)
FUNCTION = CURRENT_FUNCTION
CATEGORY = CURRENT_CATEGORY
NODE_NAME = "as clip"
NODE_DESC = "set it as clip type"
# feat(core): node to set it as vae type
class NodeSetItAsVae(NodeSetItAsAny):
RETURN_TYPES = ("VAE",)
RETURN_NAMES = ("vae",)
FUNCTION = CURRENT_FUNCTION
CATEGORY = CURRENT_CATEGORY
NODE_NAME = "as vae"
NODE_DESC = "set it as vae type"
# feat(core): node to set it as conditioning type
class NodeSetItAsConditioning(NodeSetItAsAny):
RETURN_TYPES = ("CONDITIONING",)
RETURN_NAMES = ("Conditioning",)
FUNCTION = CURRENT_FUNCTION
CATEGORY = CURRENT_CATEGORY
NODE_NAME = "as conditioning"
NODE_DESC = "set it as conditioning type"
# feat(core): node to set it as latent type
class NodeSetItAsLatent(NodeSetItAsAny):
RETURN_TYPES = ("LATENT",)
RETURN_NAMES = ("Latent",)
FUNCTION = CURRENT_FUNCTION
CATEGORY = CURRENT_CATEGORY
NODE_NAME = "as latent"
NODE_DESC = "set it as latent type"
# feat(core): node to set it as string type
class NodeSetItAsString(NodeSetItAsAny):
RETURN_TYPES = ("STRING",)
RETURN_NAMES = ("String",)
FUNCTION = CURRENT_FUNCTION
CATEGORY = CURRENT_CATEGORY
NODE_NAME = "as string"
NODE_DESC = "set it as string type"
# feat(core): node to set it as int type
class NodeSetItAsInt(NodeSetItAsAny):
RETURN_TYPES = ("INT",)
RETURN_NAMES = ("Int",)
FUNCTION = CURRENT_FUNCTION
CATEGORY = CURRENT_CATEGORY
NODE_NAME = "as int"
NODE_DESC = "set it as int type"
# feat(core): node to set it as float type
class NodeSetItAsFloat(NodeSetItAsAny):
RETURN_TYPES = ("FLOAT",)
RETURN_NAMES = ("Float",)
FUNCTION = CURRENT_FUNCTION
CATEGORY = CURRENT_CATEGORY
NODE_NAME = "as float"
NODE_DESC = "set it as float type"
# feat(core): node to set it as number type
class NodeSetItAsNumber(NodeSetItAsAny):
RETURN_TYPES = ("NUMBER",)
RETURN_NAMES = ("Number",)
FUNCTION = CURRENT_FUNCTION
CATEGORY = CURRENT_CATEGORY
NODE_NAME = "as number"
NODE_DESC = "set it as number type"
+1 -1
View File
@@ -1,7 +1,7 @@
[project]
name = "ymc-node-as-x-type"
description = "some comfyui custom nodes to set it as known type"
version = "0.1.1"
version = "0.1.2"
license = { file = "LICENSE" }
[project.urls]
+3 -1
View File
@@ -1,2 +1,4 @@
yors_comfyui_node_setup
yors_comfyui_node_as_x_type
# yors_comfyui_node_as_x_type
yors_pano_zero_field
yors_pano_ansi_color
+3
View File
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f8d8be60b87209c0acecac71d4d37ab0f40a59a4e02ea0d7f7fc1e6c19e46530
size 89382
+3
View File
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4406804403ee8ae26608e2e2f587e96e74e73869255519d35bc689a3e2d1b4a3
size 39039
+3
View File
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5793e9f9effa992e2366c9075259f7bcc7b0012600518a9403a79ae89c1e7511
size 39497
+3
View File
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dcfbdf88eebf3cc78c3daa6dbae5112e2ef2aab458c4100ec673f3fe287a785c
size 12088