ComfyUI/pyproject.toml

281 lines
7.0 KiB
TOML

[project]
name = "comfyui"
version = "0.3.49"
description = "An installable version of ComfyUI"
readme = "README.md"
authors = [
{ name = "Contributors_of_ComfyUI" },
]
requires-python = ">=3.10"
license = { text = "GPL-3.0-or-later" }
classifiers = [
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Operating System :: OS Independent",
]
dependencies = [
"comfyui-frontend-package>=1.24.4",
"comfyui-workflow-templates>=0.1.51",
"comfyui-embedded-docs>=0.2.4",
"torch",
"torchvision",
"torchdiffeq>=0.2.3",
"torchsde>=0.2.6",
"einops>=0.6.0",
"open-clip-torch>=2.24.0",
"transformers!=4.53.0,!=4.53.1,!=4.53.2",
"tokenizers>=0.13.3",
"sentencepiece",
"peft>=0.10.0",
"torchinfo",
"safetensors>=0.4.2",
"aiohttp>=3.11.8",
"yarl>=1.9.4",
"accelerate>=0.25.0",
"pyyaml>=6.0",
"scikit-image>=0.20.0",
"jsonmerge>=1.9.0",
"clean-fid>=0.1.35",
"resize-right>=0.0.2",
"opencv-python-headless>=4.9.0.80",
"albumentations>=1.3.0",
"aiofiles>=23.1.0",
"frozendict>=2.3.6",
"python-dateutil>=2.8.2",
"importlib_resources",
"Pillow",
"scipy",
"tqdm",
"protobuf>=3.20.0,<5.0.0",
"psutil",
"ConfigArgParse",
"aio-pika",
"pyjwt[crypto]",
"kornia>=0.7.0",
"mpmath>=1.0,!=1.4.0a0",
"huggingface_hub[hf_xet]>=0.32.0",
"lazy-object-proxy",
"lazy_loader>=0.3",
"can_ada",
"fsspec",
"natsort",
"OpenEXR",
"opentelemetry-distro",
"opentelemetry-sdk<1.34.0",
"opentelemetry-exporter-otlp<=1.27.0",
"opentelemetry-propagator-jaeger",
"opentelemetry-instrumentation",
"opentelemetry-util-http",
"opentelemetry-instrumentation-aio-pika",
"opentelemetry-instrumentation-requests",
"opentelemetry-semantic-conventions",
"wrapt>=1.16.0",
"certifi",
"spandrel>=0.3.4",
# https://github.com/conda-forge/numba-feedstock/issues/158 until numba is released with support for a later version of numpy
"numpy>=1.24.4,<2.3",
"soundfile",
"watchdog",
"PySoundFile",
"networkx>=2.6.3",
"joblib",
"jaxtyping",
"spandrel_extra_arches",
"ml_dtypes",
"diffusers>=0.30.1",
"vtracer",
"skia-python",
"pebble>=5.0.7",
"openai",
"anthropic",
"humanize",
"lightning",
"flax",
"jax",
"colour",
"av>=14.2.0",
"pydantic~=2.0",
"pydantic-settings~=2.0",
"typer",
"ijson",
"scikit-learn>=1.4.1",
# everything that is a torch extension will need setuptools, so just include it
"setuptools",
"alembic",
"SQLAlchemy",
"gguf",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.setuptools.packages.find]
where = ["."]
include = ["comfy*"]
namespaces = false
[dependency-groups]
dev = [
"pytest",
"pytest-asyncio",
"pytest-mock",
"pytest-aiohttp",
"pytest-xdist",
"websocket-client>=1.6.1",
"PyInstaller",
"testcontainers",
"testcontainers-rabbitmq",
"mypy>=1.6.0",
"freezegun",
"coverage",
"pylint",
"astroid",
]
[project.optional-dependencies]
cpu = [
"torch",
"torchvision",
"torchaudio",
]
cu126 = [
"torch",
"torchvision",
"triton ; sys_platform == 'Linux'",
"triton-windows ; sys_platform == 'win32'",
]
cu128 = [
"torch",
"torchvision",
"triton ; sys_platform == 'Linux'",
"triton-windows ; sys_platform == 'win32'",
]
rocm = [
"torch",
"torchvision",
"pytorch-triton-rocm"
]
mps = [
"torch",
"torchvision",
]
attention = [
"sageattention==2.2.0 ; sys_platform == 'Linux' or sys_platform == 'win32'",
"flash_attn ; sys_platform == 'Linux'",
]
comfyui-manager = [
"GitPython",
"PyGithub",
"matrix-client==0.4.0",
"rich",
"typing-extensions",
"toml",
"uv",
"chardet",
"pip",
]
[project.scripts]
comfyui = "comfy.cmd.main:entrypoint"
comfyui-worker = "comfy.entrypoints.worker:entrypoint"
comfyui-workflow = "comfy.entrypoints.workflow:entrypoint"
[project.urls]
Homepage = "https://github.com/comfyanonymous/ComfyUI"
Repository = "https://github.com/comfyanonymous/ComfyUI"
[tool.uv]
conflicts = [
[{ extra = "cpu" }, { extra = "cu126" }, { extra = "cu128" }, { extra = "rocm" }, { extra = "mps" }],
]
no-build-isolation-package = [
"sageattention",
"sage-attention",
"flash_attn",
]
[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true
[[tool.uv.index]]
name = "pytorch-cu126"
url = "https://download.pytorch.org/whl/cu126"
explicit = true
[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true
[[tool.uv.index]]
name = "pytorch-rocm"
url = "https://download.pytorch.org/whl/rocm6.3"
explicit = true
[[tool.uv.index]]
name = "pytorch-nightly-cpu"
url = "https://download.pytorch.org/whl/nightly/cpu"
explicit = true
[tool.uv.sources]
torch = [
{ index = "pytorch-cpu", extra = "cpu" },
{ index = "pytorch-cu126", extra = "cu126", marker = "sys_platform == 'Linux' or sys_platform == 'win32'" },
{ index = "pytorch-cu128", extra = "cu128", marker = "sys_platform == 'Linux' or sys_platform == 'win32'" },
{ index = "pytorch-rocm", extra = "rocm", marker = "sys_platform == 'Linux'" },
{ index = "pytorch-nightly-cpu", extra = "mps", marker = "sys_platform == 'darwin'" },
]
torchvision = [
{ index = "pytorch-cpu", extra = "cpu" },
{ index = "pytorch-cu126", extra = "cu126", marker = "sys_platform == 'Linux' or sys_platform == 'win32'" },
{ index = "pytorch-cu128", extra = "cu128", marker = "sys_platform == 'Linux' or sys_platform == 'win32'" },
{ index = "pytorch-rocm", extra = "rocm", marker = "sys_platform == 'Linux'" },
{ index = "pytorch-nightly-cpu", extra = "mps", marker = "sys_platform == 'darwin'" },
]
torchaudio = [
{ index = "pytorch-cpu", extra = "cpu" },
]
sageattention = [
{ git = "https://github.com/thu-ml/SageAttention.git", marker = "sys_platform == 'Linux'", extra = "attention" },
{ url = "https://github.com/woct0rdho/SageAttention/releases/download/v2.2.0-windows.post1/sageattention-2.2.0+cu128torch2.7.1.post1-cp39-abi3-win_amd64.whl", marker = "sys_platform == 'win32'", extra = "attention" },
]
[[tool.uv.dependency-metadata]]
name = "flash-attn"
version = "2.6.3"
requires-dist = ["torch", "einops"]
[[tool.uv.dependency-metadata]]
name = "sageattention"
version = "2.2.0"
requires-dist = ["torch"]
[tool.ruff]
lint.select = [
"N805", # invalid-first-argument-name-for-method
"S307", # suspicious-eval-usage
"S102", # exec
"T", # print-usage
"W", # pycodestyle Warnings
"F", # Pyflakes
]
exclude = ["*.ipynb", "**/generated/*.pyi"]
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["comfy/", "comfy_extras/", "comfy_api/", "comfy_api_nodes/", "comfy_config/", "comfy_execution/"]