Conversation
- service.py: type the partial-edges reason list as List[str] so the dominant-reason pick returns str, and expose get_model_config on the ProjectMetadataProvider protocol (both concrete registries already implement it) so the LineageAndMetadataProvider seam matches its use. - sql_parser.py: narrow _phantom_token_reason's return type to the two Literal reasons it actually emits, matching UnresolvedColumnEdge. - tests: pass str paths to ManifestReader, add the fake provider's get_model_config, and type-ignore the path-injected _build fixture imports (deliberately outside mypy's module map). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
[tool.mypy].files still named dbt_column_lineage, the pre-rename package, so bare mypy checked nothing under the source tree. Bare mypy now matches poetry run type-check. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Pin black 25.12.0, ruff 0.16.3, and mypy 1.19.1 exactly in the dev dependencies (the versions the lockfile had already resolved to) and lift the .pre-commit-config.yaml revs (black 24.10.0 / ruff v0.8.4 / mypy v1.15.0) to the same versions, so local runs, hooks, and CI share one definition of clean. Also make that definition explicit for ruff: adopt 0.16's default rule set with a policy ignore list for the rules this codebase violates on purpose (fail-safe blind excepts, returncode-forwarding subprocess wrappers). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add mypy (poetry run type-check), black --check (line length 100), and ruff check (no --fix) steps to the test workflow, before the test tiers. The format gates go green with the follow-up one-time repo-wide style commit on this branch. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mechanical output of the pinned toolchain over the whole repo: black
25.12.0 plus ruff 0.16.3 --fix --unsafe-fixes (1894 fixes, mostly
UP006/UP045 pyupgrade rewrites). No hand edits. Verified idempotent (a
second run is a no-op) and behavior-preserving: mypy clean and the full
suite identical before and after (760 passed, 1 skipped).
Regenerable: if this commit conflicts at merge time, drop it and rerun
on merged main:
poetry run format && poetry run format && poetry run test
(first run applies fixes and exits non-zero via --exit-non-zero-on-fix;
the second must be a no-op)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Restores the repository's quality gate, which had drifted:
mypywas failing onmain, CI ran neither type-check nor format-check, the mypy config pointed at the pre-rename package name, and the formatter/linter versions disagreed between the lockfile, the dev deps, and the pre-commit hooks.Changes
main. Type the dominant-reason pick, exposeget_model_configon theProjectMetadataProviderprotocol (both concrete registries already implement it), narrow a parser return type to the literals it emits, and correct a handful of test type issues.poetry run type-checknow exits 0.parrantpackage.[tool.mypy].filesstill named the olddbt_column_lineagepackage, so baremypychecked nothing under the source tree.black,ruff, andmypyto the exact resolved versions and lift the.pre-commit-config.yamlrevs to match, so local runs, hooks, and CI share one definition of "clean". Adopts ruff's current default rule set with an explicit ignore list for the rules this codebase violates deliberately (fail-safe blind-excepts, return-code-forwarding subprocess wrappers) — worth a look during review.type-check,black --check, andruff checksteps to the test workflow.Merge order
Merge after #141. The final
style:commit here was generated against the current tree; once #141 lands it must be regenerated so it also covers that PR's new code. It is intentionally regenerable — drop it and rerun on the merged base:(the first run applies fixes and exits non-zero; the second must be a no-op)
🤖 Generated with Claude Code