## Summary Establishes a complete development infrastructure for the project with automated quality checks, testing, and contributor guidelines. - Add pre-commit hooks for automated linting and quality checks - Configure ruff for code linting and formatting (120 char line length, Python 3.10+) - Set up pytest with mocked torch/gradio dependencies for CI/CD compatibility - Create comprehensive CONTRIBUTING.md with setup instructions and workflow guidance - Add uv.lock for reproducible dependency resolution - Replace trivial tests with functional interface tests ## Key Components ### Git Hooks (.pre-commit-config.yaml) - Pre-commit: ruff linting/formatting, trailing whitespace, YAML validation, prevents direct commits to main - Pre-push: runs pytest test suite, prevents direct pushes to main ### Testing (tests/) - Functional tests for ComfyUI node and WebUI script interfaces - Mock torch, gradio, and WebUI modules via conftest.py (no heavy dependencies in dev env) - Tests verify API contracts without requiring full ComfyUI/WebUI runtime ### Documentation (CONTRIBUTING.md) - Development setup with uv package manager - Git workflow and branch protection guidelines - Linting, testing, and pre-commit hook usage - Code style guidelines and commit message conventions ## Test Plan - [x] Pre-commit hooks run on commit (linting, formatting, checks) - [x] Pre-push hooks run pytest successfully - [x] All tests pass in isolated venv - [x] CONTRIBUTING.md instructions verified - [x] No IDE diagnostics or issues
60 lines
1.7 KiB
TOML
60 lines
1.7 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=61.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "negative_rejection_steering"
|
|
description = "NRS seeks to replace the 'naive' linear interpolation of Classifier Free Guidance with a more nuanced and composable steering of the generation process with better mathematical basis."
|
|
authors = [{name = "Bryan O'Malley", email = "bo122081@hotmail.com"}]
|
|
version = "0.7.4"
|
|
license = {file = "LICENSE"}
|
|
readme = "README.md"
|
|
|
|
[project.urls]
|
|
Repository = "https://github.com/Reithan/negative_rejection_steering"
|
|
# Used by Comfy Registry https://comfyregistry.org
|
|
|
|
[tool.setuptools.packages.find]
|
|
include = ["NRS*", "scripts*"]
|
|
exclude = ["tests*", "Examples*"]
|
|
|
|
[tool.comfy]
|
|
PublisherId = "reithan"
|
|
DisplayName = "Negative Rejection Steering"
|
|
Icon = "https://raw.githubusercontent.com/Reithan/negative_rejection_steering/main/icon.png"
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pre-commit>=3.7.0",
|
|
"pytest>=8.0.0",
|
|
"ruff>=0.6.0",
|
|
]
|
|
|
|
[tool.ruff]
|
|
line-length = 120
|
|
target-version = "py310"
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"E", # pycodestyle errors
|
|
"W", # pycodestyle warnings
|
|
"F", # pyflakes
|
|
"I", # isort
|
|
"N", # pep8-naming
|
|
"UP", # pyupgrade
|
|
]
|
|
ignore = [
|
|
"E501", # line too long (handled by formatter)
|
|
]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"__init__.py" = ["F401", "F403", "F405"] # Allow star imports and undefined names in __init__.py (ComfyUI pattern)
|
|
"NRS/nodes_NRS.py" = ["N802", "N804"] # Allow INPUT_TYPES and 's' parameter naming (ComfyUI API convention)
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
python_files = "test_*.py"
|
|
python_functions = "test_*"
|
|
addopts = "-v --tb=short"
|
|
norecursedirs = [".git", ".venv", "NRS", "scripts", "Examples"]
|