mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-03-13 21:27:41 +08:00
Adds opt-in process isolation for custom nodes using pyisolate's bwrap sandbox and JSON-RPC bridge. Each isolated node pack runs in its own child process with zero-copy tensor transfer via shared memory. Core infrastructure: - CLI flag --use-process-isolation to enable isolation - Host/child startup fencing via PYISOLATE_CHILD env var - Manifest-driven node discovery and extension loading - JSON-RPC bridge between host and child processes - Shared memory forensics for leak detection Proxy layer: - ModelPatcher, CLIP, VAE, and ModelSampling proxies - Host service proxies (folder_paths, model_management, progress, etc.) - Proxy base with automatic method forwarding Execution integration: - Extension wrapper with V3 hidden param mapping - Runtime helpers for isolated node execution - Host policy for node isolation decisions - Fenced sampler device handling and model ejection parity Serializers for cross-process data transfer: - File3D (GLB), PLY (structured + gaussian), NPZ (streaming frames), VIDEO (VideoFromFile + VideoFromComponents) serializers - data_type flag in SerializerRegistry for type-aware dispatch - Isolated get_temp_directory() fence New core save nodes: - SavePLY and SaveNPZ with comfytype registrations (Ply, Npz) DynamicVRAM compatibility: - comfy-aimdo early init gated by isolation fence Tests: - Integration and policy tests for isolation lifecycle - Manifest loader, host policy, proxy, and adapter unit tests Depends on: pyisolate >= 0.9.2
95 lines
2.4 KiB
TOML
95 lines
2.4 KiB
TOML
[project]
|
|
name = "ComfyUI"
|
|
version = "0.16.4"
|
|
readme = "README.md"
|
|
license = { file = "LICENSE" }
|
|
requires-python = ">=3.10"
|
|
|
|
[project.urls]
|
|
homepage = "https://www.comfy.org/"
|
|
repository = "https://github.com/comfyanonymous/ComfyUI"
|
|
documentation = "https://docs.comfy.org/"
|
|
|
|
[tool.comfy.host]
|
|
allow_network = false
|
|
writable_paths = ["/dev/shm", "/tmp"]
|
|
|
|
[tool.comfy.host.whitelist]
|
|
"ComfyUI-Crystools" = "*"
|
|
"ComfyUI-Florence2" = "*"
|
|
"ComfyUI-GGUF" = "*"
|
|
"ComfyUI-KJNodes" = "*"
|
|
"ComfyUI-LTXVideo" = "*"
|
|
"ComfyUI-Manager" = "*"
|
|
"comfyui-depthanythingv2" = "*"
|
|
"comfyui-kjnodes" = "*"
|
|
"comfyui-videohelpersuite" = "*"
|
|
"comfyui_controlnet_aux" = "*"
|
|
"rgthree-comfy" = "*"
|
|
"was-ns" = "*"
|
|
"websocket_image_save.py" = "*"
|
|
|
|
[tool.ruff]
|
|
lint.select = [
|
|
"N805", # invalid-first-argument-name-for-method
|
|
"S307", # suspicious-eval-usage
|
|
"S102", # exec
|
|
"E",
|
|
"T", # print-usage
|
|
"W",
|
|
# 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",
|
|
]
|
|
|
|
lint.ignore = ["E501", "E722", "E731", "E712", "E402", "E741"]
|
|
|
|
exclude = ["*.ipynb", "**/generated/*.pyi"]
|
|
|
|
[tool.pylint]
|
|
master.py-version = "3.10"
|
|
master.extension-pkg-allow-list = [
|
|
"pydantic",
|
|
]
|
|
reports.output-format = "colorized"
|
|
similarities.ignore-imports = "yes"
|
|
messages_control.disable = [
|
|
"missing-module-docstring",
|
|
"missing-class-docstring",
|
|
"missing-function-docstring",
|
|
"line-too-long",
|
|
"too-few-public-methods",
|
|
"too-many-public-methods",
|
|
"too-many-instance-attributes",
|
|
"too-many-positional-arguments",
|
|
"broad-exception-raised",
|
|
"too-many-lines",
|
|
"invalid-name",
|
|
"unused-argument",
|
|
"broad-exception-caught",
|
|
"consider-using-with",
|
|
"fixme",
|
|
"too-many-statements",
|
|
"too-many-branches",
|
|
"too-many-locals",
|
|
"too-many-arguments",
|
|
"too-many-return-statements",
|
|
"too-many-nested-blocks",
|
|
"duplicate-code",
|
|
"abstract-method",
|
|
"superfluous-parens",
|
|
"arguments-differ",
|
|
"redefined-builtin",
|
|
"unnecessary-lambda",
|
|
"dangerous-default-value",
|
|
"invalid-overridden-method",
|
|
# next warnings should be fixed in future
|
|
"bad-classmethod-argument", # Class method should have 'cls' as first argument
|
|
"wrong-import-order", # Standard imports should be placed before third party imports
|
|
"ungrouped-imports",
|
|
"unnecessary-pass",
|
|
"unnecessary-lambda-assignment",
|
|
"no-else-return",
|
|
"unused-variable",
|
|
]
|