Skip to content

Rename internal Fusion parser naming to v2 - #16281

Open
aiguofer wants to merge 8 commits into
1.latestfrom
rebrand-fusion-to-v2-parser
Open

aiguofer wants to merge 8 commits into
1.latestfrom
rebrand-fusion-to-v2-parser

Conversation

@aiguofer

@aiguofer aiguofer commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Rename internal Fusion parser naming to v2 as part of the broader Fusion to v2 rebrand: exception classes (FusionParserError, FusionParserSchemaError, FusionParserVersionError to V2ParserError, V2ParserSchemaError, V2ParserVersionError), the core/dbt/parser/fusion.py module (to v2.py, with parse_with_fusion to parse_with_v2 and related private helpers), config/utils.py helper names, and the FUSION_PARITY_GET_NODES_PLUGINS constant in parser/manifest.py.
  • Reword user-facing help text, error messages, log strings, and comments from Fusion to v2, and rename corresponding test files, classes, and fixtures, including the fusion_warn_error_options.py module and its FUSION_WARN_ERROR_OPTION_NAMES constant (renamed to v2_warn_error_options.py / V2_WARN_ERROR_OPTION_NAMES).
  • Leave the "UnsupportedFusionFeature" string value inside that constant untouched, since it mirrors an error code name that has not been renamed in the upstream v2 engine yet; the surrounding module/constant names are our own internal naming and were renamed along with everything else.

No user-facing behavior change; this is purely an internal naming and copy update.

Copilot AI lite review requested due to automatic review settings September 10, 2026 17:42
@aiguofer
aiguofer requested a review from a team as a code owner September 10, 2026 17:42
@codecov

codecov Bot commented Sep 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.56%. Comparing base (37c0ef1) to head (3709d5b).

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     
Flag Coverage Δ
integration 87.79% <85.29%> (-0.02%) ⬇️
unit 67.05% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
Unit Tests 67.05% <100.00%> (ø)
Integration Tests 87.79% <85.29%> (-0.02%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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 fusion to v2 (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.

Comment thread core/dbt/exceptions.py
Comment thread core/dbt/parser/manifest.py
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.
@aiguofer
aiguofer force-pushed the rebrand-fusion-to-v2-parser branch from 3709d5b to 4bdabda Compare September 16, 2026 17:53
@aiguofer
aiguofer added this pull request to stack #16339 September 16, 2026 18:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants