diff --git a/sqlmesh/core/config/feature_flag.py b/sqlmesh/core/config/feature_flag.py deleted file mode 100644 index b04dda2b08..0000000000 --- a/sqlmesh/core/config/feature_flag.py +++ /dev/null @@ -1,9 +0,0 @@ -from sqlmesh.utils.pydantic import PydanticModel - - -class DbtFeatureFlag(PydanticModel): - scd_type_2_support: bool = True - - -class FeatureFlag(PydanticModel): - dbt: DbtFeatureFlag = DbtFeatureFlag() diff --git a/sqlmesh/core/config/root.py b/sqlmesh/core/config/root.py index ec8fa9988f..65889cb7cf 100644 --- a/sqlmesh/core/config/root.py +++ b/sqlmesh/core/config/root.py @@ -27,7 +27,6 @@ SerializableConnectionConfig, connection_config_validator, ) -from sqlmesh.core.config.feature_flag import FeatureFlag from sqlmesh.core.config.format import FormatConfig from sqlmesh.core.config.gateway import GatewayConfig from sqlmesh.core.config.janitor import JanitorConfig @@ -122,7 +121,6 @@ class Config(BaseConfig): log_limit: The default number of logs to keep. format: The formatting options for SQL code. ui: The UI configuration for SQLMesh. - feature_flags: Feature flags to enable/disable certain features. plan: The plan configuration. migration: The migration configuration. variables: A dictionary of variables that can be used in models / macros. @@ -165,7 +163,6 @@ class Config(BaseConfig): run: RunConfig = RunConfig() format: FormatConfig = FormatConfig() ui: UIConfig = UIConfig() - feature_flags: FeatureFlag = FeatureFlag() plan: PlanConfig = PlanConfig() migration: MigrationConfig = MigrationConfig() model_naming: NameInferenceConfig = NameInferenceConfig() diff --git a/sqlmesh/dbt/loader.py b/sqlmesh/dbt/loader.py index 0882c5ad99..3a22b61bf6 100644 --- a/sqlmesh/dbt/loader.py +++ b/sqlmesh/dbt/loader.py @@ -19,7 +19,6 @@ from sqlmesh.dbt.basemodel import BMC, BaseModelConfig from sqlmesh.dbt.common import Dependencies from sqlmesh.dbt.context import DbtContext -from sqlmesh.dbt.model import ModelConfig from sqlmesh.dbt.profile import Profile from sqlmesh.dbt.project import Project from sqlmesh.dbt.target import TargetConfig @@ -139,16 +138,6 @@ def _to_sqlmesh(config: BMC, context: DbtContext) -> Model: package_models: t.Dict[str, BaseModelConfig] = {**package.models, **package.seeds} for model in package_models.values(): - if ( - not context.sqlmesh_config.feature_flags.dbt.scd_type_2_support - and isinstance(model, ModelConfig) - and model.model_kind(context).is_scd_type_2 - ): - logger.info( - "Skipping loading Snapshot (SCD Type 2) models due to the feature flag disabling this feature" - ) - continue - sqlmesh_model = cache.get_or_load_models( model.path, loader=lambda: [_to_sqlmesh(model, context)] )[0] diff --git a/tests/core/test_config.py b/tests/core/test_config.py index 8e932ee30d..10881dc493 100644 --- a/tests/core/test_config.py +++ b/tests/core/test_config.py @@ -21,7 +21,6 @@ TableNamingConvention, ) from sqlmesh.core.config.connection import DuckDBAttachOptions, RedshiftConnectionConfig -from sqlmesh.core.config.feature_flag import DbtFeatureFlag, FeatureFlag from sqlmesh.core.config.loader import ( load_config_from_env, load_config_from_paths, @@ -299,12 +298,10 @@ def test_load_config_from_env(): { "SQLMESH__GATEWAY__CONNECTION__TYPE": "duckdb", "SQLMESH__GATEWAY__CONNECTION__DATABASE": "test_db", - "SQLMESH__FEATURE_FLAGS__DBT__SCD_TYPE_2_SUPPORT": "false", }, ): assert Config.parse_obj(load_config_from_env()) == Config( gateways=GatewayConfig(connection=DuckDBConnectionConfig(database="test_db")), - feature_flags=FeatureFlag(dbt=DbtFeatureFlag(scd_type_2_support=False)), ) @@ -505,35 +502,6 @@ def test_physical_schema_mapping_mutually_exclusive_with_physical_schema_overrid Config(physical_schema_override={"foo": "bar"}, physical_schema_mapping={"^foo$": "bar"}) # type: ignore -def test_load_feature_flag(tmp_path_factory): - config_path = tmp_path_factory.mktemp("yaml_config") / "config.yaml" - with open(config_path, "w", encoding="utf-8") as fd: - fd.write( - """ -gateways: - duckdb_gateway: - connection: - type: duckdb -model_defaults: - dialect: bigquery -feature_flags: - dbt: - scd_type_2_support: false - """ - ) - - assert load_config_from_paths( - Config, - project_paths=[config_path], - ) == Config( - gateways={ - "duckdb_gateway": GatewayConfig(connection=DuckDBConnectionConfig()), - }, - model_defaults=ModelDefaultsConfig(dialect="bigquery"), - feature_flags=FeatureFlag(dbt=DbtFeatureFlag(scd_type_2_support=False)), - ) - - def test_load_alternative_config_type(yaml_config_path: Path, python_config_path: Path): class DerivedConfig(Config): pass @@ -1435,7 +1403,7 @@ def test_physical_table_naming_convention( gateways: test_gateway: connection: - type: duckdb + type: duckdb model_defaults: dialect: duckdb {config_part} @@ -1504,7 +1472,7 @@ def test_load_configs_in_dbt_project_without_config_py(tmp_path: Path): outputs: dev: type: duckdb - path: 'jaffle_shop.duckdb' + path: 'jaffle_shop.duckdb' """) (tmp_path / "sqlmesh.yaml").write_text(""" @@ -1513,7 +1481,7 @@ def test_load_configs_in_dbt_project_without_config_py(tmp_path: Path): state_connection: type: duckdb database: state.db -model_defaults: +model_defaults: start: '2020-01-01' """) diff --git a/tests/dbt/test_adapter.py b/tests/dbt/test_adapter.py index 73a2e1f1f2..73d00d619d 100644 --- a/tests/dbt/test_adapter.py +++ b/tests/dbt/test_adapter.py @@ -1,6 +1,5 @@ from __future__ import annotations -import os import typing as t from unittest import mock from unittest.mock import call @@ -11,7 +10,6 @@ from pytest_mock.plugin import MockerFixture from sqlglot import exp, parse_one -from sqlmesh import Context from sqlmesh.core.dialect import schema_ from sqlmesh.core.snapshot import SnapshotId from sqlmesh.dbt.adapter import ParsetimeAdapter @@ -277,28 +275,6 @@ def test_adapter_map_snapshot_tables( assert renderer("{{ adapter.resolve_identifier(foo_bar) }}") == "bar" -def test_feature_flag_scd_type_2(copy_to_temp_path, caplog): - project_root = "tests/fixtures/dbt/sushi_test" - sushi_context = Context(paths=copy_to_temp_path(project_root)) - assert '"memory"."snapshots"."items_snapshot"' in sushi_context.models - assert ( - "Skipping loading Snapshot (SCD Type 2) models due to the feature flag disabling this feature" - not in caplog.text - ) - with mock.patch.dict( - os.environ, - { - "SQLMESH__FEATURE_FLAGS__DBT__SCD_TYPE_2_SUPPORT": "false", - }, - ): - sushi_context = Context(paths=copy_to_temp_path(project_root)) - assert '"memory"."snapshots"."items_snapshot"' not in sushi_context.models - assert ( - "Skipping loading Snapshot (SCD Type 2) models due to the feature flag disabling this feature" - in caplog.text - ) - - def test_quote_as_configured(): adapter = ParsetimeAdapter( JinjaMacroRegistry(),