Files
2026-08-20 21:47:48 +02:00

75 lines
2.8 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[project]
name = "layerforge"
description = "Photoshop-like layered canvas editor to your ComfyUI workflow. This node is perfect for complex compositing, inpainting, and outpainting, featuring multi-layer support, masking, blend modes, and precise transformations. Includes optional AI-powered background removal for streamlined image editing."
version = "1.6.0"
license = { text = "MIT License" }
requires-python = ">=3.10"
dependencies = ["torch", "torchvision", "huggingface_hub", "aiohttp", "numpy", "tqdm", "Pillow", "transformers", "kornia"]
[project.urls]
Repository = "https://github.com/Azornes/Comfyui-LayerForge"
[project.optional-dependencies]
dev = [
"pytest>=8.0,<9.0",
"pytest-cov>=5.0,<8.0",
"coverage>=7.0,<8.0",
"ruff>=0.9,<1.0",
]
[tool.comfy]
PublisherId = "azornes"
DisplayName = "Comfyui-LayerForge"
Icon = ""
# ---------------------------------------------------------------------------
# Ruff – static analysis for Python
# ---------------------------------------------------------------------------
[tool.ruff]
target-version = "py310"
line-length = 120
[tool.ruff.lint]
select = ["E", "W", "F", "I", "B", "SIM", "UP", "RUF"]
ignore = [
"E501", # Existing ComfyUI-facing messages and route declarations are intentionally long.
"E402", # The ComfyUI entry point requires its import order.
"W293", # Preserve existing CRLF/whitespace formatting in legacy files.
"B023", # Callback closures intentionally capture loop variables in existing code.
"SIM105", # Explicit exception handling is clearer in some runtime paths.
"SIM108", # Readability preference for existing conditionals.
"UP006", # Keep typing syntax compatible with the current runtime.
"UP035", # Deprecated typing imports are retained for compatibility.
"RUF013", # Existing APIs use implicit optional values.
"UP045", # Existing APIs use Optional-style annotations.
"UP038", # Existing isinstance tuple patterns are intentional.
]
[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F401", "E402", "F811", "I001"]
"tests/*" = ["B011", "I001", "SIM300"]
[tool.ruff.lint.isort]
known-first-party = ["python"]
# ---------------------------------------------------------------------------
# Coverage – developer-only test reporting
# ---------------------------------------------------------------------------
[tool.coverage.run]
branch = true
source = ["python"]
[tool.coverage.report]
show_missing = true
skip_covered = false
omit = [
# Optional model loaders depend on external checkpoints and ComfyUI/Hub APIs;
# their behavior is covered by focused integration tests without making the
# baseline unit-coverage gate depend on model availability.
"python/matting/backends/*.py",
]
exclude_also = [
"if TYPE_CHECKING:",
"raise NotImplementedError",
]