Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update adapter version messages #10919

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

dave-connors-3
Copy link
Contributor

Resolves #10230

Problem

The messages in dbt --version don't reflect the fact that the minor version of an adapter could be ahead of the minor version of dbt core

Solution

update the semver check in version.py!

I added the assertions for mypy's sake, but can be convinced to do that a different way

Checklist

  • I have read the contributing guide and understand what's expected of me.
  • I have run this code in development, and it appears to resolve the stated issue.
  • This PR includes tests, or tests are not required or relevant for this PR.
  • This PR has no interface changes (e.g., macros, CLI, logs, JSON artifacts, config files, adapter interface, etc.) or this PR has already received feedback and approval from Product or DX.
  • This PR includes type annotations for new and modified functions.

@dave-connors-3 dave-connors-3 requested a review from a team as a code owner October 25, 2024 15:45
@cla-bot cla-bot bot added the cla:yes label Oct 25, 2024
@github-actions github-actions bot added the community This PR is from a community member label Oct 25, 2024
@dave-connors-3 dave-connors-3 changed the title update tests for mismatching plugins update adapter version messages Oct 25, 2024
Copy link

codecov bot commented Oct 25, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 89.19%. Comparing base (316ecfc) to head (3529df4).
Report is 22 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main   #10919   +/-   ##
=======================================
  Coverage   89.19%   89.19%           
=======================================
  Files         183      183           
  Lines       23466    23470    +4     
=======================================
+ Hits        20930    20934    +4     
  Misses       2536     2536           
Flag Coverage Δ
integration 86.54% <100.00%> (-0.02%) ⬇️
unit 62.07% <100.00%> (+<0.01%) ⬆️

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

Components Coverage Δ
Unit Tests 62.07% <100.00%> (+<0.01%) ⬆️
Integration Tests 86.54% <100.00%> (-0.02%) ⬇️

@graciegoheen graciegoheen added the ready_for_review Externally contributed PR has functional approval, ready for code review from Core engineering label Nov 12, 2024
@@ -130,7 +130,11 @@ def _get_plugin_msg_info(

needs_update = False

if plugin.major != core.major or plugin.minor != core.minor:
assert plugin.major is not None
Copy link
Contributor

Choose a reason for hiding this comment

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

asserts shouldn't be used in production, see: https://snyk.io/blog/the-dangers-of-assert-in-python/

Copy link
Contributor

@QMalcolm QMalcolm left a comment

Choose a reason for hiding this comment

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

We should actually just rip this version checking logic out 🤔

assert plugin.minor is not None
assert core.major is not None
assert core.minor is not None
if plugin.major != core.major or plugin.minor < core.minor:
Copy link
Contributor

Choose a reason for hiding this comment

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

So I talked with @colin-rogers-dbt + @mikealfare about this. I think we can get safely rid of this check entirely. Basically, we've decoupled the plugin (adapter specific) version and the core version. The majors no longer need to be equal, and the minor can be behind the core minor. The later might not actually be that uncommon.

All of this is the case because PyPI now handles this via dbt-adapters. Essentially, dbt-core specifies what dbt-adapters versions it is compatible with, and each dbt adapter also specifies what dbt-adapters versions it is compatible with. The result being, you'd have to intentionally force install incompatible versions for this check to be relevant. Thus, this check is unneeded.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

even better! you want to do the honors or should i?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla:yes community This PR is from a community member ready_for_review Externally contributed PR has functional approval, ready for code review from Core engineering
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug] dbt -v doesn't know that adapters are decoupled from core
4 participants