Changes:
- Add [tool.ruff] config with target-version py310 and a curated rule set
(E/F/W, I, UP, B, SIM, RUF) so future drift is caught in CI lint.
- PEP 585 sweep across all node modules: drop legacy typing.Dict / List /
Tuple / Optional in favor of dict / list / tuple / `X | None`. Annotate
class-level mutable defaults as ClassVar to satisfy RUF012.
- PromptCombinerNode: replace the magic-string mode chain with a CombineMode
StrEnum + match statement. The dropdown choices in INPUT_TYPES are now
derived from the same Literal alias used in the function signature, so the
UI and the type contract can't drift apart.
- Smoke tests for PromptCombinerNode (14 tests) covering enum mapping, all
three modes, edge cases, and the unknown-mode error path. Brings combiner
coverage from 28% to 96%.
- Tidy preexisting issues surfaced by the new lint rules: B904 except chaining
in style_presets, RUF013 implicit Optional, RUF059 unused unpack, SIM117
nested-with consolidation in tests.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Remove dead imports from prompt_generator_node.py and ollama_client.py
- Switch optional imports to importlib.util.find_spec pattern
- Remove orphaned _cached_models/_cache_time from PromptGeneratorNode
- Remove unused seed param from PromptRefinerNode
- Add top_p input to NegativePromptNode with proper wiring
- Fix pytest.ini to not omit adapters from coverage
- Remove unused pytest imports from test files
- Run ruff check + format (all clean now)
- All 29 tests passing