Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## 1.latest #16281 +/- ##
============================================
- Coverage 91.57% 91.56% -0.02%
============================================
Files 223 223
Lines 28346 28346
============================================
- Hits 25959 25956 -3
- Misses 2387 2390 +3
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
🟡 Changes recommended
It introduces potentially breaking public exception renames and a few remaining Fusion-branded identifiers/docstrings that should be made consistent (or aliased) to match the PR’s “no behavior change” claim.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR completes an internal terminology rebrand from “Fusion” to “v2” across the external v2 parser integration in dbt-core, including exception types, parser module naming, CLI/help text, and associated unit/functional tests. The intent is to keep behavior the same while aligning internal naming and copy with the “v2” branding.
Changes:
- Renamed the external-parser integration surface from
fusiontov2(module/function names and exception classes), and updated CLI help/error strings accordingly. - Updated unit + functional tests and parity tooling docs/plugins to reflect the v2 naming.
- Updated warn/error options filtering copy to describe “v2 engine” names while keeping the vendored constant set intact.
File summaries
| File | Description |
|---|---|
| tests/unit/parser/test_v2.py | Updates unit tests to import/use dbt.parser.v2 and V2Parser* exceptions. |
| tests/unit/config/test_v2_warn_error_options.py | Renames test constants/messages from Fusion to v2 and updates emitted Note copy. |
| tests/unit/cli/test_setup_manifest.py | Updates CLI manifest setup tests to assert the v2 parser branch calls parse_with_v2. |
| tests/unit/cli/test_flags.py | Renames the flag test class to v2 naming. |
| tests/unit/artifacts/test_test_node_discrimination.py | Updates commentary to refer to the v2 parser branch. |
| tests/functional/v2_parser/test_v2_parser_branch.py | Renames the end-to-end “fusion parser branch” tests to the v2 naming. |
| tests/functional/v2_parser/init.py | Ensures v2_parser functional test package is present/importable. |
| tests/functional/v2_parser_parity/v2_self_parser.py | Updates the v2-self shim to patch dbt.parser.v2._run_v2 and related copy. |
| tests/functional/v2_parser_parity/README.md | Updates parity plugin documentation to reference parse_with_v2 and v2 naming. |
| tests/functional/v2_parser_parity/plugin.py | Updates CLI help text for the parity plugin to describe routing the v2 parser subprocess. |
| tests/functional/configs/test_warn_error_options.py | Renames functional tests to describe v2-only warn/error options tolerance. |
| core/dbt/tests/util.py | Updates comments describing the v2 parser flow fallback behavior for get_manifest(). |
| core/dbt/parser/v2.py | Renames the integration module and internal APIs/messages from Fusion to v2. |
| core/dbt/parser/manifest.py | Updates plugin-guard comments/docstrings to reference v2 parser mode. |
| core/dbt/jsonschemas/jsonschemas.py | Updates comment text referencing schemas “from the v2 parser”. |
| core/dbt/exceptions.py | Renames Fusion parser exception classes to V2Parser*. |
| core/dbt/deps/private_package.py | Updates docstring text to refer to the v2 engine. |
| core/dbt/config/utils.py | Renames internal variables for warn/error options partitioning to v2 naming; updates Note copy. |
| core/dbt/cli/requires.py | Switches setup_manifest() to import/call parse_with_v2 when USE_V2_PARSER is set. |
| core/dbt/cli/params.py | Updates CLI help strings to say “v2 parser” instead of “fusion parser”. |
| .changes/unreleased/Under the Hood-20260910-120000.yaml | Adds an “Under the Hood” changelog entry describing the naming rebrand. |
Review details
Suppressed comments (3)
tests/unit/config/test_v2_warn_error_options.py:126
- This test class name still uses Fusion branding even though the docstring and the rest of the file have been renamed to v2. Renaming the class improves consistency and makes grepping for Fusion leftovers more reliable.
core/dbt/parser/v2.py:329 - This docstring still refers to the subprocess as "fs" in multiple places, which is inconsistent with the v2 naming used elsewhere in this module and the CLI help/error strings. Updating the wording to "v2 parser" (or "v2 engine") would make it clearer for maintainers.
core/dbt/parser/v2.py:296 - The comment above this block refers to "fs telemetry"; after the Fusion -> v2 rename it would be clearer/consistent to refer to the v2 parser (or v2 engine) telemetry.
- Files reviewed: 20/21 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
The dbt Fusion name is being retired in favor of v2 for dbt's Rust-based parser. Rename the internal exception classes, module, functions, and test names that referenced Fusion so they consistently say v2, and reword user-facing help text, error messages, and log strings to match. Renames FusionParserError/FusionParserSchemaError/FusionParserVersionError to V2ParserError/V2ParserSchemaError/V2ParserVersionError, moves core/dbt/parser/fusion.py to core/dbt/parser/v2.py with parse_with_fusion renamed to parse_with_v2, and updates the corresponding test files and fixtures. The externally-mirrored FUSION_WARN_ERROR_OPTION_NAMES constant and events/fusion_warn_error_options.py module are left untouched since they mirror an error code name that has not been renamed upstream yet. No user-facing behavior change.
Rename V2_PARITY_GET_NODES_PLUGINS (formerly FUSION_PARITY_GET_NODES_PLUGINS) for consistency with the surrounding v2 prose, since it is a purely internal constant with no external mirror. Rename the corresponding test method and TestVendoredFusionNames test class to match their already-reworded v2 docstrings. Add a short comment in config/utils.py explaining why FUSION_WARN_ERROR_OPTION_NAMES itself stays unrenamed while everything derived from it uses v2 naming.
Only the literal string values inside this set (e.g. UnsupportedFusionFeature) need to stay unchanged, since they mirror error/warning code names still defined that way in the external v2 engine. The Python identifier and module name we use to hold that set are our own internal naming and have no bearing on the external contract, so rename them to v2 for consistency with the rest of the rebrand.
Rename test_fusion_plugin_enrichment.py to test_v2_plugin_enrichment.py to match its already-renamed content and its siblings elsewhere in this rebrand. Add a comment in v2_warn_error_options.py explaining that the GenericDatafusionError/LegacyDatafusion/UnsupportedFusionFeature string literals are vendored verbatim from the v2 engine and are intentionally not renamed, so it doesn't read as an incomplete sweep.
GenericDatafusionError and LegacyDatafusion reference the unrelated Apache DataFusion library, not the Fusion engine brand, so they don't belong in the vendoring note alongside UnsupportedFusionFeature.
3709d5b to
4bdabda
Compare
Summary
No user-facing behavior change; this is purely an internal naming and copy update.