mirror of
https://git.datalinker.icu/ltdrdata/ComfyUI-Manager
synced 2025-12-09 06:04:31 +08:00
Enable pyflake ruff lint rules (#1340)
This commit is contained in:
parent
445affd609
commit
7b812dee75
23
.github/workflows/ruff.yml
vendored
Normal file
23
.github/workflows/ruff.yml
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
name: Python Linting
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
ruff:
|
||||||
|
name: Run Ruff
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
|
||||||
|
- name: Install Ruff
|
||||||
|
run: pip install ruff
|
||||||
|
|
||||||
|
- name: Run Ruff
|
||||||
|
run: ruff check .
|
||||||
@ -5,11 +5,11 @@ cli_mode_flag = os.path.join(os.path.dirname(__file__), '.enable-cli-only-mode')
|
|||||||
|
|
||||||
if not os.path.exists(cli_mode_flag):
|
if not os.path.exists(cli_mode_flag):
|
||||||
sys.path.append(os.path.join(os.path.dirname(__file__), "glob"))
|
sys.path.append(os.path.join(os.path.dirname(__file__), "glob"))
|
||||||
import manager_server
|
import manager_server # noqa: F401
|
||||||
import share_3rdparty
|
import share_3rdparty # noqa: F401
|
||||||
WEB_DIRECTORY = "js"
|
WEB_DIRECTORY = "js"
|
||||||
else:
|
else:
|
||||||
print(f"\n[ComfyUI-Manager] !! cli-only-mode is enabled !!\n")
|
print("\n[ComfyUI-Manager] !! cli-only-mode is enabled !!\n")
|
||||||
|
|
||||||
NODE_CLASS_MAPPINGS = {}
|
NODE_CLASS_MAPPINGS = {}
|
||||||
__all__ = ['NODE_CLASS_MAPPINGS']
|
__all__ = ['NODE_CLASS_MAPPINGS']
|
||||||
|
|||||||
17
cm-cli.py
17
cm-cli.py
@ -24,7 +24,7 @@ comfyui_manager_path = os.path.dirname(__file__)
|
|||||||
comfy_path = os.environ.get('COMFYUI_PATH')
|
comfy_path = os.environ.get('COMFYUI_PATH')
|
||||||
|
|
||||||
if comfy_path is None:
|
if comfy_path is None:
|
||||||
print(f"\n[bold yellow]WARN: The `COMFYUI_PATH` environment variable is not set. Assuming `custom_nodes/ComfyUI-Manager/../../` as the ComfyUI path.[/bold yellow]", file=sys.stderr)
|
print("\n[bold yellow]WARN: The `COMFYUI_PATH` environment variable is not set. Assuming `custom_nodes/ComfyUI-Manager/../../` as the ComfyUI path.[/bold yellow]", file=sys.stderr)
|
||||||
comfy_path = os.path.abspath(os.path.join(comfyui_manager_path, '..', '..'))
|
comfy_path = os.path.abspath(os.path.join(comfyui_manager_path, '..', '..'))
|
||||||
|
|
||||||
startup_script_path = os.path.join(comfyui_manager_path, "startup-scripts")
|
startup_script_path = os.path.join(comfyui_manager_path, "startup-scripts")
|
||||||
@ -48,7 +48,6 @@ def check_comfyui_hash():
|
|||||||
repo = git.Repo(comfy_path)
|
repo = git.Repo(comfy_path)
|
||||||
core.comfy_ui_revision = len(list(repo.iter_commits('HEAD')))
|
core.comfy_ui_revision = len(list(repo.iter_commits('HEAD')))
|
||||||
|
|
||||||
comfy_ui_hash = repo.head.commit.hexsha
|
|
||||||
cm_global.variables['comfyui.revision'] = core.comfy_ui_revision
|
cm_global.variables['comfyui.revision'] = core.comfy_ui_revision
|
||||||
|
|
||||||
core.comfy_ui_commit_datetime = repo.head.commit.committed_datetime
|
core.comfy_ui_commit_datetime = repo.head.commit.committed_datetime
|
||||||
@ -141,7 +140,7 @@ class Ctx:
|
|||||||
total = len(node_paths)
|
total = len(node_paths)
|
||||||
i = 1
|
i = 1
|
||||||
for x in node_paths:
|
for x in node_paths:
|
||||||
print(f"----------------------------------------------------------------------------------------------------")
|
print("----------------------------------------------------------------------------------------------------")
|
||||||
print(f"Restoring [{i}/{total}]: {x}")
|
print(f"Restoring [{i}/{total}]: {x}")
|
||||||
self.post_install(x)
|
self.post_install(x)
|
||||||
i += 1
|
i += 1
|
||||||
@ -754,13 +753,13 @@ def cli_only_mode(
|
|||||||
)):
|
)):
|
||||||
cli_mode_flag = os.path.join(os.path.dirname(__file__), '.enable-cli-only-mode')
|
cli_mode_flag = os.path.join(os.path.dirname(__file__), '.enable-cli-only-mode')
|
||||||
if mode.lower() == 'enable':
|
if mode.lower() == 'enable':
|
||||||
with open(cli_mode_flag, 'w') as file:
|
with open(cli_mode_flag, 'w'):
|
||||||
pass
|
pass
|
||||||
print(f"\nINFO: `cli-only-mode` is enabled\n")
|
print("\nINFO: `cli-only-mode` is enabled\n")
|
||||||
elif mode.lower() == 'disable':
|
elif mode.lower() == 'disable':
|
||||||
if os.path.exists(cli_mode_flag):
|
if os.path.exists(cli_mode_flag):
|
||||||
os.remove(cli_mode_flag)
|
os.remove(cli_mode_flag)
|
||||||
print(f"\nINFO: `cli-only-mode` is disabled\n")
|
print("\nINFO: `cli-only-mode` is disabled\n")
|
||||||
else:
|
else:
|
||||||
print(f"\n[bold red]Invalid value for cli-only-mode: {mode}[/bold red]\n")
|
print(f"\n[bold red]Invalid value for cli-only-mode: {mode}[/bold red]\n")
|
||||||
exit(1)
|
exit(1)
|
||||||
@ -896,7 +895,7 @@ def restore_snapshot(
|
|||||||
elif 'APPLY SNAPSHOT: False' in x:
|
elif 'APPLY SNAPSHOT: False' in x:
|
||||||
is_failed = True
|
is_failed = True
|
||||||
|
|
||||||
print(f"Restore snapshot.")
|
print("Restore snapshot.")
|
||||||
cmd_str = [sys.executable, git_script_path, '--apply-snapshot', snapshot_path] + extras
|
cmd_str = [sys.executable, git_script_path, '--apply-snapshot', snapshot_path] + extras
|
||||||
output = subprocess.check_output(cmd_str, cwd=custom_nodes_path, text=True)
|
output = subprocess.check_output(cmd_str, cwd=custom_nodes_path, text=True)
|
||||||
msg_lines = output.split('\n')
|
msg_lines = output.split('\n')
|
||||||
@ -935,7 +934,7 @@ def restore_dependencies():
|
|||||||
total = len(node_paths)
|
total = len(node_paths)
|
||||||
i = 1
|
i = 1
|
||||||
for x in node_paths:
|
for x in node_paths:
|
||||||
print(f"----------------------------------------------------------------------------------------------------")
|
print("----------------------------------------------------------------------------------------------------")
|
||||||
print(f"Restoring [{i}/{total}]: {x}")
|
print(f"Restoring [{i}/{total}]: {x}")
|
||||||
cm_ctx.post_install(x)
|
cm_ctx.post_install(x)
|
||||||
i += 1
|
i += 1
|
||||||
@ -1028,4 +1027,4 @@ if __name__ == '__main__':
|
|||||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
sys.exit(app())
|
sys.exit(app())
|
||||||
|
|
||||||
print(f"")
|
print("")
|
||||||
|
|||||||
@ -41,7 +41,7 @@ nodelist_path = os.path.join(os.path.dirname(__file__), "custom-node-list.json")
|
|||||||
working_directory = os.getcwd()
|
working_directory = os.getcwd()
|
||||||
|
|
||||||
if os.path.basename(working_directory) != 'custom_nodes':
|
if os.path.basename(working_directory) != 'custom_nodes':
|
||||||
print(f"WARN: This script should be executed in custom_nodes dir")
|
print("WARN: This script should be executed in custom_nodes dir")
|
||||||
print(f"DBG: INFO {working_directory}")
|
print(f"DBG: INFO {working_directory}")
|
||||||
print(f"DBG: INFO {sys.argv}")
|
print(f"DBG: INFO {sys.argv}")
|
||||||
# exit(-1)
|
# exit(-1)
|
||||||
|
|||||||
@ -21,7 +21,7 @@ glob_path = os.path.join(os.path.dirname(__file__)) # ComfyUI-Manager/glob
|
|||||||
sys.path.append(glob_path)
|
sys.path.append(glob_path)
|
||||||
|
|
||||||
import cm_global
|
import cm_global
|
||||||
from manager_util import *
|
from manager_util import PIPFixer, StrictVersion
|
||||||
|
|
||||||
version = [2, 55, 5]
|
version = [2, 55, 5]
|
||||||
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')
|
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')
|
||||||
@ -116,8 +116,8 @@ def get_installed_packages():
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
pip_map[y[0]] = y[1]
|
pip_map[y[0]] = y[1]
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError:
|
||||||
print(f"[ComfyUI-Manager] Failed to retrieve the information of installed pip packages.")
|
print("[ComfyUI-Manager] Failed to retrieve the information of installed pip packages.")
|
||||||
return set()
|
return set()
|
||||||
|
|
||||||
return pip_map
|
return pip_map
|
||||||
@ -351,7 +351,7 @@ def try_install_script(url, repo_path, install_cmd, instant_execution=False):
|
|||||||
if comfy_ui_commit_datetime.date() < comfy_ui_required_commit_datetime.date():
|
if comfy_ui_commit_datetime.date() < comfy_ui_required_commit_datetime.date():
|
||||||
print("\n\n###################################################################")
|
print("\n\n###################################################################")
|
||||||
print(f"[WARN] ComfyUI-Manager: Your ComfyUI version ({comfy_ui_revision})[{comfy_ui_commit_datetime.date()}] is too old. Please update to the latest version.")
|
print(f"[WARN] ComfyUI-Manager: Your ComfyUI version ({comfy_ui_revision})[{comfy_ui_commit_datetime.date()}] is too old. Please update to the latest version.")
|
||||||
print(f"[WARN] The extension installation feature may not work properly in the current installed ComfyUI version on Windows environment.")
|
print("[WARN] The extension installation feature may not work properly in the current installed ComfyUI version on Windows environment.")
|
||||||
print("###################################################################\n\n")
|
print("###################################################################\n\n")
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
@ -390,7 +390,7 @@ def __win_check_git_update(path, do_fetch=False, do_update=False):
|
|||||||
output, _ = process.communicate()
|
output, _ = process.communicate()
|
||||||
output = output.decode('utf-8').strip()
|
output = output.decode('utf-8').strip()
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f'[ComfyUI-Manager] failed to fixing')
|
print('[ComfyUI-Manager] failed to fixing')
|
||||||
|
|
||||||
if 'detected dubious' in output:
|
if 'detected dubious' in output:
|
||||||
print(f'\n[ComfyUI-Manager] Failed to fixing repository setup. Please execute this command on cmd: \n'
|
print(f'\n[ComfyUI-Manager] Failed to fixing repository setup. Please execute this command on cmd: \n'
|
||||||
@ -468,7 +468,7 @@ def execute_install_script(url, repo_path, lazy_mode=False, instant_execution=Fa
|
|||||||
pip_fixer.fix_broken()
|
pip_fixer.fix_broken()
|
||||||
|
|
||||||
if os.path.exists(install_script_path):
|
if os.path.exists(install_script_path):
|
||||||
print(f"Install: install script")
|
print("Install: install script")
|
||||||
install_cmd = [sys.executable, "install.py"]
|
install_cmd = [sys.executable, "install.py"]
|
||||||
try_install_script(url, repo_path, install_cmd, instant_execution=instant_execution)
|
try_install_script(url, repo_path, install_cmd, instant_execution=instant_execution)
|
||||||
|
|
||||||
@ -663,7 +663,7 @@ async def get_data(uri, silent=False):
|
|||||||
|
|
||||||
json_obj = json.loads(json_text)
|
json_obj = json.loads(json_text)
|
||||||
if not silent:
|
if not silent:
|
||||||
print(f" [DONE]")
|
print(" [DONE]")
|
||||||
return json_obj
|
return json_obj
|
||||||
|
|
||||||
|
|
||||||
@ -942,7 +942,7 @@ def update_path(repo_path, instant_execution=False):
|
|||||||
remote.fetch()
|
remote.fetch()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if 'detected dubious' in str(e):
|
if 'detected dubious' in str(e):
|
||||||
print(f"[ComfyUI-Manager] Try fixing 'dubious repository' error on 'ComfyUI' repository")
|
print("[ComfyUI-Manager] Try fixing 'dubious repository' error on 'ComfyUI' repository")
|
||||||
safedir_path = comfy_path.replace('\\', '/')
|
safedir_path = comfy_path.replace('\\', '/')
|
||||||
subprocess.run(['git', 'config', '--global', '--add', 'safe.directory', safedir_path])
|
subprocess.run(['git', 'config', '--global', '--add', 'safe.directory', safedir_path])
|
||||||
try:
|
try:
|
||||||
@ -1084,7 +1084,7 @@ def get_current_snapshot():
|
|||||||
repo_path = comfy_path
|
repo_path = comfy_path
|
||||||
|
|
||||||
if not os.path.exists(os.path.join(repo_path, '.git')):
|
if not os.path.exists(os.path.join(repo_path, '.git')):
|
||||||
print(f"ComfyUI update fail: The installed ComfyUI does not have a Git repository.")
|
print("ComfyUI update fail: The installed ComfyUI does not have a Git repository.")
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
repo = git.Repo(repo_path)
|
repo = git.Repo(repo_path)
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import threading
|
|||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import git
|
import git
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
from server import PromptServer
|
from server import PromptServer
|
||||||
import manager_core as core
|
import manager_core as core
|
||||||
@ -20,9 +21,9 @@ print(f"### Loading: ComfyUI-Manager ({core.version_str})")
|
|||||||
|
|
||||||
comfy_ui_hash = "-"
|
comfy_ui_hash = "-"
|
||||||
|
|
||||||
SECURITY_MESSAGE_MIDDLE_OR_BELOW = f"ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.\nReference: https://github.com/ltdrdata/ComfyUI-Manager#security-policy"
|
SECURITY_MESSAGE_MIDDLE_OR_BELOW = "ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.\nReference: https://github.com/ltdrdata/ComfyUI-Manager#security-policy"
|
||||||
SECURITY_MESSAGE_NORMAL_MINUS = f"ERROR: To use this feature, you must either set '--listen' to a local IP and set the security level to 'normal-' or lower, or set the security level to 'middle' or 'weak'. Please contact the administrator.\nReference: https://github.com/ltdrdata/ComfyUI-Manager#security-policy"
|
SECURITY_MESSAGE_NORMAL_MINUS = "ERROR: To use this feature, you must either set '--listen' to a local IP and set the security level to 'normal-' or lower, or set the security level to 'middle' or 'weak'. Please contact the administrator.\nReference: https://github.com/ltdrdata/ComfyUI-Manager#security-policy"
|
||||||
SECURITY_MESSAGE_GENERAL = f"ERROR: This installation is not allowed in this security_level. Please contact the administrator.\nReference: https://github.com/ltdrdata/ComfyUI-Manager#security-policy"
|
SECURITY_MESSAGE_GENERAL = "ERROR: This installation is not allowed in this security_level. Please contact the administrator.\nReference: https://github.com/ltdrdata/ComfyUI-Manager#security-policy"
|
||||||
|
|
||||||
def handle_stream(stream, prefix):
|
def handle_stream(stream, prefix):
|
||||||
stream.reconfigure(encoding=locale.getpreferredencoding(), errors='replace')
|
stream.reconfigure(encoding=locale.getpreferredencoding(), errors='replace')
|
||||||
@ -196,7 +197,7 @@ def print_comfyui_version():
|
|||||||
|
|
||||||
del cm_global.variables['cm.on_revision_detected_handler']
|
del cm_global.variables['cm.on_revision_detected_handler']
|
||||||
else:
|
else:
|
||||||
print(f"[ComfyUI-Manager] Some features are restricted due to your ComfyUI being outdated.")
|
print("[ComfyUI-Manager] Some features are restricted due to your ComfyUI being outdated.")
|
||||||
# <--
|
# <--
|
||||||
|
|
||||||
if current_branch == "master":
|
if current_branch == "master":
|
||||||
@ -243,7 +244,6 @@ setup_environment()
|
|||||||
|
|
||||||
# Expand Server api
|
# Expand Server api
|
||||||
|
|
||||||
import server
|
|
||||||
from aiohttp import web
|
from aiohttp import web
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import json
|
import json
|
||||||
@ -289,7 +289,7 @@ def get_model_dir(data):
|
|||||||
if folder_paths.folder_names_and_paths.get("text_encoders"):
|
if folder_paths.folder_names_and_paths.get("text_encoders"):
|
||||||
base_model = folder_paths.folder_names_and_paths["text_encoders"][0][0]
|
base_model = folder_paths.folder_names_and_paths["text_encoders"][0][0]
|
||||||
else:
|
else:
|
||||||
print(f"[ComfyUI-Manager] Your ComfyUI is outdated version.")
|
print("[ComfyUI-Manager] Your ComfyUI is outdated version.")
|
||||||
base_model = folder_paths.folder_names_and_paths["clip"][0][0] # outdated version
|
base_model = folder_paths.folder_names_and_paths["clip"][0][0] # outdated version
|
||||||
elif model_type == "VAE":
|
elif model_type == "VAE":
|
||||||
base_model = folder_paths.folder_names_and_paths["vae"][0][0]
|
base_model = folder_paths.folder_names_and_paths["vae"][0][0]
|
||||||
@ -313,7 +313,7 @@ def get_model_dir(data):
|
|||||||
if folder_paths.folder_names_and_paths.get("diffusion_models"):
|
if folder_paths.folder_names_and_paths.get("diffusion_models"):
|
||||||
base_model = folder_paths.folder_names_and_paths["diffusion_models"][0][1]
|
base_model = folder_paths.folder_names_and_paths["diffusion_models"][0][1]
|
||||||
else:
|
else:
|
||||||
print(f"[ComfyUI-Manager] Your ComfyUI is outdated version.")
|
print("[ComfyUI-Manager] Your ComfyUI is outdated version.")
|
||||||
base_model = folder_paths.folder_names_and_paths["unet"][0][0] # outdated version
|
base_model = folder_paths.folder_names_and_paths["unet"][0][0] # outdated version
|
||||||
else:
|
else:
|
||||||
base_model = os.path.join(models_base, "etc")
|
base_model = os.path.join(models_base, "etc")
|
||||||
@ -345,15 +345,15 @@ def check_custom_nodes_installed(json_obj, do_fetch=False, do_update_check=True,
|
|||||||
executor.submit(process_custom_node, item)
|
executor.submit(process_custom_node, item)
|
||||||
|
|
||||||
if do_fetch:
|
if do_fetch:
|
||||||
print(f"\x1b[2K\rFetching done.")
|
print("\x1b[2K\rFetching done.")
|
||||||
elif do_update:
|
elif do_update:
|
||||||
update_exists = any(item['installed'] == 'Update' for item in json_obj['custom_nodes'])
|
update_exists = any(item['installed'] == 'Update' for item in json_obj['custom_nodes'])
|
||||||
if update_exists:
|
if update_exists:
|
||||||
print(f"\x1b[2K\rUpdate done.")
|
print("\x1b[2K\rUpdate done.")
|
||||||
else:
|
else:
|
||||||
print(f"\x1b[2K\rAll extensions are already up-to-date.")
|
print("\x1b[2K\rAll extensions are already up-to-date.")
|
||||||
elif do_update_check:
|
elif do_update_check:
|
||||||
print(f"\x1b[2K\rUpdate check done.")
|
print("\x1b[2K\rUpdate check done.")
|
||||||
|
|
||||||
|
|
||||||
def nickname_filter(json_obj):
|
def nickname_filter(json_obj):
|
||||||
@ -655,7 +655,7 @@ async def remove_snapshot(request):
|
|||||||
|
|
||||||
|
|
||||||
@PromptServer.instance.routes.get("/snapshot/restore")
|
@PromptServer.instance.routes.get("/snapshot/restore")
|
||||||
async def remove_snapshot(request):
|
async def restore_snapshot(request):
|
||||||
if not is_allowed_security_level('middle'):
|
if not is_allowed_security_level('middle'):
|
||||||
print(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
print(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||||
return web.Response(status=403)
|
return web.Response(status=403)
|
||||||
@ -871,7 +871,7 @@ async def install_custom_node(request):
|
|||||||
core.clear_pip_cache()
|
core.clear_pip_cache()
|
||||||
|
|
||||||
if res:
|
if res:
|
||||||
print(f"After restarting ComfyUI, please refresh the browser.")
|
print("After restarting ComfyUI, please refresh the browser.")
|
||||||
return web.json_response({}, content_type='application/json')
|
return web.json_response({}, content_type='application/json')
|
||||||
|
|
||||||
return web.Response(status=400)
|
return web.Response(status=400)
|
||||||
@ -913,7 +913,7 @@ async def fix_custom_node(request):
|
|||||||
core.try_install_script(json_data['files'][0], ".", install_cmd)
|
core.try_install_script(json_data['files'][0], ".", install_cmd)
|
||||||
|
|
||||||
if res:
|
if res:
|
||||||
print(f"After restarting ComfyUI, please refresh the browser.")
|
print("After restarting ComfyUI, please refresh the browser.")
|
||||||
return web.json_response({}, content_type='application/json')
|
return web.json_response({}, content_type='application/json')
|
||||||
|
|
||||||
return web.Response(status=400)
|
return web.Response(status=400)
|
||||||
@ -929,14 +929,14 @@ async def install_custom_node_git_url(request):
|
|||||||
res = core.gitclone_install([url])
|
res = core.gitclone_install([url])
|
||||||
|
|
||||||
if res:
|
if res:
|
||||||
print(f"After restarting ComfyUI, please refresh the browser.")
|
print("After restarting ComfyUI, please refresh the browser.")
|
||||||
return web.Response(status=200)
|
return web.Response(status=200)
|
||||||
|
|
||||||
return web.Response(status=400)
|
return web.Response(status=400)
|
||||||
|
|
||||||
|
|
||||||
@PromptServer.instance.routes.post("/customnode/install/pip")
|
@PromptServer.instance.routes.post("/customnode/install/pip")
|
||||||
async def install_custom_node_git_url(request):
|
async def install_custom_node_pip(request):
|
||||||
if not is_allowed_security_level('high'):
|
if not is_allowed_security_level('high'):
|
||||||
print(SECURITY_MESSAGE_NORMAL_MINUS)
|
print(SECURITY_MESSAGE_NORMAL_MINUS)
|
||||||
return web.Response(status=403)
|
return web.Response(status=403)
|
||||||
@ -969,7 +969,7 @@ async def uninstall_custom_node(request):
|
|||||||
res = core.gitclone_uninstall(json_data['files'])
|
res = core.gitclone_uninstall(json_data['files'])
|
||||||
|
|
||||||
if res:
|
if res:
|
||||||
print(f"After restarting ComfyUI, please refresh the browser.")
|
print("After restarting ComfyUI, please refresh the browser.")
|
||||||
return web.json_response({}, content_type='application/json')
|
return web.json_response({}, content_type='application/json')
|
||||||
|
|
||||||
return web.Response(status=400)
|
return web.Response(status=400)
|
||||||
@ -995,7 +995,7 @@ async def update_custom_node(request):
|
|||||||
core.clear_pip_cache()
|
core.clear_pip_cache()
|
||||||
|
|
||||||
if res:
|
if res:
|
||||||
print(f"After restarting ComfyUI, please refresh the browser.")
|
print("After restarting ComfyUI, please refresh the browser.")
|
||||||
return web.json_response({}, content_type='application/json')
|
return web.json_response({}, content_type='application/json')
|
||||||
|
|
||||||
return web.Response(status=400)
|
return web.Response(status=400)
|
||||||
@ -1003,13 +1003,13 @@ async def update_custom_node(request):
|
|||||||
|
|
||||||
@PromptServer.instance.routes.get("/comfyui_manager/update_comfyui")
|
@PromptServer.instance.routes.get("/comfyui_manager/update_comfyui")
|
||||||
async def update_comfyui(request):
|
async def update_comfyui(request):
|
||||||
print(f"Update ComfyUI")
|
print("Update ComfyUI")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
repo_path = os.path.dirname(folder_paths.__file__)
|
repo_path = os.path.dirname(folder_paths.__file__)
|
||||||
res = core.update_path(repo_path)
|
res = core.update_path(repo_path)
|
||||||
if res == "fail":
|
if res == "fail":
|
||||||
print(f"ComfyUI update fail: The installed ComfyUI does not have a Git repository.")
|
print("ComfyUI update fail: The installed ComfyUI does not have a Git repository.")
|
||||||
return web.Response(status=400)
|
return web.Response(status=400)
|
||||||
elif res == "updated":
|
elif res == "updated":
|
||||||
return web.Response(status=201)
|
return web.Response(status=201)
|
||||||
@ -1220,9 +1220,9 @@ async def get_notice(request):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
if core.comfy_ui_commit_datetime == datetime(1900, 1, 1, 0, 0, 0):
|
if core.comfy_ui_commit_datetime == datetime(1900, 1, 1, 0, 0, 0):
|
||||||
markdown_content = f'<P style="text-align: center; color:red; background-color:white; font-weight:bold">Your ComfyUI isn\'t git repo.</P>' + markdown_content
|
markdown_content = '<P style="text-align: center; color:red; background-color:white; font-weight:bold">Your ComfyUI isn\'t git repo.</P>' + markdown_content
|
||||||
elif core.comfy_ui_required_commit_datetime.date() > core.comfy_ui_commit_datetime.date():
|
elif core.comfy_ui_required_commit_datetime.date() > core.comfy_ui_commit_datetime.date():
|
||||||
markdown_content = f'<P style="text-align: center; color:red; background-color:white; font-weight:bold">Your ComfyUI is too OUTDATED!!!</P>' + markdown_content
|
markdown_content = '<P style="text-align: center; color:red; background-color:white; font-weight:bold">Your ComfyUI is too OUTDATED!!!</P>' + markdown_content
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -1241,17 +1241,17 @@ def restart(self):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
sys.stdout.close_log()
|
sys.stdout.close_log()
|
||||||
except Exception as e:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if '__COMFY_CLI_SESSION__' in os.environ:
|
if '__COMFY_CLI_SESSION__' in os.environ:
|
||||||
with open(os.path.join(os.environ['__COMFY_CLI_SESSION__'] + '.reboot'), 'w') as file:
|
with open(os.path.join(os.environ['__COMFY_CLI_SESSION__'] + '.reboot'), 'w'):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
print(f"\nRestarting...\n\n")
|
print("\nRestarting...\n\n")
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
||||||
print(f"\nRestarting... [Legacy Mode]\n\n")
|
print("\nRestarting... [Legacy Mode]\n\n")
|
||||||
|
|
||||||
sys_argv = sys.argv.copy()
|
sys_argv = sys.argv.copy()
|
||||||
if '--windows-standalone-build' in sys_argv:
|
if '--windows-standalone-build' in sys_argv:
|
||||||
|
|||||||
@ -84,8 +84,8 @@ def get_installed_packages(renew=False):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
pip_map[y[0]] = y[1]
|
pip_map[y[0]] = y[1]
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError:
|
||||||
print(f"[ComfyUI-Manager] Failed to retrieve the information of installed pip packages.")
|
print("[ComfyUI-Manager] Failed to retrieve the information of installed pip packages.")
|
||||||
return set()
|
return set()
|
||||||
|
|
||||||
return pip_map
|
return pip_map
|
||||||
@ -154,9 +154,9 @@ class PIPFixer:
|
|||||||
cmd = [sys.executable, '-m', 'pip', 'uninstall', 'comfy']
|
cmd = [sys.executable, '-m', 'pip', 'uninstall', 'comfy']
|
||||||
subprocess.check_output(cmd, universal_newlines=True)
|
subprocess.check_output(cmd, universal_newlines=True)
|
||||||
|
|
||||||
print(f"[manager-core] 'comfy' python package is uninstalled.\nWARN: The 'comfy' package is completely unrelated to ComfyUI and should never be installed as it causes conflicts with ComfyUI.")
|
print("[manager-core] 'comfy' python package is uninstalled.\nWARN: The 'comfy' package is completely unrelated to ComfyUI and should never be installed as it causes conflicts with ComfyUI.")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[manager-core] Failed to uninstall `comfy` python package")
|
print("[manager-core] Failed to uninstall `comfy` python package")
|
||||||
print(e)
|
print(e)
|
||||||
|
|
||||||
# fix torch - reinstall torch packages if version is changed
|
# fix torch - reinstall torch packages if version is changed
|
||||||
@ -166,7 +166,7 @@ class PIPFixer:
|
|||||||
or self.prev_pip_versions['torchaudio'] != new_pip_versions['torchaudio']:
|
or self.prev_pip_versions['torchaudio'] != new_pip_versions['torchaudio']:
|
||||||
self.torch_rollback()
|
self.torch_rollback()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[manager-core] Failed to restore PyTorch")
|
print("[manager-core] Failed to restore PyTorch")
|
||||||
print(e)
|
print(e)
|
||||||
|
|
||||||
# fix opencv
|
# fix opencv
|
||||||
@ -200,7 +200,7 @@ class PIPFixer:
|
|||||||
|
|
||||||
print(f"[manager-core] 'opencv' dependencies were fixed: {targets}")
|
print(f"[manager-core] 'opencv' dependencies were fixed: {targets}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[manager-core] Failed to restore opencv")
|
print("[manager-core] Failed to restore opencv")
|
||||||
print(e)
|
print(e)
|
||||||
|
|
||||||
# fix numpy
|
# fix numpy
|
||||||
@ -208,7 +208,7 @@ class PIPFixer:
|
|||||||
np = new_pip_versions.get('numpy')
|
np = new_pip_versions.get('numpy')
|
||||||
if np is not None:
|
if np is not None:
|
||||||
if StrictVersion(np) >= StrictVersion('2'):
|
if StrictVersion(np) >= StrictVersion('2'):
|
||||||
subprocess.check_output([sys.executable, '-m', 'pip', 'install', f"numpy<2"], universal_newlines=True)
|
subprocess.check_output([sys.executable, '-m', 'pip', 'install', "numpy<2"], universal_newlines=True)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[manager-core] Failed to restore numpy")
|
print("[manager-core] Failed to restore numpy")
|
||||||
print(e)
|
print(e)
|
||||||
|
|||||||
@ -109,7 +109,7 @@ https://blog.comfy.org/comfyui-statement-on-the-ultralytics-crypto-miner-situati
|
|||||||
|
|
||||||
for x in detected:
|
for x in detected:
|
||||||
print(f"\n======== TARGET: {x} =========")
|
print(f"\n======== TARGET: {x} =========")
|
||||||
print(f"\nTODO:")
|
print("\nTODO:")
|
||||||
print(guide.get(x))
|
print(guide.get(x))
|
||||||
|
|
||||||
exit(-1)
|
exit(-1)
|
||||||
|
|||||||
@ -178,8 +178,6 @@ async def api_get_comfyworkflows_auth(request):
|
|||||||
@PromptServer.instance.routes.post("/manager/set_esheep_workflow_and_images")
|
@PromptServer.instance.routes.post("/manager/set_esheep_workflow_and_images")
|
||||||
async def set_esheep_workflow_and_images(request):
|
async def set_esheep_workflow_and_images(request):
|
||||||
json_data = await request.json()
|
json_data = await request.json()
|
||||||
current_workflow = json_data['workflow']
|
|
||||||
images = json_data['images']
|
|
||||||
with open(os.path.join(core.comfyui_manager_path, "esheep_share_message.json"), "w", encoding='utf-8') as file:
|
with open(os.path.join(core.comfyui_manager_path, "esheep_share_message.json"), "w", encoding='utf-8') as file:
|
||||||
json.dump(json_data, file, indent=4)
|
json.dump(json_data, file, indent=4)
|
||||||
return web.Response(status=200)
|
return web.Response(status=200)
|
||||||
@ -368,9 +366,9 @@ async def share_art(request):
|
|||||||
text_content += f"{description}\n"
|
text_content += f"{description}\n"
|
||||||
if credits:
|
if credits:
|
||||||
text_content += f"\ncredits: {credits}\n"
|
text_content += f"\ncredits: {credits}\n"
|
||||||
response = matrix.send_message(comfyui_share_room_id, text_content)
|
matrix.send_message(comfyui_share_room_id, text_content)
|
||||||
response = matrix.send_content(comfyui_share_room_id, mxc_url, filename, 'm.image')
|
matrix.send_content(comfyui_share_room_id, mxc_url, filename, 'm.image')
|
||||||
response = matrix.send_content(comfyui_share_room_id, workflow_json_mxc_url, 'workflow.json', 'm.file')
|
matrix.send_content(comfyui_share_room_id, workflow_json_mxc_url, 'workflow.json', 'm.file')
|
||||||
except:
|
except:
|
||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
|||||||
@ -15,7 +15,7 @@ glob_path = os.path.join(os.path.dirname(__file__), "glob")
|
|||||||
sys.path.append(glob_path)
|
sys.path.append(glob_path)
|
||||||
|
|
||||||
import security_check
|
import security_check
|
||||||
from manager_util import *
|
from manager_util import PIPFixer, StrictVersion, get_installed_packages, clear_pip_cache
|
||||||
import cm_global
|
import cm_global
|
||||||
|
|
||||||
security_check.security_check()
|
security_check.security_check()
|
||||||
@ -309,27 +309,26 @@ except Exception as e:
|
|||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import git
|
import git # noqa: F401
|
||||||
except ModuleNotFoundError:
|
except ModuleNotFoundError:
|
||||||
my_path = os.path.dirname(__file__)
|
my_path = os.path.dirname(__file__)
|
||||||
requirements_path = os.path.join(my_path, "requirements.txt")
|
requirements_path = os.path.join(my_path, "requirements.txt")
|
||||||
|
|
||||||
print(f"## ComfyUI-Manager: installing dependencies. (GitPython)")
|
print("## ComfyUI-Manager: installing dependencies. (GitPython)")
|
||||||
try:
|
try:
|
||||||
result = subprocess.check_output([sys.executable, '-s', '-m', 'pip', 'install', '-r', requirements_path])
|
result = subprocess.check_output([sys.executable, '-s', '-m', 'pip', 'install', '-r', requirements_path])
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError:
|
||||||
print(f"## [ERROR] ComfyUI-Manager: Attempting to reinstall dependencies using an alternative method.")
|
print("## [ERROR] ComfyUI-Manager: Attempting to reinstall dependencies using an alternative method.")
|
||||||
try:
|
try:
|
||||||
result = subprocess.check_output([sys.executable, '-s', '-m', 'pip', 'install', '--user', '-r', requirements_path])
|
result = subprocess.check_output([sys.executable, '-s', '-m', 'pip', 'install', '--user', '-r', requirements_path])
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError:
|
||||||
print(f"## [ERROR] ComfyUI-Manager: Failed to install the GitPython package in the correct Python environment. Please install it manually in the appropriate environment. (You can seek help at https://app.element.io/#/room/%23comfyui_space%3Amatrix.org)")
|
print("## [ERROR] ComfyUI-Manager: Failed to install the GitPython package in the correct Python environment. Please install it manually in the appropriate environment. (You can seek help at https://app.element.io/#/room/%23comfyui_space%3Amatrix.org)")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import git
|
print("## ComfyUI-Manager: installing dependencies done.")
|
||||||
print(f"## ComfyUI-Manager: installing dependencies done.")
|
|
||||||
except:
|
except:
|
||||||
# maybe we should sys.exit() here? there is at least two screens worth of error messages still being pumped after our error messages
|
# maybe we should sys.exit() here? there is at least two screens worth of error messages still being pumped after our error messages
|
||||||
print(f"## [ERROR] ComfyUI-Manager: GitPython package seems to be installed, but failed to load somehow. Make sure you have a working git client installed")
|
print("## [ERROR] ComfyUI-Manager: GitPython package seems to be installed, but failed to load somehow. Make sure you have a working git client installed")
|
||||||
|
|
||||||
|
|
||||||
print("** ComfyUI startup time:", datetime.datetime.now())
|
print("** ComfyUI startup time:", datetime.datetime.now())
|
||||||
@ -374,7 +373,7 @@ def check_bypass_ssl():
|
|||||||
default_conf = config['default']
|
default_conf = config['default']
|
||||||
|
|
||||||
if 'bypass_ssl' in default_conf and default_conf['bypass_ssl'].lower() == 'true':
|
if 'bypass_ssl' in default_conf and default_conf['bypass_ssl'].lower() == 'true':
|
||||||
print(f"[ComfyUI-Manager] WARN: Unsafe - SSL verification bypass option is Enabled. (see ComfyUI-Manager/config.ini)")
|
print("[ComfyUI-Manager] WARN: Unsafe - SSL verification bypass option is Enabled. (see ComfyUI-Manager/config.ini)")
|
||||||
ssl._create_default_https_context = ssl._create_unverified_context # SSL certificate error fix.
|
ssl._create_default_https_context = ssl._create_unverified_context # SSL certificate error fix.
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
@ -457,7 +456,7 @@ if os.path.exists(restore_snapshot_path):
|
|||||||
else:
|
else:
|
||||||
print(prefix, msg, end="")
|
print(prefix, msg, end="")
|
||||||
|
|
||||||
print(f"[ComfyUI-Manager] Restore snapshot.")
|
print("[ComfyUI-Manager] Restore snapshot.")
|
||||||
cmd_str = [sys.executable, git_script_path, '--apply-snapshot', restore_snapshot_path]
|
cmd_str = [sys.executable, git_script_path, '--apply-snapshot', restore_snapshot_path]
|
||||||
|
|
||||||
new_env = os.environ.copy()
|
new_env = os.environ.copy()
|
||||||
@ -507,13 +506,13 @@ if os.path.exists(restore_snapshot_path):
|
|||||||
print(f"[ComfyUI-Manager] Restoring '{repository_name}' is failed.")
|
print(f"[ComfyUI-Manager] Restoring '{repository_name}' is failed.")
|
||||||
|
|
||||||
if exit_code != 0:
|
if exit_code != 0:
|
||||||
print(f"[ComfyUI-Manager] Restore snapshot failed.")
|
print("[ComfyUI-Manager] Restore snapshot failed.")
|
||||||
else:
|
else:
|
||||||
print(f"[ComfyUI-Manager] Restore snapshot done.")
|
print("[ComfyUI-Manager] Restore snapshot done.")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
print(f"[ComfyUI-Manager] Restore snapshot failed.")
|
print("[ComfyUI-Manager] Restore snapshot failed.")
|
||||||
|
|
||||||
os.remove(restore_snapshot_path)
|
os.remove(restore_snapshot_path)
|
||||||
|
|
||||||
@ -618,7 +617,7 @@ def check_windows_event_loop_policy():
|
|||||||
import asyncio
|
import asyncio
|
||||||
import asyncio.windows_events
|
import asyncio.windows_events
|
||||||
asyncio.set_event_loop_policy(asyncio.windows_events.WindowsSelectorEventLoopPolicy())
|
asyncio.set_event_loop_policy(asyncio.windows_events.WindowsSelectorEventLoopPolicy())
|
||||||
print(f"[ComfyUI-Manager] Windows event loop policy mode enabled")
|
print("[ComfyUI-Manager] Windows event loop policy mode enabled")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[ComfyUI-Manager] WARN: Windows initialization fail: {e}")
|
print(f"[ComfyUI-Manager] WARN: Windows initialization fail: {e}")
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|||||||
12
ruff.toml
Normal file
12
ruff.toml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# Disable all rules by default
|
||||||
|
lint.ignore = ["ALL"]
|
||||||
|
|
||||||
|
# Enable specific rules
|
||||||
|
lint.select = [
|
||||||
|
"S307", # suspicious-eval-usage
|
||||||
|
# The "F" series in Ruff stands for "Pyflakes" rules, which catch various Python syntax errors and undefined names.
|
||||||
|
# See all rules here: https://docs.astral.sh/ruff/rules/#pyflakes-f
|
||||||
|
"F",
|
||||||
|
]
|
||||||
|
|
||||||
|
exclude = ["*.ipynb"]
|
||||||
@ -69,7 +69,7 @@ def extract_nodes(code_text):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
if parse_cnt % 100 == 0:
|
if parse_cnt % 100 == 0:
|
||||||
print(f".", end="", flush=True)
|
print(".", end="", flush=True)
|
||||||
parse_cnt += 1
|
parse_cnt += 1
|
||||||
|
|
||||||
code_text = re.sub(r'\\[^"\']', '', code_text)
|
code_text = re.sub(r'\\[^"\']', '', code_text)
|
||||||
@ -515,7 +515,7 @@ def gen_json(node_info):
|
|||||||
nodes.sort()
|
nodes.sort()
|
||||||
data[git_url] = (nodes, metadata_in_url)
|
data[git_url] = (nodes, metadata_in_url)
|
||||||
|
|
||||||
json_path = f"extension-node-map.json"
|
json_path = "extension-node-map.json"
|
||||||
with open(json_path, "w", encoding='utf-8') as file:
|
with open(json_path, "w", encoding='utf-8') as file:
|
||||||
json.dump(data, file, indent=4, sort_keys=True)
|
json.dump(data, file, indent=4, sort_keys=True)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user