[project] name = "Comfyui-Model-Resolver" description = "ComfyUI extension for automatically resolving missing models in loaded workflows. It features intelligent local fuzzy matching, direct cloud downloads, background download tracking, and automated in-place workflow updating." version = "1.2.1" license = { text = "MIT License" } requires-python = ">=3.10" dynamic = ["dependencies"] [project.urls] Repository = "https://github.com/Azornes/Comfyui-Model-Resolver" Documentation = "https://github.com/Azornes/Comfyui-Model-Resolver/wiki" "Bug Tracker" = "https://github.com/Azornes/Comfyui-Model-Resolver/issues" [tool.setuptools.dynamic] dependencies = { file = ["requirements.txt"] } [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 Model Resolver" Icon = "" requires-comfyui = ">=0.26.0" # --------------------------------------------------------------------------- # Ruff – static analysis for Python # --------------------------------------------------------------------------- [tool.ruff] target-version = "py310" line-length = 120 [tool.ruff.lint] # Rule sets: # E/W – pycodestyle errors & warnings # F – pyflakes # I – isort (import sorting) # B – flake8-bugbear # SIM – flake8-simplify # UP – pyupgrade # RUF – Ruff-specific rules select = ["E", "W", "F", "I", "B", "SIM", "UP", "RUF"] ignore = [ "E501", # line-too-long – handled by formatter / not enforced "E402", # module-import-not-at-top – ComfyUI entry point needs late imports "W293", # blank-line-with-whitespace – CRLF artifacts on indented blank lines "B023", # function-uses-loop-variable – intentional in callback patterns "SIM105", # suppressible-exception – contextlib.suppress not always clearer "SIM108", # if-else-block-instead-of-if-exp – readability preference "UP006", # non-pep585-annotation – project targets >=3.10 but uses typing compat "UP035", # deprecated-import – typing compat kept for clarity "RUF013", # implicit-optional – existing API signatures "UP045", # non-pep604-annotation-optional – existing code uses Optional[X] "UP038", # non-pep604-isinstance – existing isinstance(x, (A, B)) patterns ] [tool.ruff.lint.per-file-ignores] "__init__.py" = [ "F401", # unused-import – re-exports "E402", # module-import-not-at-top – ComfyUI entry point structure "F811", # redefined-while-unused – re-exports / conditional imports ] "tests/*" = [ "B011", # assert-false – ok in tests "SIM300", # yoda-conditions – ok in tests ] [tool.ruff.lint.isort] known-first-party = ["core"] # --------------------------------------------------------------------------- # Coverage – developer-only test reporting # --------------------------------------------------------------------------- [tool.coverage.run] branch = true source = ["core"] [tool.coverage.report] show_missing = true skip_covered = false exclude_also = [ "if TYPE_CHECKING:", "raise NotImplementedError", ]