refactor: switch to basedpyright, remove pydantic-settings

- Replace pyright with basedpyright in devenv.nix (custom hook)
- Add basedpyright to devenv packages
- Fix all basedpyright warnings: add DiGraph[str] type args, annotate
  class attributes, narrow SyncResponse, handle unused call results,
  suppress unavoidable Any from yaml.safe_load and untyped blackforest
- Replace pydantic-settings[yaml] with direct pyyaml dependency
- Update CLAUDE.md to reflect basedpyright and dependency changes
This commit is contained in:
Konstantin Fickel 2026-02-13 20:25:28 +01:00
parent f71af1cfaf
commit 7ab25d49cb
Signed by: kfickel
GPG key ID: A793722F9933C1A5
11 changed files with 58 additions and 59 deletions

View file

@ -18,16 +18,16 @@ uv run pytest # run tests
## Code quality
Pre-commit hooks run automatically on `git commit`:
- **pyright** - static type checking (config: `pyrightconfig.json` points to `.devenv/state/venv`)
- **basedpyright** - strict static type checking (config: `pyrightconfig.json` points to `.devenv/state/venv`)
- **ruff check** - linting with auto-fix
- **ruff format** - formatting
- **commitizen** - enforces conventional commit messages (`feat:`, `fix:`, `chore:`, etc.)
Run manually:
```bash
/nix/store/h7f5vym2ykpl7ls8icw0wiqgmv9xiwnx-pyright-1.1.407/bin/pyright
/nix/store/xmy9vff4zlbvkz3y830085dzgjpmaj8d-ruff-0.14.14/bin/ruff check
/nix/store/xmy9vff4zlbvkz3y830085dzgjpmaj8d-ruff-0.14.14/bin/ruff format --check
basedpyright
ruff check
ruff format --check
```
## Code style conventions
@ -110,9 +110,10 @@ The provider writes the result file to `project_dir / target_name`.
## Dependencies
- `typer` - CLI framework
- `pydantic` / `pydantic-settings[yaml]` - config parsing (pyyaml comes via the yaml extra)
- `pydantic` - data validation and config models
- `pyyaml` - YAML parsing
- `networkx` - dependency graph
- `blackforest` - BlackForestLabs API client (sync, uses `requests`)
- `blackforest` - BlackForestLabs API client (sync, uses `requests`; no type stubs)
- `mistralai` - Mistral API client (supports async)
- `httpx` - async HTTP for downloading BFL result images (transitive via mistralai)
- `hatchling` - build backend