-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
Fix setting silence
of warn_error_options
via dbt_project.yaml
flags
#10359
Fix setting silence
of warn_error_options
via dbt_project.yaml
flags
#10359
Conversation
…e silencing We're fixing an issue wherein `silence` specifications in the `dbt_project.yaml` weren't being respected. This was odd since we had tests specifically for this. It turns out the tests were broken. Essentially the warning was instead being raised as an error due to `include: 'all'`. Then because it was being raised as an error, the event wasn't going through the logger. We were only asserting in these tests that the silenced event wasn't going through the logger (which it wasn't) so everything "appeared" to be working. Unfortunately everything wasn't actually working. This is now highlighted because `test_warn_error_options::TestWarnErrorOptionsFromProject:test_can_silence` is now failing with this commit.
Back when I did the work for #10058 (specifically c52d653) I thought that the `warn_error_options` would automatically be converted from the yaml to the `WarnErrorOptions` object as we were building the `ProjectFlags` object, which holds `warn_error_options`, via `ProjectFlags.from_dict`. And I thought this was validated by the `test_can_silence` test added in c52d653. However, there were two problems: 1. The definition of `warn_error_options` on `PrjectFlags` is a dict, not a `WarnErrorOptions` object 2. The `test_can_silence` test was broken, and not testing what I thought The quick fix (this commit) is to ensure `silence` is passed to `WarnErrorOptions` instantiation in `dbt.cli.flags.convert_config`. The better fix would be to make the `warn_error_options` of `ProjectFlags` a `WarnErrorOptions` object instead of a dict. However, to do this we first need to update dbt-common's `WarnErrorOptions` definition to default `include` to an empty list. Doing so would allow us to get rid of `convert_config` entirely.
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #10359 +/- ##
==========================================
- Coverage 88.78% 88.75% -0.04%
==========================================
Files 180 180
Lines 22479 22486 +7
==========================================
- Hits 19958 19957 -1
- Misses 2521 2529 +8
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✨
…flags (#10359) * Fix `test_can_silence` tests in `test_warn_error_options.py` to ensure silencing We're fixing an issue wherein `silence` specifications in the `dbt_project.yaml` weren't being respected. This was odd since we had tests specifically for this. It turns out the tests were broken. Essentially the warning was instead being raised as an error due to `include: 'all'`. Then because it was being raised as an error, the event wasn't going through the logger. We were only asserting in these tests that the silenced event wasn't going through the logger (which it wasn't) so everything "appeared" to be working. Unfortunately everything wasn't actually working. This is now highlighted because `test_warn_error_options::TestWarnErrorOptionsFromProject:test_can_silence` is now failing with this commit. * Fix setting `warn_error_options` via `dbt_project.yaml` flags. Back when I did the work for #10058 (specifically c52d653) I thought that the `warn_error_options` would automatically be converted from the yaml to the `WarnErrorOptions` object as we were building the `ProjectFlags` object, which holds `warn_error_options`, via `ProjectFlags.from_dict`. And I thought this was validated by the `test_can_silence` test added in c52d653. However, there were two problems: 1. The definition of `warn_error_options` on `PrjectFlags` is a dict, not a `WarnErrorOptions` object 2. The `test_can_silence` test was broken, and not testing what I thought The quick fix (this commit) is to ensure `silence` is passed to `WarnErrorOptions` instantiation in `dbt.cli.flags.convert_config`. The better fix would be to make the `warn_error_options` of `ProjectFlags` a `WarnErrorOptions` object instead of a dict. However, to do this we first need to update dbt-common's `WarnErrorOptions` definition to default `include` to an empty list. Doing so would allow us to get rid of `convert_config` entirely. (cherry picked from commit 11ee2b9)
…ia `dbt_project.yaml` flags (#10361) * Fix setting `silence` of `warn_error_options` via `dbt_project.yaml` flags (#10359) * Fix `test_can_silence` tests in `test_warn_error_options.py` to ensure silencing We're fixing an issue wherein `silence` specifications in the `dbt_project.yaml` weren't being respected. This was odd since we had tests specifically for this. It turns out the tests were broken. Essentially the warning was instead being raised as an error due to `include: 'all'`. Then because it was being raised as an error, the event wasn't going through the logger. We were only asserting in these tests that the silenced event wasn't going through the logger (which it wasn't) so everything "appeared" to be working. Unfortunately everything wasn't actually working. This is now highlighted because `test_warn_error_options::TestWarnErrorOptionsFromProject:test_can_silence` is now failing with this commit. * Fix setting `warn_error_options` via `dbt_project.yaml` flags. Back when I did the work for #10058 (specifically c52d653) I thought that the `warn_error_options` would automatically be converted from the yaml to the `WarnErrorOptions` object as we were building the `ProjectFlags` object, which holds `warn_error_options`, via `ProjectFlags.from_dict`. And I thought this was validated by the `test_can_silence` test added in c52d653. However, there were two problems: 1. The definition of `warn_error_options` on `PrjectFlags` is a dict, not a `WarnErrorOptions` object 2. The `test_can_silence` test was broken, and not testing what I thought The quick fix (this commit) is to ensure `silence` is passed to `WarnErrorOptions` instantiation in `dbt.cli.flags.convert_config`. The better fix would be to make the `warn_error_options` of `ProjectFlags` a `WarnErrorOptions` object instead of a dict. However, to do this we first need to update dbt-common's `WarnErrorOptions` definition to default `include` to an empty list. Doing so would allow us to get rid of `convert_config` entirely. (cherry picked from commit 11ee2b9) --------- Co-authored-by: Quigley Malcolm <[email protected]> Co-authored-by: Quigley Malcolm <[email protected]>
…flags (#10359) * Fix `test_can_silence` tests in `test_warn_error_options.py` to ensure silencing We're fixing an issue wherein `silence` specifications in the `dbt_project.yaml` weren't being respected. This was odd since we had tests specifically for this. It turns out the tests were broken. Essentially the warning was instead being raised as an error due to `include: 'all'`. Then because it was being raised as an error, the event wasn't going through the logger. We were only asserting in these tests that the silenced event wasn't going through the logger (which it wasn't) so everything "appeared" to be working. Unfortunately everything wasn't actually working. This is now highlighted because `test_warn_error_options::TestWarnErrorOptionsFromProject:test_can_silence` is now failing with this commit. * Fix setting `warn_error_options` via `dbt_project.yaml` flags. Back when I did the work for #10058 (specifically c52d653) I thought that the `warn_error_options` would automatically be converted from the yaml to the `WarnErrorOptions` object as we were building the `ProjectFlags` object, which holds `warn_error_options`, via `ProjectFlags.from_dict`. And I thought this was validated by the `test_can_silence` test added in c52d653. However, there were two problems: 1. The definition of `warn_error_options` on `PrjectFlags` is a dict, not a `WarnErrorOptions` object 2. The `test_can_silence` test was broken, and not testing what I thought The quick fix (this commit) is to ensure `silence` is passed to `WarnErrorOptions` instantiation in `dbt.cli.flags.convert_config`. The better fix would be to make the `warn_error_options` of `ProjectFlags` a `WarnErrorOptions` object instead of a dict. However, to do this we first need to update dbt-common's `WarnErrorOptions` definition to default `include` to an empty list. Doing so would allow us to get rid of `convert_config` entirely.
resolves #10160
Problem
Specifying
silence
ofwarn_error_options
indbt_project.yaml
flags wasn't silencing warnings.Solution
Ensure
silence
is used during instantiation ofWarnErrorOptions
fromdbt_project.yaml
Checklist