diff --git a/.changes/unreleased/Features-20251201-165209.yaml b/.changes/unreleased/Features-20251201-165209.yaml new file mode 100644 index 00000000000..59d76caa1e3 --- /dev/null +++ b/.changes/unreleased/Features-20251201-165209.yaml @@ -0,0 +1,6 @@ +kind: Features +body: Raise jsonschema-based deprecation warnings by default +time: 2025-12-01T16:52:09.354436-05:00 +custom: + Author: michelleark + Issue: 12240 diff --git a/core/dbt/jsonschemas/jsonschemas.py b/core/dbt/jsonschemas/jsonschemas.py index 4407f5d8022..cf5ea62f0e9 100644 --- a/core/dbt/jsonschemas/jsonschemas.py +++ b/core/dbt/jsonschemas/jsonschemas.py @@ -1,5 +1,4 @@ import json -import os import re from datetime import date, datetime from pathlib import Path @@ -141,9 +140,6 @@ def _get_allowed_config_fields_from_error_path( def _can_run_validations() -> bool: - if not os.environ.get("DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS"): - return False - invocation_context = get_invocation_context() return invocation_context.adapter_types.issubset(_JSONSCHEMA_SUPPORTED_ADAPTERS) diff --git a/tests/functional/deprecations/test_deprecations.py b/tests/functional/deprecations/test_deprecations.py index 6262265695c..355b073f8ca 100644 --- a/tests/functional/deprecations/test_deprecations.py +++ b/tests/functional/deprecations/test_deprecations.py @@ -316,7 +316,6 @@ def models(self): "models.yml": invalid_deprecation_date_yaml, } - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) def test_deprecated_invalid_deprecation_date(self, project): event_catcher = EventCatcher(GenericJSONSchemaValidationDeprecation) note_catcher = EventCatcher(Note) @@ -362,7 +361,6 @@ def models(self): } @mock.patch("dbt.jsonschemas.jsonschemas._JSONSCHEMA_SUPPORTED_ADAPTERS", {"postgres"}) - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) def test_custom_key_in_config_deprecation(self, project): event_catcher = EventCatcher(CustomKeyInConfigDeprecation) run_dbt( @@ -384,7 +382,6 @@ def models(self): } @mock.patch("dbt.jsonschemas.jsonschemas._JSONSCHEMA_SUPPORTED_ADAPTERS", {"postgres"}) - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) def test_custom_key_in_config_sql_deprecation(self, project): event_catcher = EventCatcher(CustomKeyInConfigDeprecation) run_dbt( @@ -415,7 +412,6 @@ def models(self): } @mock.patch("dbt.jsonschemas.jsonschemas._JSONSCHEMA_SUPPORTED_ADAPTERS", {"postgres"}) - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) def test_multiple_custom_keys_in_config_deprecation(self, project): event_catcher = EventCatcher(CustomKeyInConfigDeprecation) run_dbt( @@ -442,7 +438,6 @@ def models(self): } @mock.patch("dbt.jsonschemas.jsonschemas._JSONSCHEMA_SUPPORTED_ADAPTERS", {"postgres"}) - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) def test_custom_key_in_object_deprecation(self, project): event_catcher = EventCatcher(CustomKeyInObjectDeprecation) run_dbt(["parse", "--no-partial-parse"], callbacks=[event_catcher.catch]) @@ -486,7 +481,6 @@ def test_jsonschema_validation_deprecations_arent_run_without_env_var( class TestHappyPathProjectHasNoDeprecations: - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) @mock.patch("dbt.jsonschemas.jsonschemas._JSONSCHEMA_SUPPORTED_ADAPTERS", {"postgres"}) def test_happy_path_project_has_no_deprecations(self, happy_path_project): event_cathcer = EventCatcher(DeprecationsSummary) @@ -498,7 +492,6 @@ def test_happy_path_project_has_no_deprecations(self, happy_path_project): class TestBaseProjectHasNoDeprecations: - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) @mock.patch("dbt.jsonschemas.jsonschemas._JSONSCHEMA_SUPPORTED_ADAPTERS", {"postgres"}) def test_base_project_has_no_deprecations(self, project): event_cathcer = EventCatcher(DeprecationsSummary) @@ -707,7 +700,6 @@ class TestMissingPlusPrefixDeprecation: def project_config_update(self): return {"seeds": {"path": {"enabled": True}}} - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) @mock.patch("dbt.jsonschemas.jsonschemas._JSONSCHEMA_SUPPORTED_ADAPTERS", {"postgres"}) def test_missing_plus_prefix_deprecation(self, project): event_catcher = EventCatcher(MissingPlusPrefixDeprecation) @@ -721,7 +713,6 @@ class TestMissingPlusPrefixDeprecationSubPath: def project_config_update(self): return {"seeds": {"path": {"+enabled": True, "sub_path": {"enabled": True}}}} - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) @mock.patch("dbt.jsonschemas.jsonschemas._JSONSCHEMA_SUPPORTED_ADAPTERS", {"postgres"}) def test_missing_plus_prefix_deprecation_sub_path(self, project): event_catcher = EventCatcher(MissingPlusPrefixDeprecation) @@ -735,7 +726,6 @@ class TestMissingPlusPrefixDeprecationCustomConfig: def project_config_update(self): return {"seeds": {"path": {"custom_config": True, "sub_path": {"+enabled": True}}}} - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) @mock.patch("dbt.jsonschemas.jsonschemas._JSONSCHEMA_SUPPORTED_ADAPTERS", {"postgres"}) def test_missing_plus_prefix_deprecation_sub_path(self, project): event_catcher = EventCatcher(MissingPlusPrefixDeprecation) @@ -749,7 +739,6 @@ class TestCustomConfigInDbtProjectYmlNoDeprecation: def project_config_update(self): return {"seeds": {"path": {"+custom_config": True}}} - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) @mock.patch("dbt.jsonschemas.jsonschemas._JSONSCHEMA_SUPPORTED_ADAPTERS", {"postgres"}) def test_missing_plus_prefix_deprecation_sub_path(self, project): note_catcher = EventCatcher(Note) @@ -782,10 +771,6 @@ def test_jsonschema_validation_gating( dbt_private_run_jsonschema_validations: bool, expected_events: int, ) -> None: - mocker.patch.dict( - os.environ, - {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": dbt_private_run_jsonschema_validations}, - ) if postgres_is_valid: supported_adapters_with_postgres = { @@ -911,7 +896,6 @@ def models(self): "models.yml": property_moved_to_config_yaml, } - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) @mock.patch("dbt.jsonschemas.jsonschemas._JSONSCHEMA_SUPPORTED_ADAPTERS", {"postgres"}) def test_property_moved_to_config_deprecation(self, project): event_catcher = EventCatcher(PropertyMovedToConfigDeprecation) diff --git a/tests/functional/source_overrides/test_simple_source_override.py b/tests/functional/source_overrides/test_simple_source_override.py index ef7d8f8b6f3..dcba0a78dfb 100644 --- a/tests/functional/source_overrides/test_simple_source_override.py +++ b/tests/functional/source_overrides/test_simple_source_override.py @@ -1,4 +1,3 @@ -import os from datetime import datetime, timedelta, timezone from unittest import mock @@ -99,7 +98,6 @@ def _set_updated_at_to(self, insert_id, delta, project): return insert_id + 1 @mock.patch("dbt.jsonschemas.jsonschemas._JSONSCHEMA_SUPPORTED_ADAPTERS", {"postgres"}) - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) def test_source_overrides(self, project): insert_id = 101 diff --git a/tests/functional/test_project.py b/tests/functional/test_project.py index dd1955d2e96..2aac14dbd92 100644 --- a/tests/functional/test_project.py +++ b/tests/functional/test_project.py @@ -1,4 +1,3 @@ -import os from unittest import mock import yaml @@ -28,7 +27,6 @@ def test_project(self, project, mocker: MockerFixture) -> None: class TestGenericJsonSchemaValidationDeprecation: """Ensure that the generic jsonschema validation deprecation can be fired""" - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) def test_project(self, project, project_root: str) -> None: # `name` was already required prior to this deprecation, so this deprecation doesn't diff --git a/tests/unit/config/test_project.py b/tests/unit/config/test_project.py index d07b7b94dc1..475a038a7b0 100644 --- a/tests/unit/config/test_project.py +++ b/tests/unit/config/test_project.py @@ -622,7 +622,6 @@ def test_impossible_version_range(self, project_dict: Dict[str, Any]) -> None: class TestDeprecations: - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) def test_jsonschema_validate(self) -> None: from dbt.jsonschemas.jsonschemas import jsonschema_validate diff --git a/tests/unit/test_jsonschemas.py b/tests/unit/test_jsonschemas.py index 0c069231b78..3fea9636631 100644 --- a/tests/unit/test_jsonschemas.py +++ b/tests/unit/test_jsonschemas.py @@ -1,6 +1,3 @@ -import os -from unittest import mock - from dbt.deprecations import ( CustomKeyInConfigDeprecation, CustomKeyInObjectDeprecation, @@ -14,7 +11,6 @@ class TestValidateModelConfigNoError: - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) def test_validate_model_config_no_error(self): safe_set_invocation_context() get_invocation_context().uses_adapter("snowflake") @@ -27,7 +23,6 @@ def test_validate_model_config_no_error(self): validate_model_config(config, "test.yml") assert len(caught_events) == 0 - @mock.patch.dict(os.environ, {"DBT_ENV_PRIVATE_RUN_JSONSCHEMA_VALIDATIONS": "True"}) def test_validate_model_config_error(self): safe_set_invocation_context() get_invocation_context().uses_adapter("snowflake")