Enable pyflake ruff lint rules (#1340)

This commit is contained in:
Chenlei Hu 2024-12-17 18:46:51 -08:00 committed by GitHub
parent 445affd609
commit 7b812dee75
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 111 additions and 80 deletions

23
.github/workflows/ruff.yml vendored Normal file
View 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 .

View File

@ -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']

View File

@ -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("")

View File

@ -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)

View File

@ -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)

View File

@ -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:

View File

@ -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)

View File

@ -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)

View File

@ -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()

View File

@ -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
View 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"]

View File

@ -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)