From 34bb6ffdd75dcbcd966a803475a3b4f0ec2fabf0 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 12:00:37 -0700 Subject: [PATCH 01/80] Add missing `__init__.py` files in `tests`. --- tests/inference/__init__.py | 0 tests/inference/context/__init__.py | 0 tests/inference/renderer/__init__.py | 0 tests/inference/rule/__init__.py | 0 tests/inference/solver/__init__.py | 0 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/inference/__init__.py create mode 100644 tests/inference/context/__init__.py create mode 100644 tests/inference/renderer/__init__.py create mode 100644 tests/inference/rule/__init__.py create mode 100644 tests/inference/solver/__init__.py diff --git a/tests/inference/__init__.py b/tests/inference/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/inference/context/__init__.py b/tests/inference/context/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/inference/renderer/__init__.py b/tests/inference/renderer/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/inference/rule/__init__.py b/tests/inference/rule/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/inference/solver/__init__.py b/tests/inference/solver/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From 86420c643078fa55a506ac87915b21067d547de2 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 12:01:35 -0700 Subject: [PATCH 02/80] Add semantics module. --- metricflow/semantics/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 metricflow/semantics/__init__.py diff --git a/metricflow/semantics/__init__.py b/metricflow/semantics/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From f208ee1d7f4233946465f51cdf8b7e3dd8b88695 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 15:02:22 -0700 Subject: [PATCH 03/80] Rename errors. --- .../dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py | 2 +- .../dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py | 2 +- metricflow/dataflow/builder/dataflow_plan_builder.py | 2 +- metricflow/engine/metricflow_engine.py | 2 +- metricflow/errors/{errors.py => error_classes.py} | 0 metricflow/model/semantics/linkable_spec_resolver.py | 2 +- metricflow/model/semantics/metric_lookup.py | 2 +- metricflow/model/semantics/semantic_model_lookup.py | 2 +- metricflow/specs/where_filter_dimension.py | 2 +- metricflow/specs/where_filter_entity.py | 2 +- metricflow/specs/where_filter_metric.py | 2 +- metricflow/specs/where_filter_time_dimension.py | 2 +- metricflow/sql/render/big_query.py | 2 +- metricflow/sql/render/databricks.py | 2 +- metricflow/sql/render/postgres.py | 2 +- metricflow/sql/render/redshift.py | 2 +- metricflow/sql/render/snowflake.py | 2 +- tests/dataflow/builder/test_dataflow_plan_builder.py | 2 +- tests/specs/test_where_filter_entity.py | 2 +- 19 files changed, 18 insertions(+), 18 deletions(-) rename metricflow/errors/{errors.py => error_classes.py} (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py index 8d112e2c4f..3a79b3e455 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py @@ -9,7 +9,7 @@ from dbt.exceptions import DbtDatabaseError from dbt_semantic_interfaces.enum_extension import assert_values_exhausted -from metricflow.errors.errors import SqlBindParametersNotSupportedError +from metricflow.errors.error_classes import SqlBindParametersNotSupportedError from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.protocols.sql_client import SqlEngine diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py index 12eace5056..dbe9ebec53 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py @@ -14,7 +14,7 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from typing_extensions import Self -from metricflow.errors.errors import ModelCreationException +from metricflow.errors.error_classes import ModelCreationException from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.model.dbt_manifest_parser import parse_manifest_from_dbt_generated_manifest diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index d825701242..e14bd3b3d7 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -54,7 +54,7 @@ from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer from metricflow.dataset.dataset import DataSet -from metricflow.errors.errors import UnableToSatisfyQueryError +from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 24318affe9..4b513006ac 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -26,7 +26,7 @@ from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.engine.models import Dimension, Entity, Measure, Metric, SavedQuery from metricflow.engine.time_source import ServerTimeSource -from metricflow.errors.errors import ExecutionException +from metricflow.errors.error_classes import ExecutionException from metricflow.execution.execution_plan import ExecutionPlan, SqlQuery from metricflow.execution.executor import SequentialPlanExecutor from metricflow.filters.time_constraint import TimeRangeConstraint diff --git a/metricflow/errors/errors.py b/metricflow/errors/error_classes.py similarity index 100% rename from metricflow/errors/errors.py rename to metricflow/errors/error_classes.py diff --git a/metricflow/model/semantics/linkable_spec_resolver.py b/metricflow/model/semantics/linkable_spec_resolver.py index 85429eb0d5..0c56066a28 100644 --- a/metricflow/model/semantics/linkable_spec_resolver.py +++ b/metricflow/model/semantics/linkable_spec_resolver.py @@ -20,7 +20,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataset.dataset import DataSet -from metricflow.errors.errors import UnknownMetricLinkingError +from metricflow.errors.error_classes import UnknownMetricLinkingError from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.model.semantics.linkable_element import ( ElementPathKey, diff --git a/metricflow/model/semantics/metric_lookup.py b/metricflow/model/semantics/metric_lookup.py index 4cc14b176a..313f0052a7 100644 --- a/metricflow/model/semantics/metric_lookup.py +++ b/metricflow/model/semantics/metric_lookup.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.references import MeasureReference, MetricReference -from metricflow.errors.errors import DuplicateMetricError, MetricNotFoundError, NonExistentMeasureError +from metricflow.errors.error_classes import DuplicateMetricError, MetricNotFoundError, NonExistentMeasureError from metricflow.model.semantics.linkable_element import LinkableElementProperty from metricflow.model.semantics.linkable_element_set import LinkableElementSet from metricflow.model.semantics.linkable_spec_resolver import ( diff --git a/metricflow/model/semantics/semantic_model_lookup.py b/metricflow/model/semantics/semantic_model_lookup.py index 32fd9cddd9..9164bdbd68 100644 --- a/metricflow/model/semantics/semantic_model_lookup.py +++ b/metricflow/model/semantics/semantic_model_lookup.py @@ -21,7 +21,7 @@ from dbt_semantic_interfaces.type_enums import DimensionType, EntityType from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType -from metricflow.errors.errors import InvalidSemanticModelError +from metricflow.errors.error_classes import InvalidSemanticModelError from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.model.semantics.element_group import ElementGrouper from metricflow.model.spec_converters import MeasureConverter diff --git a/metricflow/specs/where_filter_dimension.py b/metricflow/specs/where_filter_dimension.py index 663c10f871..231c8c5c05 100644 --- a/metricflow/specs/where_filter_dimension.py +++ b/metricflow/specs/where_filter_dimension.py @@ -18,7 +18,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.errors.errors import InvalidQuerySyntax +from metricflow.errors.error_classes import InvalidQuerySyntax from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, diff --git a/metricflow/specs/where_filter_entity.py b/metricflow/specs/where_filter_entity.py index 507b4ef590..cbdde3d4a9 100644 --- a/metricflow/specs/where_filter_entity.py +++ b/metricflow/specs/where_filter_entity.py @@ -13,7 +13,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.errors.errors import InvalidQuerySyntax +from metricflow.errors.error_classes import InvalidQuerySyntax from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, diff --git a/metricflow/specs/where_filter_metric.py b/metricflow/specs/where_filter_metric.py index b1e9307ef0..d635a01587 100644 --- a/metricflow/specs/where_filter_metric.py +++ b/metricflow/specs/where_filter_metric.py @@ -10,7 +10,7 @@ from dbt_semantic_interfaces.references import EntityReference, LinkableElementReference, MetricReference from typing_extensions import override -from metricflow.errors.errors import InvalidQuerySyntax +from metricflow.errors.error_classes import InvalidQuerySyntax from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, diff --git a/metricflow/specs/where_filter_time_dimension.py b/metricflow/specs/where_filter_time_dimension.py index e08ab6ac5f..a97cf9a53c 100644 --- a/metricflow/specs/where_filter_time_dimension.py +++ b/metricflow/specs/where_filter_time_dimension.py @@ -15,7 +15,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.errors.errors import InvalidQuerySyntax +from metricflow.errors.error_classes import InvalidQuerySyntax from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, diff --git a/metricflow/sql/render/big_query.py b/metricflow/sql/render/big_query.py index 7b78bad9ed..0e4b68a739 100644 --- a/metricflow/sql/render/big_query.py +++ b/metricflow/sql/render/big_query.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.errors.errors import UnsupportedEngineFeatureError +from metricflow.errors.error_classes import UnsupportedEngineFeatureError from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/databricks.py b/metricflow/sql/render/databricks.py index 0a9d2de899..f45105beba 100644 --- a/metricflow/sql/render/databricks.py +++ b/metricflow/sql/render/databricks.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.errors.errors import UnsupportedEngineFeatureError +from metricflow.errors.error_classes import UnsupportedEngineFeatureError from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/postgres.py b/metricflow/sql/render/postgres.py index 9ffc08dbf1..c4fd31179a 100644 --- a/metricflow/sql/render/postgres.py +++ b/metricflow/sql/render/postgres.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.errors.errors import UnsupportedEngineFeatureError +from metricflow.errors.error_classes import UnsupportedEngineFeatureError from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/redshift.py b/metricflow/sql/render/redshift.py index 251227c209..76f82d0964 100644 --- a/metricflow/sql/render/redshift.py +++ b/metricflow/sql/render/redshift.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.errors.errors import UnsupportedEngineFeatureError +from metricflow.errors.error_classes import UnsupportedEngineFeatureError from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/snowflake.py b/metricflow/sql/render/snowflake.py index c6328feefe..84c01df237 100644 --- a/metricflow/sql/render/snowflake.py +++ b/metricflow/sql/render/snowflake.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.errors.errors import UnsupportedEngineFeatureError +from metricflow.errors.error_classes import UnsupportedEngineFeatureError from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index 1d319ea2e3..c107d37b9d 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -11,7 +11,7 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset import DataSet -from metricflow.errors.errors import UnableToSatisfyQueryError +from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.specs.column_assoc import ColumnAssociationResolver diff --git a/tests/specs/test_where_filter_entity.py b/tests/specs/test_where_filter_entity.py index 1e7606554c..92e1a519e5 100644 --- a/tests/specs/test_where_filter_entity.py +++ b/tests/specs/test_where_filter_entity.py @@ -2,7 +2,7 @@ import pytest -from metricflow.errors.errors import InvalidQuerySyntax +from metricflow.errors.error_classes import InvalidQuerySyntax from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.specs.rendered_spec_tracker import RenderedSpecTracker From c75352dfe28c3ea19bc5289c2729ac30b3722ac6 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 12:50:20 -0700 Subject: [PATCH 04/80] Rename dataset. --- metricflow/dataflow/builder/dataflow_plan_builder.py | 2 +- metricflow/dataflow/builder/node_evaluator.py | 2 +- metricflow/dataflow/builder/partitions.py | 2 +- metricflow/dataset/{dataset.py => dataset_classes.py} | 0 metricflow/dataset/sql_dataset.py | 2 +- metricflow/engine/metricflow_engine.py | 2 +- metricflow/model/data_warehouse_model_validator.py | 2 +- metricflow/model/semantics/linkable_spec_resolver.py | 2 +- metricflow/plan_conversion/dataflow_to_sql.py | 2 +- tests/dataflow/builder/test_dataflow_plan_builder.py | 2 +- tests/dataflow/builder/test_node_evaluator.py | 2 +- .../optimizer/source_scan/test_source_scan_optimizer.py | 2 +- tests/query_rendering/test_fill_nulls_with_rendering.py | 2 +- tests/query_rendering/test_granularity_date_part_rendering.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- tests/query_rendering/test_time_spine_join_rendering.py | 2 +- tests/time/metric_time_dimension.py | 2 +- 17 files changed, 16 insertions(+), 16 deletions(-) rename metricflow/dataset/{dataset.py => dataset_classes.py} (100%) diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index e14bd3b3d7..a2573cfd1e 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -53,7 +53,7 @@ from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.mf_logging.formatting import indent diff --git a/metricflow/dataflow/builder/node_evaluator.py b/metricflow/dataflow/builder/node_evaluator.py index 995d7fca29..0e6fc47ece 100644 --- a/metricflow/dataflow/builder/node_evaluator.py +++ b/metricflow/dataflow/builder/node_evaluator.py @@ -34,7 +34,7 @@ from metricflow.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.dataflow.nodes.join_to_base import JoinDescription, ValidityWindowJoinDescription from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.instances import InstanceSet from metricflow.mf_logging.pretty_print import mf_pformat diff --git a/metricflow/dataflow/builder/partitions.py b/metricflow/dataflow/builder/partitions.py index 00c7d0bd66..21ba7c87fb 100644 --- a/metricflow/dataflow/builder/partitions.py +++ b/metricflow/dataflow/builder/partitions.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from typing import List, Sequence, Tuple -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.specs.specs import ( DimensionSpec, diff --git a/metricflow/dataset/dataset.py b/metricflow/dataset/dataset_classes.py similarity index 100% rename from metricflow/dataset/dataset.py rename to metricflow/dataset/dataset_classes.py diff --git a/metricflow/dataset/sql_dataset.py b/metricflow/dataset/sql_dataset.py index c59b1c48f4..97730b534a 100644 --- a/metricflow/dataset/sql_dataset.py +++ b/metricflow/dataset/sql_dataset.py @@ -6,7 +6,7 @@ from typing_extensions import override from metricflow.assert_one_arg import assert_exactly_one_arg_set -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.instances import ( InstanceSet, ) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 4b513006ac..94937ef92f 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -22,7 +22,7 @@ SourceScanOptimizer, ) from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.engine.models import Dimension, Entity, Measure, Metric, SavedQuery from metricflow.engine.time_source import ServerTimeSource diff --git a/metricflow/model/data_warehouse_model_validator.py b/metricflow/model/data_warehouse_model_validator.py index e700eb8850..cbf5f70a4b 100644 --- a/metricflow/model/data_warehouse_model_validator.py +++ b/metricflow/model/data_warehouse_model_validator.py @@ -34,7 +34,7 @@ from metricflow.dataflow.dataflow_plan import BaseOutput from metricflow.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver diff --git a/metricflow/model/semantics/linkable_spec_resolver.py b/metricflow/model/semantics/linkable_spec_resolver.py index 0c56066a28..1556e1e8f9 100644 --- a/metricflow/model/semantics/linkable_spec_resolver.py +++ b/metricflow/model/semantics/linkable_spec_resolver.py @@ -19,7 +19,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.errors.error_classes import UnknownMetricLinkingError from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.model.semantics.linkable_element import ( diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index 05ff5212e4..3f52fadc09 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -39,7 +39,7 @@ from metricflow.dataflow.nodes.where_filter import WhereConstraintNode from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.instances import ( diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index c107d37b9d..1c544102d3 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -10,7 +10,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.query.query_parser import MetricFlowQueryParser diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index 0176780fe7..1a4521815a 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -15,7 +15,7 @@ from metricflow.dataflow.builder.partitions import PartitionTimeDimensionJoinDescription from metricflow.dataflow.builder.source_node import SourceNodeSet from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor diff --git a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index 622fc67eae..ab252be293 100644 --- a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -32,7 +32,7 @@ from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.specs.specs import ( diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index f4b4a97853..6249cd6999 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -13,7 +13,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests/query_rendering/test_granularity_date_part_rendering.py index 5aedeb9498..b20d72a988 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests/query_rendering/test_granularity_date_part_rendering.py @@ -12,7 +12,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.specs.specs import ( diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index a1360ff4ee..43fb3e81d1 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -17,7 +17,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests/query_rendering/test_time_spine_join_rendering.py index 8da48fcf82..56f60e57c7 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests/query_rendering/test_time_spine_join_rendering.py @@ -13,7 +13,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.specs.specs import ( diff --git a/tests/time/metric_time_dimension.py b/tests/time/metric_time_dimension.py index 737185e63b..ac7ea7d9be 100644 --- a/tests/time/metric_time_dimension.py +++ b/tests/time/metric_time_dimension.py @@ -2,7 +2,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataset.dataset import DataSet +from metricflow.dataset.dataset_classes import DataSet # Shortcuts for referring to the metric time dimension. MTD = DataSet.metric_time_dimension_name() From 678b993b6bebd01b98406d8c4377cdee0a33df02 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 12:50:56 -0700 Subject: [PATCH 05/80] Rename specs. --- metricflow/dataflow/builder/dataflow_plan_builder.py | 2 +- metricflow/dataflow/builder/measure_additiveness.py | 2 +- metricflow/dataflow/builder/node_evaluator.py | 2 +- metricflow/dataflow/builder/partitions.py | 2 +- metricflow/dataflow/nodes/aggregate_measures.py | 2 +- metricflow/dataflow/nodes/compute_metrics.py | 2 +- metricflow/dataflow/nodes/filter_elements.py | 2 +- metricflow/dataflow/nodes/join_conversion_events.py | 2 +- metricflow/dataflow/nodes/join_over_time.py | 2 +- metricflow/dataflow/nodes/join_to_base.py | 2 +- metricflow/dataflow/nodes/join_to_time_spine.py | 2 +- metricflow/dataflow/nodes/order_by_limit.py | 2 +- metricflow/dataflow/nodes/semi_additive_join.py | 2 +- metricflow/dataflow/nodes/where_filter.py | 2 +- .../dataflow/optimizer/source_scan/cm_branch_combiner.py | 2 +- .../optimizer/source_scan/matching_linkable_specs.py | 2 +- metricflow/dataset/convert_semantic_model.py | 2 +- metricflow/dataset/dataset_classes.py | 2 +- metricflow/dataset/sql_dataset.py | 2 +- metricflow/engine/metricflow_engine.py | 2 +- metricflow/engine/models.py | 2 +- metricflow/instances.py | 2 +- metricflow/model/data_warehouse_model_validator.py | 2 +- metricflow/model/semantics/linkable_element.py | 2 +- metricflow/model/semantics/linkable_element_set.py | 8 +++++++- metricflow/model/semantics/linkable_spec_resolver.py | 2 +- metricflow/model/semantics/metric_lookup.py | 2 +- metricflow/model/semantics/semantic_model_lookup.py | 2 +- metricflow/model/spec_converters.py | 2 +- metricflow/naming/dunder_scheme.py | 2 +- metricflow/naming/metric_scheme.py | 2 +- metricflow/naming/naming_scheme.py | 2 +- metricflow/naming/object_builder_scheme.py | 2 +- metricflow/naming/object_builder_str.py | 2 +- metricflow/plan_conversion/column_resolver.py | 2 +- metricflow/plan_conversion/dataflow_to_sql.py | 2 +- metricflow/plan_conversion/instance_converters.py | 2 +- metricflow/plan_conversion/node_processor.py | 2 +- metricflow/plan_conversion/spec_transforms.py | 2 +- .../candidate_push_down/group_by_item_candidate.py | 2 +- .../candidate_push_down/push_down_visitor.py | 2 +- .../filter_spec_resolution/filter_spec_lookup.py | 2 +- metricflow/query/group_by_item/group_by_item_resolver.py | 2 +- .../group_by_item_resolver/invalid_use_of_date_part.py | 2 +- metricflow/query/query_parser.py | 2 +- metricflow/query/query_resolution.py | 2 +- metricflow/query/query_resolver.py | 2 +- metricflow/query/suggestion_generator.py | 2 +- .../query/validation_rules/metric_time_requirements.py | 2 +- metricflow/specs/column_assoc.py | 2 +- metricflow/specs/dimension_spec_resolver.py | 2 +- metricflow/specs/patterns/base_time_grain.py | 2 +- metricflow/specs/patterns/entity_link_pattern.py | 2 +- metricflow/specs/patterns/match_list_pattern.py | 2 +- metricflow/specs/patterns/metric_pattern.py | 2 +- metricflow/specs/patterns/metric_time_pattern.py | 2 +- metricflow/specs/patterns/none_date_part.py | 2 +- metricflow/specs/patterns/spec_pattern.py | 2 +- metricflow/specs/patterns/typed_patterns.py | 2 +- metricflow/specs/rendered_spec_tracker.py | 2 +- metricflow/specs/{specs.py => spec_classes.py} | 0 metricflow/specs/spec_set_transforms.py | 2 +- metricflow/specs/where_filter_transform.py | 2 +- tests/dataflow/builder/test_cyclic_join.py | 2 +- tests/dataflow/builder/test_dataflow_plan_builder.py | 2 +- tests/dataflow/builder/test_measure_additiveness.py | 2 +- tests/dataflow/builder/test_node_data_set.py | 2 +- tests/dataflow/builder/test_node_evaluator.py | 2 +- .../optimizer/source_scan/test_cm_branch_combiner.py | 2 +- .../optimizer/source_scan/test_source_scan_optimizer.py | 2 +- tests/examples/test_node_sql.py | 2 +- tests/model/test_where_filter_spec.py | 2 +- tests/naming/conftest.py | 8 +++++++- tests/naming/test_dunder_naming_scheme.py | 2 +- tests/naming/test_metric_name_scheme.py | 2 +- tests/naming/test_object_builder_naming_scheme.py | 8 +++++++- .../dataflow_to_sql/test_conversion_metrics_to_sql.py | 2 +- .../dataflow_to_sql/test_distinct_values_to_sql.py | 2 +- .../dataflow_to_sql/test_metric_time_dimension_to_sql.py | 2 +- ...test_create_select_columns_with_measures_aggregated.py | 2 +- .../test_create_validity_window_join_description.py | 2 +- tests/plan_conversion/test_dataflow_to_execution.py | 2 +- tests/plan_conversion/test_dataflow_to_sql_plan.py | 2 +- .../query/group_by_item/test_available_group_by_items.py | 2 +- tests/query/test_query_parser.py | 2 +- tests/query_rendering/test_cumulative_metric_rendering.py | 2 +- tests/query_rendering/test_derived_metric_rendering.py | 2 +- tests/query_rendering/test_fill_nulls_with_rendering.py | 2 +- .../test_granularity_date_part_rendering.py | 2 +- tests/query_rendering/test_metric_time_without_metrics.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- tests/query_rendering/test_time_spine_join_rendering.py | 2 +- tests/snapshot_utils.py | 2 +- tests/specs/patterns/test_entity_link_pattern.py | 8 +++++++- tests/specs/patterns/test_typed_patterns.py | 8 +++++++- tests/specs/test_time_dimension_spec.py | 2 +- tests/table_snapshot/table_snapshots.py | 2 +- tests/test_specs.py | 2 +- 98 files changed, 127 insertions(+), 97 deletions(-) rename metricflow/specs/{specs.py => spec_classes.py} (100%) diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index a2573cfd1e..79d36cf843 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -64,7 +64,7 @@ from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( ConstantPropertySpec, CumulativeMeasureDescription, EntitySpec, diff --git a/metricflow/dataflow/builder/measure_additiveness.py b/metricflow/dataflow/builder/measure_additiveness.py index ad805870bf..1653a077fd 100644 --- a/metricflow/dataflow/builder/measure_additiveness.py +++ b/metricflow/dataflow/builder/measure_additiveness.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from typing import Dict, Optional, Sequence, Tuple -from metricflow.specs.specs import MeasureSpec, NonAdditiveDimensionSpec +from metricflow.specs.spec_classes import MeasureSpec, NonAdditiveDimensionSpec @dataclass(frozen=True) diff --git a/metricflow/dataflow/builder/node_evaluator.py b/metricflow/dataflow/builder/node_evaluator.py index 0e6fc47ece..c4009225e3 100644 --- a/metricflow/dataflow/builder/node_evaluator.py +++ b/metricflow/dataflow/builder/node_evaluator.py @@ -41,7 +41,7 @@ from metricflow.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription -from metricflow.specs.specs import InstanceSpecSet, LinkableInstanceSpec, LinkableSpecSet, LinklessEntitySpec +from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinkableSpecSet, LinklessEntitySpec from metricflow.sql.sql_plan import SqlJoinType logger = logging.getLogger(__name__) diff --git a/metricflow/dataflow/builder/partitions.py b/metricflow/dataflow/builder/partitions.py index 21ba7c87fb..09a0081353 100644 --- a/metricflow/dataflow/builder/partitions.py +++ b/metricflow/dataflow/builder/partitions.py @@ -6,7 +6,7 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, InstanceSpecSet, PartitionSpecSet, diff --git a/metricflow/dataflow/nodes/aggregate_measures.py b/metricflow/dataflow/nodes/aggregate_measures.py index cacaa13800..31eca1a4f0 100644 --- a/metricflow/dataflow/nodes/aggregate_measures.py +++ b/metricflow/dataflow/nodes/aggregate_measures.py @@ -5,7 +5,7 @@ from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.specs.specs import MetricInputMeasureSpec +from metricflow.specs.spec_classes import MetricInputMeasureSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/compute_metrics.py b/metricflow/dataflow/nodes/compute_metrics.py index ab36ad9e1c..b83178f464 100644 --- a/metricflow/dataflow/nodes/compute_metrics.py +++ b/metricflow/dataflow/nodes/compute_metrics.py @@ -10,7 +10,7 @@ DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.specs.specs import MetricSpec +from metricflow.specs.spec_classes import MetricSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/filter_elements.py b/metricflow/dataflow/nodes/filter_elements.py index aff60197c0..9bdfb60054 100644 --- a/metricflow/dataflow/nodes/filter_elements.py +++ b/metricflow/dataflow/nodes/filter_elements.py @@ -6,7 +6,7 @@ from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.specs.specs import InstanceSpecSet +from metricflow.specs.spec_classes import InstanceSpecSet from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_conversion_events.py b/metricflow/dataflow/nodes/join_conversion_events.py index 825005dbc8..69b3ec5f5b 100644 --- a/metricflow/dataflow/nodes/join_conversion_events.py +++ b/metricflow/dataflow/nodes/join_conversion_events.py @@ -7,7 +7,7 @@ from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.specs.specs import ConstantPropertySpec, EntitySpec, InstanceSpec, MeasureSpec, TimeDimensionSpec +from metricflow.specs.spec_classes import ConstantPropertySpec, EntitySpec, InstanceSpec, MeasureSpec, TimeDimensionSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_over_time.py b/metricflow/dataflow/nodes/join_over_time.py index 7e6736a7ec..57d9d8bcd6 100644 --- a/metricflow/dataflow/nodes/join_over_time.py +++ b/metricflow/dataflow/nodes/join_over_time.py @@ -9,7 +9,7 @@ from metricflow.dag.mf_dag import DisplayedProperty, NodeId from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.filters.time_constraint import TimeRangeConstraint -from metricflow.specs.specs import TimeDimensionSpec +from metricflow.specs.spec_classes import TimeDimensionSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_to_base.py b/metricflow/dataflow/nodes/join_to_base.py index 751159dcc0..7803f26ef7 100644 --- a/metricflow/dataflow/nodes/join_to_base.py +++ b/metricflow/dataflow/nodes/join_to_base.py @@ -10,7 +10,7 @@ PartitionTimeDimensionJoinDescription, ) from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.specs.specs import LinklessEntitySpec, TimeDimensionSpec +from metricflow.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec from metricflow.sql.sql_plan import SqlJoinType from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_to_time_spine.py b/metricflow/dataflow/nodes/join_to_time_spine.py index 0ec4daec3f..2b194c4d9d 100644 --- a/metricflow/dataflow/nodes/join_to_time_spine.py +++ b/metricflow/dataflow/nodes/join_to_time_spine.py @@ -10,7 +10,7 @@ from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.filters.time_constraint import TimeRangeConstraint -from metricflow.specs.specs import TimeDimensionSpec +from metricflow.specs.spec_classes import TimeDimensionSpec from metricflow.sql.sql_plan import SqlJoinType from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/order_by_limit.py b/metricflow/dataflow/nodes/order_by_limit.py index 8e838a773f..46a46129b8 100644 --- a/metricflow/dataflow/nodes/order_by_limit.py +++ b/metricflow/dataflow/nodes/order_by_limit.py @@ -10,7 +10,7 @@ DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.specs.specs import OrderBySpec +from metricflow.specs.spec_classes import OrderBySpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/semi_additive_join.py b/metricflow/dataflow/nodes/semi_additive_join.py index 5e4822d951..c934a2dcee 100644 --- a/metricflow/dataflow/nodes/semi_additive_join.py +++ b/metricflow/dataflow/nodes/semi_additive_join.py @@ -7,7 +7,7 @@ from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.specs.specs import LinklessEntitySpec, TimeDimensionSpec +from metricflow.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/where_filter.py b/metricflow/dataflow/nodes/where_filter.py index 679f3ec6b3..7d88599d69 100644 --- a/metricflow/dataflow/nodes/where_filter.py +++ b/metricflow/dataflow/nodes/where_filter.py @@ -6,7 +6,7 @@ from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput -from metricflow.specs.specs import WhereFilterSpec +from metricflow.specs.spec_classes import WhereFilterSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py b/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py index d7a9b89a82..4069cb3c37 100644 --- a/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py +++ b/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py @@ -28,7 +28,7 @@ from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.dataflow.optimizer.source_scan.matching_linkable_specs import MatchingLinkableSpecsTransform -from metricflow.specs.specs import MetricSpec +from metricflow.specs.spec_classes import MetricSpec logger = logging.getLogger(__name__) diff --git a/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py b/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py index f3292eaeab..da85b8dce2 100644 --- a/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py +++ b/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py @@ -1,6 +1,6 @@ from __future__ import annotations -from metricflow.specs.specs import InstanceSpecSet, InstanceSpecSetTransform +from metricflow.specs.spec_classes import InstanceSpecSet, InstanceSpecSetTransform class MatchingLinkableSpecsTransform(InstanceSpecSetTransform[bool]): diff --git a/metricflow/dataset/convert_semantic_model.py b/metricflow/dataset/convert_semantic_model.py index d384c79636..e0e9e79b8e 100644 --- a/metricflow/dataset/convert_semantic_model.py +++ b/metricflow/dataset/convert_semantic_model.py @@ -32,7 +32,7 @@ from metricflow.model.spec_converters import MeasureConverter from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DEFAULT_TIME_GRANULARITY, DimensionSpec, EntityReference, diff --git a/metricflow/dataset/dataset_classes.py b/metricflow/dataset/dataset_classes.py index 2d7b2fd86e..6eecd5271f 100644 --- a/metricflow/dataset/dataset_classes.py +++ b/metricflow/dataset/dataset_classes.py @@ -10,7 +10,7 @@ from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords from metricflow.instances import InstanceSet, TimeDimensionInstance -from metricflow.specs.specs import TimeDimensionSpec +from metricflow.specs.spec_classes import TimeDimensionSpec logger = logging.getLogger(__name__) diff --git a/metricflow/dataset/sql_dataset.py b/metricflow/dataset/sql_dataset.py index 97730b534a..dd3dd489a3 100644 --- a/metricflow/dataset/sql_dataset.py +++ b/metricflow/dataset/sql_dataset.py @@ -11,7 +11,7 @@ InstanceSet, ) from metricflow.specs.column_assoc import ColumnAssociation -from metricflow.specs.specs import DimensionSpec, EntitySpec, TimeDimensionSpec +from metricflow.specs.spec_classes import DimensionSpec, EntitySpec, TimeDimensionSpec from metricflow.sql.sql_plan import ( SqlQueryPlanNode, SqlSelectStatementNode, diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 94937ef92f..710a4a5f64 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -52,7 +52,7 @@ from metricflow.random_id import random_id from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.specs.query_param_implementations import SavedQueryParameter -from metricflow.specs.specs import InstanceSpecSet, MetricFlowQuerySpec +from metricflow.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.sql_table import SqlTable from metricflow.telemetry.models import TelemetryLevel diff --git a/metricflow/engine/models.py b/metricflow/engine/models.py index 6586d508d2..bbed186bed 100644 --- a/metricflow/engine/models.py +++ b/metricflow/engine/models.py @@ -29,7 +29,7 @@ from dbt_semantic_interfaces.type_enums.entity_type import EntityType from metricflow.naming.linkable_spec_name import StructuredLinkableSpecName -from metricflow.specs.specs import DimensionSpec, EntityReference +from metricflow.specs.spec_classes import DimensionSpec, EntityReference @dataclass(frozen=True) diff --git a/metricflow/instances.py b/metricflow/instances.py index f1e8164f8c..942b42bbc4 100644 --- a/metricflow/instances.py +++ b/metricflow/instances.py @@ -11,7 +11,7 @@ from metricflow.aggregation_properties import AggregationState from metricflow.specs.column_assoc import ColumnAssociation -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, diff --git a/metricflow/model/data_warehouse_model_validator.py b/metricflow/model/data_warehouse_model_validator.py index cbf5f70a4b..1e6eb6cbe4 100644 --- a/metricflow/model/data_warehouse_model_validator.py +++ b/metricflow/model/data_warehouse_model_validator.py @@ -41,7 +41,7 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.specs import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec +from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec from metricflow.sql.sql_bind_parameters import SqlBindParameters diff --git a/metricflow/model/semantics/linkable_element.py b/metricflow/model/semantics/linkable_element.py index 9f95b0cdd9..c469f22da6 100644 --- a/metricflow/model/semantics/linkable_element.py +++ b/metricflow/model/semantics/linkable_element.py @@ -10,7 +10,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.specs.specs import EntityReference +from metricflow.specs.spec_classes import EntityReference class LinkableElementType(Enum): diff --git a/metricflow/model/semantics/linkable_element_set.py b/metricflow/model/semantics/linkable_element_set.py index 7ef277b61f..cf8de27a03 100644 --- a/metricflow/model/semantics/linkable_element_set.py +++ b/metricflow/model/semantics/linkable_element_set.py @@ -12,7 +12,13 @@ LinkableEntity, LinkableMetric, ) -from metricflow.specs.specs import DimensionSpec, EntitySpec, GroupByMetricSpec, LinkableSpecSet, TimeDimensionSpec +from metricflow.specs.spec_classes import ( + DimensionSpec, + EntitySpec, + GroupByMetricSpec, + LinkableSpecSet, + TimeDimensionSpec, +) @dataclass(frozen=True) diff --git a/metricflow/model/semantics/linkable_spec_resolver.py b/metricflow/model/semantics/linkable_spec_resolver.py index 1556e1e8f9..bbecb8945b 100644 --- a/metricflow/model/semantics/linkable_spec_resolver.py +++ b/metricflow/model/semantics/linkable_spec_resolver.py @@ -34,7 +34,7 @@ ) from metricflow.model.semantics.linkable_element_set import LinkableElementSet from metricflow.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DEFAULT_TIME_GRANULARITY, EntityReference, ) diff --git a/metricflow/model/semantics/metric_lookup.py b/metricflow/model/semantics/metric_lookup.py index 313f0052a7..c1791e2e69 100644 --- a/metricflow/model/semantics/metric_lookup.py +++ b/metricflow/model/semantics/metric_lookup.py @@ -16,7 +16,7 @@ ) from metricflow.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.specs.specs import TimeDimensionSpec +from metricflow.specs.spec_classes import TimeDimensionSpec logger = logging.getLogger(__name__) diff --git a/metricflow/model/semantics/semantic_model_lookup.py b/metricflow/model/semantics/semantic_model_lookup.py index 9164bdbd68..0b9a35d3f0 100644 --- a/metricflow/model/semantics/semantic_model_lookup.py +++ b/metricflow/model/semantics/semantic_model_lookup.py @@ -25,7 +25,7 @@ from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.model.semantics.element_group import ElementGrouper from metricflow.model.spec_converters import MeasureConverter -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, EntitySpec, LinkableInstanceSpec, diff --git a/metricflow/model/spec_converters.py b/metricflow/model/spec_converters.py index 7e4e5e7f45..f53c12cd9b 100644 --- a/metricflow/model/spec_converters.py +++ b/metricflow/model/spec_converters.py @@ -12,7 +12,7 @@ from dbt_semantic_interfaces.protocols.measure import Measure -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( MeasureSpec, NonAdditiveDimensionSpec, ) diff --git a/metricflow/naming/dunder_scheme.py b/metricflow/naming/dunder_scheme.py index 35eb1f12e9..025451e776 100644 --- a/metricflow/naming/dunder_scheme.py +++ b/metricflow/naming/dunder_scheme.py @@ -15,7 +15,7 @@ EntityLinkPatternParameterSet, ParameterSetField, ) -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, InstanceSpecSetTransform, diff --git a/metricflow/naming/metric_scheme.py b/metricflow/naming/metric_scheme.py index fdc0244df4..636ffdd4ec 100644 --- a/metricflow/naming/metric_scheme.py +++ b/metricflow/naming/metric_scheme.py @@ -7,7 +7,7 @@ from metricflow.naming.naming_scheme import QueryItemNamingScheme from metricflow.specs.patterns.metric_pattern import MetricSpecPattern -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, ) diff --git a/metricflow/naming/naming_scheme.py b/metricflow/naming/naming_scheme.py index 0d9ef861f9..31de939a9d 100644 --- a/metricflow/naming/naming_scheme.py +++ b/metricflow/naming/naming_scheme.py @@ -6,7 +6,7 @@ from metricflow.specs.patterns.spec_pattern import SpecPattern if TYPE_CHECKING: - from metricflow.specs.specs import InstanceSpec + from metricflow.specs.spec_classes import InstanceSpec class QueryItemNamingScheme(ABC): diff --git a/metricflow/naming/object_builder_scheme.py b/metricflow/naming/object_builder_scheme.py index eebcb7fc0a..58b98f13e5 100644 --- a/metricflow/naming/object_builder_scheme.py +++ b/metricflow/naming/object_builder_scheme.py @@ -21,7 +21,7 @@ ) from metricflow.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.patterns.typed_patterns import DimensionPattern, TimeDimensionPattern -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( InstanceSpec, ) diff --git a/metricflow/naming/object_builder_str.py b/metricflow/naming/object_builder_str.py index ffbfcc84cd..770963412c 100644 --- a/metricflow/naming/object_builder_str.py +++ b/metricflow/naming/object_builder_str.py @@ -14,7 +14,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.specs.specs import InstanceSpec, InstanceSpecSet, InstanceSpecSetTransform +from metricflow.specs.spec_classes import InstanceSpec, InstanceSpecSet, InstanceSpecSetTransform class ObjectBuilderNameConverter: diff --git a/metricflow/plan_conversion/column_resolver.py b/metricflow/plan_conversion/column_resolver.py index 323bbf2c83..8b319cf024 100644 --- a/metricflow/plan_conversion/column_resolver.py +++ b/metricflow/plan_conversion/column_resolver.py @@ -9,7 +9,7 @@ ColumnAssociationResolver, SingleColumnCorrelationKey, ) -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index 3f52fadc09..115c7fba84 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -88,7 +88,7 @@ from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.protocols.sql_client import SqlEngine from metricflow.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver, SingleColumnCorrelationKey -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( GroupByMetricSpec, InstanceSpecSet, MeasureSpec, diff --git a/metricflow/plan_conversion/instance_converters.py b/metricflow/plan_conversion/instance_converters.py index c60fba87be..89f1282ca5 100644 --- a/metricflow/plan_conversion/instance_converters.py +++ b/metricflow/plan_conversion/instance_converters.py @@ -33,7 +33,7 @@ from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.plan_conversion.select_column_gen import SelectColumnSet from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, EntityReference, EntitySpec, diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index d3bdcd5afe..22a5978832 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -19,8 +19,8 @@ from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS, SemanticModelJoinEvaluator from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec from metricflow.specs.spec_set_transforms import ToElementNameSet -from metricflow.specs.specs import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec from metricflow.sql.sql_plan import SqlJoinType logger = logging.getLogger(__name__) diff --git a/metricflow/plan_conversion/spec_transforms.py b/metricflow/plan_conversion/spec_transforms.py index ec562ec7c5..c9092ae94a 100644 --- a/metricflow/plan_conversion/spec_transforms.py +++ b/metricflow/plan_conversion/spec_transforms.py @@ -5,7 +5,7 @@ from metricflow.plan_conversion.select_column_gen import SelectColumnSet from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr from metricflow.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( InstanceSpecSet, InstanceSpecSetTransform, ) diff --git a/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py b/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py index 767df7f499..0f71f0c899 100644 --- a/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py +++ b/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py @@ -9,7 +9,7 @@ from metricflow.query.group_by_item.path_prefixable import PathPrefixable from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.specs import InstanceSpecSet, LinkableInstanceSpec, LinkableSpecSet +from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinkableSpecSet @dataclass(frozen=True) diff --git a/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py b/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py index 7879e80514..f4964c9c57 100644 --- a/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py +++ b/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py @@ -45,7 +45,7 @@ from metricflow.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.specs.patterns.none_date_part import NoneDatePartPattern from metricflow.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.specs import InstanceSpecSet, LinkableInstanceSpec +from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py b/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py index 53badfc7c4..2ea8fea709 100644 --- a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py +++ b/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py @@ -24,7 +24,7 @@ from metricflow.specs.patterns.spec_pattern import SpecPattern if TYPE_CHECKING: - from metricflow.specs.specs import LinkableInstanceSpec + from metricflow.specs.spec_classes import LinkableInstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/query/group_by_item/group_by_item_resolver.py b/metricflow/query/group_by_item/group_by_item_resolver.py index 7d05dbe619..9c5dde88bb 100644 --- a/metricflow/query/group_by_item/group_by_item_resolver.py +++ b/metricflow/query/group_by_item/group_by_item_resolver.py @@ -27,7 +27,7 @@ from metricflow.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.patterns.typed_patterns import TimeDimensionPattern -from metricflow.specs.specs import LinkableInstanceSpec, LinkableSpecSet +from metricflow.specs.spec_classes import LinkableInstanceSpec, LinkableSpecSet logger = logging.getLogger(__name__) diff --git a/metricflow/query/issues/group_by_item_resolver/invalid_use_of_date_part.py b/metricflow/query/issues/group_by_item_resolver/invalid_use_of_date_part.py index 5826dd13f4..df06c82667 100644 --- a/metricflow/query/issues/group_by_item_resolver/invalid_use_of_date_part.py +++ b/metricflow/query/issues/group_by_item_resolver/invalid_use_of_date_part.py @@ -12,7 +12,7 @@ MetricFlowQueryResolutionIssue, ) from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.specs.specs import LinkableInstanceSpec +from metricflow.specs.spec_classes import LinkableInstanceSpec @dataclass(frozen=True) diff --git a/metricflow/query/query_parser.py b/metricflow/query/query_parser.py index 75dcd34ee2..46382cb674 100644 --- a/metricflow/query/query_parser.py +++ b/metricflow/query/query_parser.py @@ -54,7 +54,7 @@ from metricflow.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.specs.patterns.metric_time_pattern import MetricTimePattern from metricflow.specs.patterns.none_date_part import NoneDatePartPattern -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, MetricFlowQuerySpec, diff --git a/metricflow/query/query_resolution.py b/metricflow/query/query_resolution.py index c15e3ef839..8ea8e036d0 100644 --- a/metricflow/query/query_resolution.py +++ b/metricflow/query/query_resolution.py @@ -11,7 +11,7 @@ from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.specs.specs import MetricFlowQuerySpec +from metricflow.specs.spec_classes import MetricFlowQuerySpec @dataclass(frozen=True) diff --git a/metricflow/query/query_resolver.py b/metricflow/query/query_resolver.py index 15ea3fb34c..44e176eae2 100644 --- a/metricflow/query/query_resolver.py +++ b/metricflow/query/query_resolver.py @@ -48,7 +48,7 @@ from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator from metricflow.query.validation_rules.query_validator import PostResolutionQueryValidator from metricflow.specs.patterns.match_list_pattern import MatchListSpecPattern -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( InstanceSpec, LinkableInstanceSpec, LinkableSpecSet, diff --git a/metricflow/query/suggestion_generator.py b/metricflow/query/suggestion_generator.py index ed1d06918c..8def6b63c0 100644 --- a/metricflow/query/suggestion_generator.py +++ b/metricflow/query/suggestion_generator.py @@ -8,7 +8,7 @@ from metricflow.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.specs.patterns.none_date_part import NoneDatePartPattern from metricflow.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.specs import InstanceSpec +from metricflow.specs.spec_classes import InstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/query/validation_rules/metric_time_requirements.py b/metricflow/query/validation_rules/metric_time_requirements.py index ab8394a6a0..3a076e8b8e 100644 --- a/metricflow/query/validation_rules/metric_time_requirements.py +++ b/metricflow/query/validation_rules/metric_time_requirements.py @@ -18,7 +18,7 @@ from metricflow.query.issues.parsing.offset_metric_requires_metric_time import OffsetMetricRequiresMetricTimeIssue from metricflow.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery from metricflow.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule -from metricflow.specs.specs import TimeDimensionSpec +from metricflow.specs.spec_classes import TimeDimensionSpec class MetricTimeQueryValidationRule(PostResolutionQueryValidationRule): diff --git a/metricflow/specs/column_assoc.py b/metricflow/specs/column_assoc.py index 6231da5849..ed10c1fc85 100644 --- a/metricflow/specs/column_assoc.py +++ b/metricflow/specs/column_assoc.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass -from metricflow.specs.specs import InstanceSpec +from metricflow.specs.spec_classes import InstanceSpec class ColumnCorrelationKey(ABC): diff --git a/metricflow/specs/dimension_spec_resolver.py b/metricflow/specs/dimension_spec_resolver.py index 25caa0ac6c..25be42f56a 100644 --- a/metricflow/specs/dimension_spec_resolver.py +++ b/metricflow/specs/dimension_spec_resolver.py @@ -12,7 +12,7 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart -from metricflow.specs.specs import DEFAULT_TIME_GRANULARITY, DimensionSpec, TimeDimensionSpec +from metricflow.specs.spec_classes import DEFAULT_TIME_GRANULARITY, DimensionSpec, TimeDimensionSpec class DimensionSpecResolver: diff --git a/metricflow/specs/patterns/base_time_grain.py b/metricflow/specs/patterns/base_time_grain.py index 26a45a33b1..73ddaed6c2 100644 --- a/metricflow/specs/patterns/base_time_grain.py +++ b/metricflow/specs/patterns/base_time_grain.py @@ -8,7 +8,7 @@ from metricflow.specs.patterns.metric_time_pattern import MetricTimePattern from metricflow.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, LinkableInstanceSpec, diff --git a/metricflow/specs/patterns/entity_link_pattern.py b/metricflow/specs/patterns/entity_link_pattern.py index 28d8adcdd3..1d074a8324 100644 --- a/metricflow/specs/patterns/entity_link_pattern.py +++ b/metricflow/specs/patterns/entity_link_pattern.py @@ -12,7 +12,7 @@ from typing_extensions import override from metricflow.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.specs import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec +from metricflow.specs.spec_classes import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/specs/patterns/match_list_pattern.py b/metricflow/specs/patterns/match_list_pattern.py index 7ac8d5824e..86f209919d 100644 --- a/metricflow/specs/patterns/match_list_pattern.py +++ b/metricflow/specs/patterns/match_list_pattern.py @@ -5,7 +5,7 @@ from typing_extensions import override from metricflow.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.specs import InstanceSpec +from metricflow.specs.spec_classes import InstanceSpec class MatchListSpecPattern(SpecPattern): diff --git a/metricflow/specs/patterns/metric_pattern.py b/metricflow/specs/patterns/metric_pattern.py index b08d73e5d7..3550a5a5b2 100644 --- a/metricflow/specs/patterns/metric_pattern.py +++ b/metricflow/specs/patterns/metric_pattern.py @@ -7,7 +7,7 @@ from typing_extensions import override from metricflow.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, MetricSpec, diff --git a/metricflow/specs/patterns/metric_time_pattern.py b/metricflow/specs/patterns/metric_time_pattern.py index 85f7dca0fc..e810cc19e9 100644 --- a/metricflow/specs/patterns/metric_time_pattern.py +++ b/metricflow/specs/patterns/metric_time_pattern.py @@ -6,7 +6,7 @@ from typing_extensions import override from metricflow.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, LinkableSpecSet, diff --git a/metricflow/specs/patterns/none_date_part.py b/metricflow/specs/patterns/none_date_part.py index 539f57de84..b7ecf4eb99 100644 --- a/metricflow/specs/patterns/none_date_part.py +++ b/metricflow/specs/patterns/none_date_part.py @@ -5,7 +5,7 @@ from typing_extensions import override from metricflow.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, LinkableInstanceSpec, diff --git a/metricflow/specs/patterns/spec_pattern.py b/metricflow/specs/patterns/spec_pattern.py index 3315b81251..7bf1347b19 100644 --- a/metricflow/specs/patterns/spec_pattern.py +++ b/metricflow/specs/patterns/spec_pattern.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, Sequence if TYPE_CHECKING: - from metricflow.specs.specs import InstanceSpec + from metricflow.specs.spec_classes import InstanceSpec class SpecPattern(ABC): diff --git a/metricflow/specs/patterns/typed_patterns.py b/metricflow/specs/patterns/typed_patterns.py index e59dd1d6f6..7fd3577335 100644 --- a/metricflow/specs/patterns/typed_patterns.py +++ b/metricflow/specs/patterns/typed_patterns.py @@ -17,7 +17,7 @@ EntityLinkPatternParameterSet, ParameterSetField, ) -from metricflow.specs.specs import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec +from metricflow.specs.spec_classes import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec @dataclass(frozen=True) diff --git a/metricflow/specs/rendered_spec_tracker.py b/metricflow/specs/rendered_spec_tracker.py index 8582394149..626bad7e4f 100644 --- a/metricflow/specs/rendered_spec_tracker.py +++ b/metricflow/specs/rendered_spec_tracker.py @@ -2,7 +2,7 @@ from typing import List, Sequence -from metricflow.specs.specs import LinkableInstanceSpec +from metricflow.specs.spec_classes import LinkableInstanceSpec class RenderedSpecTracker: diff --git a/metricflow/specs/specs.py b/metricflow/specs/spec_classes.py similarity index 100% rename from metricflow/specs/specs.py rename to metricflow/specs/spec_classes.py diff --git a/metricflow/specs/spec_set_transforms.py b/metricflow/specs/spec_set_transforms.py index fffebd0a45..20da278101 100644 --- a/metricflow/specs/spec_set_transforms.py +++ b/metricflow/specs/spec_set_transforms.py @@ -2,7 +2,7 @@ from typing import Set -from metricflow.specs.specs import InstanceSpecSet, InstanceSpecSetTransform +from metricflow.specs.spec_classes import InstanceSpecSet, InstanceSpecSetTransform class ToElementNameSet(InstanceSpecSetTransform[Set[str]]): diff --git a/metricflow/specs/where_filter_transform.py b/metricflow/specs/where_filter_transform.py index 0ecb5bd6a9..a95c6993ab 100644 --- a/metricflow/specs/where_filter_transform.py +++ b/metricflow/specs/where_filter_transform.py @@ -11,7 +11,7 @@ from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.specs.rendered_spec_tracker import RenderedSpecTracker -from metricflow.specs.specs import LinkableSpecSet, WhereFilterSpec +from metricflow.specs.spec_classes import LinkableSpecSet, WhereFilterSpec from metricflow.specs.where_filter_dimension import WhereFilterDimensionFactory from metricflow.specs.where_filter_entity import WhereFilterEntityFactory from metricflow.specs.where_filter_metric import WhereFilterMetricFactory diff --git a/tests/dataflow/builder/test_cyclic_join.py b/tests/dataflow/builder/test_cyclic_join.py index ea61641051..732813c6f8 100644 --- a/tests/dataflow/builder/test_cyclic_join.py +++ b/tests/dataflow/builder/test_cyclic_join.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.references import EntityReference from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index 1c544102d3..a8aa0e400a 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -15,7 +15,7 @@ from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, EntityReference, MetricFlowQuerySpec, diff --git a/tests/dataflow/builder/test_measure_additiveness.py b/tests/dataflow/builder/test_measure_additiveness.py index 6b049e71c2..571b3ba33d 100644 --- a/tests/dataflow/builder/test_measure_additiveness.py +++ b/tests/dataflow/builder/test_measure_additiveness.py @@ -3,7 +3,7 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from metricflow.dataflow.builder.measure_additiveness import group_measure_specs_by_additiveness -from metricflow.specs.specs import MeasureSpec, NonAdditiveDimensionSpec +from metricflow.specs.spec_classes import MeasureSpec, NonAdditiveDimensionSpec def test_bucket_measure_specs_by_additiveness() -> None: # noqa: D103 diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index b786e6e4dc..802ff9ca9c 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -19,7 +19,7 @@ from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( LinklessEntitySpec, MeasureSpec, ) diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index 1a4521815a..12efa6cc66 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -19,7 +19,7 @@ from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, EntityReference, EntitySpec, diff --git a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py index 220c377c8b..43453e054f 100644 --- a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py +++ b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py @@ -17,7 +17,7 @@ ComputeMetricsBranchCombiner, ComputeMetricsBranchCombinerResult, ) -from metricflow.specs.specs import InstanceSpecSet, MeasureSpec +from metricflow.specs.spec_classes import InstanceSpecSet, MeasureSpec from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index ab252be293..48645aa175 100644 --- a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -35,7 +35,7 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, EntityReference, MetricFlowQuerySpec, diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index c0d3b0382b..af68ea1936 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -16,7 +16,7 @@ from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.specs import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec +from metricflow.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer diff --git a/tests/model/test_where_filter_spec.py b/tests/model/test_where_filter_spec.py index a4df031e72..c1d2d29baa 100644 --- a/tests/model/test_where_filter_spec.py +++ b/tests/model/test_where_filter_spec.py @@ -35,7 +35,7 @@ from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, diff --git a/tests/naming/conftest.py b/tests/naming/conftest.py index 5bd2701b22..d900759ee2 100644 --- a/tests/naming/conftest.py +++ b/tests/naming/conftest.py @@ -7,7 +7,13 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart -from metricflow.specs.specs import DimensionSpec, EntitySpec, GroupByMetricSpec, LinkableInstanceSpec, TimeDimensionSpec +from metricflow.specs.spec_classes import ( + DimensionSpec, + EntitySpec, + GroupByMetricSpec, + LinkableInstanceSpec, + TimeDimensionSpec, +) from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR diff --git a/tests/naming/test_dunder_naming_scheme.py b/tests/naming/test_dunder_naming_scheme.py index b3c206fa26..bc57f4f56e 100644 --- a/tests/naming/test_dunder_naming_scheme.py +++ b/tests/naming/test_dunder_naming_scheme.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from metricflow.naming.dunder_scheme import DunderNamingScheme -from metricflow.specs.specs import DimensionSpec, EntitySpec, LinkableInstanceSpec, TimeDimensionSpec +from metricflow.specs.spec_classes import DimensionSpec, EntitySpec, LinkableInstanceSpec, TimeDimensionSpec from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR diff --git a/tests/naming/test_metric_name_scheme.py b/tests/naming/test_metric_name_scheme.py index 03ac5086d0..9ddf44daf5 100644 --- a/tests/naming/test_metric_name_scheme.py +++ b/tests/naming/test_metric_name_scheme.py @@ -5,7 +5,7 @@ import pytest from metricflow.naming.metric_scheme import MetricNamingScheme -from metricflow.specs.specs import DimensionSpec, InstanceSpec, MetricSpec +from metricflow.specs.spec_classes import DimensionSpec, InstanceSpec, MetricSpec @pytest.fixture(scope="session") diff --git a/tests/naming/test_object_builder_naming_scheme.py b/tests/naming/test_object_builder_naming_scheme.py index 2bebc6c5b5..cd2e6b7f4b 100644 --- a/tests/naming/test_object_builder_naming_scheme.py +++ b/tests/naming/test_object_builder_naming_scheme.py @@ -8,7 +8,13 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.specs.specs import DimensionSpec, EntitySpec, GroupByMetricSpec, LinkableInstanceSpec, TimeDimensionSpec +from metricflow.specs.spec_classes import ( + DimensionSpec, + EntitySpec, + GroupByMetricSpec, + LinkableInstanceSpec, + TimeDimensionSpec, +) from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR diff --git a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py index c7f71fd906..e57d502cb8 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py @@ -8,7 +8,7 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, diff --git a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index 10824a4255..6fc357f2ef 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -10,7 +10,7 @@ from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.specs import DimensionSpec, MetricFlowQuerySpec +from metricflow.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index 3b9abcb090..71581307bf 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -10,7 +10,7 @@ from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.specs import MetricFlowQuerySpec, MetricSpec +from metricflow.specs.spec_classes import MetricFlowQuerySpec, MetricSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py index 5bcc426c10..a425921c87 100644 --- a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py +++ b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py @@ -10,7 +10,7 @@ FilterElements, ) from metricflow.plan_conversion.select_column_gen import SelectColumnSet -from metricflow.specs.specs import InstanceSpecSet, MeasureSpec, MetricInputMeasureSpec +from metricflow.specs.spec_classes import InstanceSpecSet, MeasureSpec, MetricInputMeasureSpec from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlFunction, diff --git a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py index 7aa9fe0c48..5bea25684c 100644 --- a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py +++ b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py @@ -9,7 +9,7 @@ from metricflow.instances import InstanceSet from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription -from metricflow.specs.specs import TimeDimensionSpec +from metricflow.specs.spec_classes import TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index c2ed0d9fed..cb8ca6f699 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -9,7 +9,7 @@ from metricflow.plan_conversion.dataflow_to_execution import DataflowToExecutionPlanConverter from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, EntityReference, MetricFlowQuerySpec, diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index 7cfe2223dd..de3a125a7f 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -33,7 +33,7 @@ from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, InstanceSpecSet, LinkableSpecSet, diff --git a/tests/query/group_by_item/test_available_group_by_items.py b/tests/query/group_by_item/test_available_group_by_items.py index 711ffc1c50..c3a6b3a631 100644 --- a/tests/query/group_by_item/test_available_group_by_items.py +++ b/tests/query/group_by_item/test_available_group_by_items.py @@ -9,7 +9,7 @@ from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.specs.specs import LinkableSpecSet +from metricflow.specs.spec_classes import LinkableSpecSet from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_linkable_spec_set_snapshot_equal diff --git a/tests/query/test_query_parser.py b/tests/query/test_query_parser.py index 0fc888e68f..d3e7a77287 100644 --- a/tests/query/test_query_parser.py +++ b/tests/query/test_query_parser.py @@ -24,7 +24,7 @@ OrderByParameter, TimeDimensionParameter, ) -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, EntitySpec, MetricSpec, diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests/query_rendering/test_cumulative_metric_rendering.py index 0872c312cc..aa6080d999 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests/query_rendering/test_cumulative_metric_rendering.py @@ -17,7 +17,7 @@ from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.specs import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec +from metricflow.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index efc852ad3f..ea46ec145e 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -16,7 +16,7 @@ from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, ) diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index 6249cd6999..3f40d5599e 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -17,7 +17,7 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests/query_rendering/test_granularity_date_part_rendering.py index b20d72a988..ff5158a4d1 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests/query_rendering/test_granularity_date_part_rendering.py @@ -15,7 +15,7 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, ) diff --git a/tests/query_rendering/test_metric_time_without_metrics.py b/tests/query_rendering/test_metric_time_without_metrics.py index 37803471eb..917a373931 100644 --- a/tests/query_rendering/test_metric_time_without_metrics.py +++ b/tests/query_rendering/test_metric_time_without_metrics.py @@ -11,7 +11,7 @@ from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.specs import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec +from metricflow.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check from tests.time.metric_time_dimension import MTD_SPEC_DAY diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index 43fb3e81d1..bb9e406d66 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -23,7 +23,7 @@ from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests/query_rendering/test_time_spine_join_rendering.py index 56f60e57c7..8170d3a8f8 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests/query_rendering/test_time_spine_join_rendering.py @@ -16,7 +16,7 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, ) diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index d0e230c61d..2224dfb10c 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -14,7 +14,7 @@ from metricflow.model.semantics.linkable_element_set import LinkableElementSet from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.protocols.sql_client import SqlClient, SqlEngine -from metricflow.specs.specs import InstanceSpecSet, LinkableSpecSet +from metricflow.specs.spec_classes import InstanceSpecSet, LinkableSpecSet from metricflow.test_helpers import assert_snapshot_text_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker diff --git a/tests/specs/patterns/test_entity_link_pattern.py b/tests/specs/patterns/test_entity_link_pattern.py index aea60bc2c0..3e15a505ab 100644 --- a/tests/specs/patterns/test_entity_link_pattern.py +++ b/tests/specs/patterns/test_entity_link_pattern.py @@ -15,7 +15,13 @@ EntityLinkPatternParameterSet, ParameterSetField, ) -from metricflow.specs.specs import DimensionSpec, EntitySpec, GroupByMetricSpec, LinkableInstanceSpec, TimeDimensionSpec +from metricflow.specs.spec_classes import ( + DimensionSpec, + EntitySpec, + GroupByMetricSpec, + LinkableInstanceSpec, + TimeDimensionSpec, +) from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR logger = logging.getLogger(__name__) diff --git a/tests/specs/patterns/test_typed_patterns.py b/tests/specs/patterns/test_typed_patterns.py index 754a06d660..11b8ec8029 100644 --- a/tests/specs/patterns/test_typed_patterns.py +++ b/tests/specs/patterns/test_typed_patterns.py @@ -25,7 +25,13 @@ GroupByMetricPattern, TimeDimensionPattern, ) -from metricflow.specs.specs import DimensionSpec, EntitySpec, GroupByMetricSpec, LinkableInstanceSpec, TimeDimensionSpec +from metricflow.specs.spec_classes import ( + DimensionSpec, + EntitySpec, + GroupByMetricSpec, + LinkableInstanceSpec, + TimeDimensionSpec, +) logger = logging.getLogger(__name__) diff --git a/tests/specs/test_time_dimension_spec.py b/tests/specs/test_time_dimension_spec.py index 9939458891..8159e822cf 100644 --- a/tests/specs/test_time_dimension_spec.py +++ b/tests/specs/test_time_dimension_spec.py @@ -5,7 +5,7 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.specs.specs import TimeDimensionSpec, TimeDimensionSpecField +from metricflow.specs.spec_classes import TimeDimensionSpec, TimeDimensionSpecField logger = logging.getLogger(__name__) diff --git a/tests/table_snapshot/table_snapshots.py b/tests/table_snapshot/table_snapshots.py index 6350bf3215..e1d12baab0 100644 --- a/tests/table_snapshot/table_snapshots.py +++ b/tests/table_snapshot/table_snapshots.py @@ -15,7 +15,7 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.implementations.base import FrozenBaseModel -from metricflow.specs.specs import hash_items +from metricflow.specs.spec_classes import hash_items from metricflow.sql.sql_table import SqlTable from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods diff --git a/tests/test_specs.py b/tests/test_specs.py index da922e61c9..a96e46d50f 100644 --- a/tests/test_specs.py +++ b/tests/test_specs.py @@ -5,7 +5,7 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.specs.specs import ( +from metricflow.specs.spec_classes import ( DimensionSpec, EntityReference, EntitySpec, From e50a1e55fdc2ea84cee1be3c46a8057d9301c83b Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 12:55:16 -0700 Subject: [PATCH 06/80] Add missing `__init__.py` in `inference`. --- metricflow/inference/rule/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 metricflow/inference/rule/__init__.py diff --git a/metricflow/inference/rule/__init__.py b/metricflow/inference/rule/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From 8929eecf85ba4ab53bedc680dd677868f6251ff1 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 13:16:16 -0700 Subject: [PATCH 07/80] Move `base_time_grain.py`. --- .../group_by_item/candidate_push_down/push_down_visitor.py | 2 +- metricflow/query/group_by_item/group_by_item_resolver.py | 2 +- metricflow/query/query_parser.py | 2 +- metricflow/query/suggestion_generator.py | 2 +- metricflow/semantics/specs/__init__.py | 0 metricflow/semantics/specs/patterns/__init__.py | 0 metricflow/{ => semantics}/specs/patterns/base_time_grain.py | 0 7 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 metricflow/semantics/specs/__init__.py create mode 100644 metricflow/semantics/specs/patterns/__init__.py rename metricflow/{ => semantics}/specs/patterns/base_time_grain.py (100%) diff --git a/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py b/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py index f4964c9c57..5aac7b6bf7 100644 --- a/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py +++ b/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py @@ -42,7 +42,7 @@ MetricFlowQueryResolutionIssueSet, ) from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator -from metricflow.specs.patterns.base_time_grain import BaseTimeGrainPattern +from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.specs.patterns.none_date_part import NoneDatePartPattern from metricflow.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec diff --git a/metricflow/query/group_by_item/group_by_item_resolver.py b/metricflow/query/group_by_item/group_by_item_resolver.py index 9c5dde88bb..38f4de2f77 100644 --- a/metricflow/query/group_by_item/group_by_item_resolver.py +++ b/metricflow/query/group_by_item/group_by_item_resolver.py @@ -24,7 +24,7 @@ MetricFlowQueryResolutionIssueSet, ) from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator -from metricflow.specs.patterns.base_time_grain import BaseTimeGrainPattern +from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.patterns.typed_patterns import TimeDimensionPattern from metricflow.specs.spec_classes import LinkableInstanceSpec, LinkableSpecSet diff --git a/metricflow/query/query_parser.py b/metricflow/query/query_parser.py index 46382cb674..c1a7c56065 100644 --- a/metricflow/query/query_parser.py +++ b/metricflow/query/query_parser.py @@ -51,7 +51,7 @@ ResolverInputForQuery, ResolverInputForQueryLevelWhereFilterIntersection, ) -from metricflow.specs.patterns.base_time_grain import BaseTimeGrainPattern +from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.specs.patterns.metric_time_pattern import MetricTimePattern from metricflow.specs.patterns.none_date_part import NoneDatePartPattern from metricflow.specs.spec_classes import ( diff --git a/metricflow/query/suggestion_generator.py b/metricflow/query/suggestion_generator.py index 8def6b63c0..d037938a94 100644 --- a/metricflow/query/suggestion_generator.py +++ b/metricflow/query/suggestion_generator.py @@ -5,7 +5,7 @@ from metricflow.naming.naming_scheme import QueryItemNamingScheme from metricflow.query.similarity import top_fuzzy_matches -from metricflow.specs.patterns.base_time_grain import BaseTimeGrainPattern +from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.specs.patterns.none_date_part import NoneDatePartPattern from metricflow.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.spec_classes import InstanceSpec diff --git a/metricflow/semantics/specs/__init__.py b/metricflow/semantics/specs/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metricflow/semantics/specs/patterns/__init__.py b/metricflow/semantics/specs/patterns/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metricflow/specs/patterns/base_time_grain.py b/metricflow/semantics/specs/patterns/base_time_grain.py similarity index 100% rename from metricflow/specs/patterns/base_time_grain.py rename to metricflow/semantics/specs/patterns/base_time_grain.py From 614f0e797865fe630ea584cc6d0f9676b44fcff5 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 13:17:02 -0700 Subject: [PATCH 08/80] Move patterns. --- metricflow/naming/dunder_scheme.py | 2 +- metricflow/naming/metric_scheme.py | 2 +- metricflow/naming/naming_scheme.py | 2 +- metricflow/naming/object_builder_scheme.py | 6 +++--- .../candidate_push_down/group_by_item_candidate.py | 2 +- .../group_by_item/candidate_push_down/push_down_visitor.py | 4 ++-- .../filter_spec_resolution/filter_pattern_factory.py | 4 ++-- .../filter_spec_resolution/filter_spec_lookup.py | 2 +- metricflow/query/group_by_item/group_by_item_resolver.py | 4 ++-- metricflow/query/query_parser.py | 4 ++-- metricflow/query/query_resolver.py | 2 +- metricflow/query/resolver_inputs/base_resolver_inputs.py | 2 +- metricflow/query/resolver_inputs/query_resolver_inputs.py | 4 ++-- metricflow/query/suggestion_generator.py | 4 ++-- metricflow/semantics/specs/patterns/base_time_grain.py | 4 ++-- .../{ => semantics}/specs/patterns/entity_link_pattern.py | 2 +- .../{ => semantics}/specs/patterns/match_list_pattern.py | 2 +- metricflow/{ => semantics}/specs/patterns/metric_pattern.py | 2 +- .../{ => semantics}/specs/patterns/metric_time_pattern.py | 2 +- metricflow/{ => semantics}/specs/patterns/none_date_part.py | 2 +- metricflow/{ => semantics}/specs/patterns/spec_pattern.py | 0 metricflow/{ => semantics}/specs/patterns/typed_patterns.py | 2 +- metricflow/specs/query_param_implementations.py | 2 +- tests/specs/patterns/test_entity_link_pattern.py | 2 +- tests/specs/patterns/test_typed_patterns.py | 2 +- 25 files changed, 33 insertions(+), 33 deletions(-) rename metricflow/{ => semantics}/specs/patterns/entity_link_pattern.py (98%) rename metricflow/{ => semantics}/specs/patterns/match_list_pattern.py (90%) rename metricflow/{ => semantics}/specs/patterns/metric_pattern.py (91%) rename metricflow/{ => semantics}/specs/patterns/metric_time_pattern.py (93%) rename metricflow/{ => semantics}/specs/patterns/none_date_part.py (93%) rename metricflow/{ => semantics}/specs/patterns/spec_pattern.py (100%) rename metricflow/{ => semantics}/specs/patterns/typed_patterns.py (98%) diff --git a/metricflow/naming/dunder_scheme.py b/metricflow/naming/dunder_scheme.py index 025451e776..8f93957578 100644 --- a/metricflow/naming/dunder_scheme.py +++ b/metricflow/naming/dunder_scheme.py @@ -10,7 +10,7 @@ from typing_extensions import override from metricflow.naming.naming_scheme import QueryItemNamingScheme -from metricflow.specs.patterns.entity_link_pattern import ( +from metricflow.semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, ParameterSetField, diff --git a/metricflow/naming/metric_scheme.py b/metricflow/naming/metric_scheme.py index 636ffdd4ec..44febf5d0a 100644 --- a/metricflow/naming/metric_scheme.py +++ b/metricflow/naming/metric_scheme.py @@ -6,7 +6,7 @@ from typing_extensions import override from metricflow.naming.naming_scheme import QueryItemNamingScheme -from metricflow.specs.patterns.metric_pattern import MetricSpecPattern +from metricflow.semantics.specs.patterns.metric_pattern import MetricSpecPattern from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, diff --git a/metricflow/naming/naming_scheme.py b/metricflow/naming/naming_scheme.py index 31de939a9d..da21195c02 100644 --- a/metricflow/naming/naming_scheme.py +++ b/metricflow/naming/naming_scheme.py @@ -3,7 +3,7 @@ from abc import ABC, abstractmethod from typing import TYPE_CHECKING, Optional -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern if TYPE_CHECKING: from metricflow.specs.spec_classes import InstanceSpec diff --git a/metricflow/naming/object_builder_scheme.py b/metricflow/naming/object_builder_scheme.py index 58b98f13e5..c7772586e1 100644 --- a/metricflow/naming/object_builder_scheme.py +++ b/metricflow/naming/object_builder_scheme.py @@ -14,13 +14,13 @@ from metricflow.naming.naming_scheme import QueryItemNamingScheme from metricflow.naming.object_builder_str import ObjectBuilderNameConverter -from metricflow.specs.patterns.entity_link_pattern import ( +from metricflow.semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, ParameterSetField, ) -from metricflow.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.patterns.typed_patterns import DimensionPattern, TimeDimensionPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.typed_patterns import DimensionPattern, TimeDimensionPattern from metricflow.specs.spec_classes import ( InstanceSpec, ) diff --git a/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py b/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py index 0f71f0c899..c221e5e2d3 100644 --- a/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py +++ b/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py @@ -8,7 +8,7 @@ from metricflow.query.group_by_item.path_prefixable import PathPrefixable from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinkableSpecSet diff --git a/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py b/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py index 5aac7b6bf7..e003cede4e 100644 --- a/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py +++ b/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py @@ -43,8 +43,8 @@ ) from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern -from metricflow.specs.patterns.none_date_part import NoneDatePartPattern -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py b/metricflow/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py index 49b5ddcd66..1e28fb6e6b 100644 --- a/metricflow/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py +++ b/metricflow/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py @@ -10,8 +10,8 @@ ) from typing_extensions import override -from metricflow.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.patterns.typed_patterns import ( +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.typed_patterns import ( DimensionPattern, EntityPattern, GroupByMetricPattern, diff --git a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py b/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py index 2ea8fea709..699f449c99 100644 --- a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py +++ b/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py @@ -21,7 +21,7 @@ from metricflow.query.group_by_item.path_prefixable import PathPrefixable from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern if TYPE_CHECKING: from metricflow.specs.spec_classes import LinkableInstanceSpec diff --git a/metricflow/query/group_by_item/group_by_item_resolver.py b/metricflow/query/group_by_item/group_by_item_resolver.py index 38f4de2f77..fc0d8d6337 100644 --- a/metricflow/query/group_by_item/group_by_item_resolver.py +++ b/metricflow/query/group_by_item/group_by_item_resolver.py @@ -25,8 +25,8 @@ ) from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern -from metricflow.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.patterns.typed_patterns import TimeDimensionPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.typed_patterns import TimeDimensionPattern from metricflow.specs.spec_classes import LinkableInstanceSpec, LinkableSpecSet logger = logging.getLogger(__name__) diff --git a/metricflow/query/query_parser.py b/metricflow/query/query_parser.py index c1a7c56065..6caa85c821 100644 --- a/metricflow/query/query_parser.py +++ b/metricflow/query/query_parser.py @@ -52,8 +52,8 @@ ResolverInputForQueryLevelWhereFilterIntersection, ) from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern -from metricflow.specs.patterns.metric_time_pattern import MetricTimePattern -from metricflow.specs.patterns.none_date_part import NoneDatePartPattern +from metricflow.semantics.specs.patterns.metric_time_pattern import MetricTimePattern +from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, diff --git a/metricflow/query/query_resolver.py b/metricflow/query/query_resolver.py index 44e176eae2..7419732c65 100644 --- a/metricflow/query/query_resolver.py +++ b/metricflow/query/query_resolver.py @@ -47,7 +47,7 @@ ) from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator from metricflow.query.validation_rules.query_validator import PostResolutionQueryValidator -from metricflow.specs.patterns.match_list_pattern import MatchListSpecPattern +from metricflow.semantics.specs.patterns.match_list_pattern import MatchListSpecPattern from metricflow.specs.spec_classes import ( InstanceSpec, LinkableInstanceSpec, diff --git a/metricflow/query/resolver_inputs/base_resolver_inputs.py b/metricflow/query/resolver_inputs/base_resolver_inputs.py index 6a46956ad3..356aee4e84 100644 --- a/metricflow/query/resolver_inputs/base_resolver_inputs.py +++ b/metricflow/query/resolver_inputs/base_resolver_inputs.py @@ -5,7 +5,7 @@ from typing import Optional from metricflow.naming.naming_scheme import QueryItemNamingScheme -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern @dataclass(frozen=True) diff --git a/metricflow/query/resolver_inputs/query_resolver_inputs.py b/metricflow/query/resolver_inputs/query_resolver_inputs.py index d775f03965..0d07dc4c5d 100644 --- a/metricflow/query/resolver_inputs/query_resolver_inputs.py +++ b/metricflow/query/resolver_inputs/query_resolver_inputs.py @@ -18,8 +18,8 @@ from metricflow.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.resolver_inputs.base_resolver_inputs import InputPatternDescription, MetricFlowQueryResolverInput -from metricflow.specs.patterns.metric_pattern import MetricSpecPattern -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.metric_pattern import MetricSpecPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern @dataclass(frozen=True) diff --git a/metricflow/query/suggestion_generator.py b/metricflow/query/suggestion_generator.py index d037938a94..a14f7750f6 100644 --- a/metricflow/query/suggestion_generator.py +++ b/metricflow/query/suggestion_generator.py @@ -6,8 +6,8 @@ from metricflow.naming.naming_scheme import QueryItemNamingScheme from metricflow.query.similarity import top_fuzzy_matches from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern -from metricflow.specs.patterns.none_date_part import NoneDatePartPattern -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.spec_classes import InstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/specs/patterns/base_time_grain.py b/metricflow/semantics/specs/patterns/base_time_grain.py index 73ddaed6c2..a9399df5c7 100644 --- a/metricflow/semantics/specs/patterns/base_time_grain.py +++ b/metricflow/semantics/specs/patterns/base_time_grain.py @@ -6,8 +6,8 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from typing_extensions import override -from metricflow.specs.patterns.metric_time_pattern import MetricTimePattern -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.metric_time_pattern import MetricTimePattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, diff --git a/metricflow/specs/patterns/entity_link_pattern.py b/metricflow/semantics/specs/patterns/entity_link_pattern.py similarity index 98% rename from metricflow/specs/patterns/entity_link_pattern.py rename to metricflow/semantics/specs/patterns/entity_link_pattern.py index 1d074a8324..a3d18078d1 100644 --- a/metricflow/specs/patterns/entity_link_pattern.py +++ b/metricflow/semantics/specs/patterns/entity_link_pattern.py @@ -11,7 +11,7 @@ from more_itertools import is_sorted from typing_extensions import override -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.spec_classes import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/specs/patterns/match_list_pattern.py b/metricflow/semantics/specs/patterns/match_list_pattern.py similarity index 90% rename from metricflow/specs/patterns/match_list_pattern.py rename to metricflow/semantics/specs/patterns/match_list_pattern.py index 86f209919d..642e675d99 100644 --- a/metricflow/specs/patterns/match_list_pattern.py +++ b/metricflow/semantics/specs/patterns/match_list_pattern.py @@ -4,7 +4,7 @@ from typing_extensions import override -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.spec_classes import InstanceSpec diff --git a/metricflow/specs/patterns/metric_pattern.py b/metricflow/semantics/specs/patterns/metric_pattern.py similarity index 91% rename from metricflow/specs/patterns/metric_pattern.py rename to metricflow/semantics/specs/patterns/metric_pattern.py index 3550a5a5b2..64c0c4b2c9 100644 --- a/metricflow/specs/patterns/metric_pattern.py +++ b/metricflow/semantics/specs/patterns/metric_pattern.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, diff --git a/metricflow/specs/patterns/metric_time_pattern.py b/metricflow/semantics/specs/patterns/metric_time_pattern.py similarity index 93% rename from metricflow/specs/patterns/metric_time_pattern.py rename to metricflow/semantics/specs/patterns/metric_time_pattern.py index e810cc19e9..d65f8460f8 100644 --- a/metricflow/specs/patterns/metric_time_pattern.py +++ b/metricflow/semantics/specs/patterns/metric_time_pattern.py @@ -5,7 +5,7 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from typing_extensions import override -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, diff --git a/metricflow/specs/patterns/none_date_part.py b/metricflow/semantics/specs/patterns/none_date_part.py similarity index 93% rename from metricflow/specs/patterns/none_date_part.py rename to metricflow/semantics/specs/patterns/none_date_part.py index b7ecf4eb99..bfecaf3cb4 100644 --- a/metricflow/specs/patterns/none_date_part.py +++ b/metricflow/semantics/specs/patterns/none_date_part.py @@ -4,7 +4,7 @@ from typing_extensions import override -from metricflow.specs.patterns.spec_pattern import SpecPattern +from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, diff --git a/metricflow/specs/patterns/spec_pattern.py b/metricflow/semantics/specs/patterns/spec_pattern.py similarity index 100% rename from metricflow/specs/patterns/spec_pattern.py rename to metricflow/semantics/specs/patterns/spec_pattern.py diff --git a/metricflow/specs/patterns/typed_patterns.py b/metricflow/semantics/specs/patterns/typed_patterns.py similarity index 98% rename from metricflow/specs/patterns/typed_patterns.py rename to metricflow/semantics/specs/patterns/typed_patterns.py index 7fd3577335..b21350641f 100644 --- a/metricflow/specs/patterns/typed_patterns.py +++ b/metricflow/semantics/specs/patterns/typed_patterns.py @@ -12,7 +12,7 @@ from dbt_semantic_interfaces.references import EntityReference from typing_extensions import override -from metricflow.specs.patterns.entity_link_pattern import ( +from metricflow.semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, ParameterSetField, diff --git a/metricflow/specs/query_param_implementations.py b/metricflow/specs/query_param_implementations.py index 7af21980f1..13d3f5d5f4 100644 --- a/metricflow/specs/query_param_implementations.py +++ b/metricflow/specs/query_param_implementations.py @@ -23,7 +23,7 @@ ResolverInputForMetric, ResolverInputForOrderByItem, ) -from metricflow.specs.patterns.entity_link_pattern import ( +from metricflow.semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, ParameterSetField, diff --git a/tests/specs/patterns/test_entity_link_pattern.py b/tests/specs/patterns/test_entity_link_pattern.py index 3e15a505ab..22216f82ae 100644 --- a/tests/specs/patterns/test_entity_link_pattern.py +++ b/tests/specs/patterns/test_entity_link_pattern.py @@ -10,7 +10,7 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart -from metricflow.specs.patterns.entity_link_pattern import ( +from metricflow.semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, ParameterSetField, diff --git a/tests/specs/patterns/test_typed_patterns.py b/tests/specs/patterns/test_typed_patterns.py index 11b8ec8029..51bdb33df2 100644 --- a/tests/specs/patterns/test_typed_patterns.py +++ b/tests/specs/patterns/test_typed_patterns.py @@ -19,7 +19,7 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart -from metricflow.specs.patterns.typed_patterns import ( +from metricflow.semantics.specs.patterns.typed_patterns import ( DimensionPattern, EntityPattern, GroupByMetricPattern, From 2b2ea3431cc4bc1da031f5c0d7d49615ef8f7bc3 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 13:19:00 -0700 Subject: [PATCH 09/80] Move spec_classes.py --- .../dataflow/builder/dataflow_plan_builder.py | 4 ++-- .../dataflow/builder/measure_additiveness.py | 2 +- metricflow/dataflow/builder/node_evaluator.py | 7 ++++++- metricflow/dataflow/builder/partitions.py | 2 +- metricflow/dataflow/nodes/aggregate_measures.py | 2 +- metricflow/dataflow/nodes/compute_metrics.py | 2 +- metricflow/dataflow/nodes/filter_elements.py | 2 +- .../dataflow/nodes/join_conversion_events.py | 8 +++++++- metricflow/dataflow/nodes/join_over_time.py | 2 +- metricflow/dataflow/nodes/join_to_base.py | 2 +- metricflow/dataflow/nodes/join_to_time_spine.py | 2 +- metricflow/dataflow/nodes/order_by_limit.py | 2 +- metricflow/dataflow/nodes/semi_additive_join.py | 2 +- metricflow/dataflow/nodes/where_filter.py | 2 +- .../optimizer/source_scan/cm_branch_combiner.py | 2 +- .../source_scan/matching_linkable_specs.py | 2 +- metricflow/dataset/convert_semantic_model.py | 4 ++-- metricflow/dataset/dataset_classes.py | 2 +- metricflow/dataset/sql_dataset.py | 2 +- metricflow/engine/metricflow_engine.py | 2 +- metricflow/engine/models.py | 2 +- metricflow/instances.py | 4 ++-- metricflow/model/data_warehouse_model_validator.py | 2 +- .../model/semantics/linkable_spec_resolver.py | 2 +- metricflow/model/semantics/metric_lookup.py | 2 +- .../model/semantics/semantic_model_lookup.py | 2 +- metricflow/model/spec_converters.py | 2 +- metricflow/naming/dunder_scheme.py | 2 +- metricflow/naming/metric_scheme.py | 2 +- metricflow/naming/naming_scheme.py | 2 +- metricflow/naming/object_builder_scheme.py | 2 +- metricflow/naming/object_builder_str.py | 2 +- metricflow/plan_conversion/column_resolver.py | 12 ++++++------ metricflow/plan_conversion/dataflow_to_sql.py | 4 ++-- metricflow/plan_conversion/instance_converters.py | 4 ++-- metricflow/plan_conversion/node_processor.py | 2 +- metricflow/plan_conversion/spec_transforms.py | 4 ++-- .../candidate_push_down/group_by_item_candidate.py | 2 +- .../candidate_push_down/push_down_visitor.py | 2 +- .../filter_spec_resolution/filter_spec_lookup.py | 2 +- .../query/group_by_item/group_by_item_resolver.py | 2 +- .../invalid_use_of_date_part.py | 2 +- metricflow/query/query_parser.py | 2 +- metricflow/query/query_resolution.py | 2 +- metricflow/query/query_resolver.py | 2 +- metricflow/query/suggestion_generator.py | 2 +- .../validation_rules/metric_time_requirements.py | 2 +- .../semantics/specs/patterns/base_time_grain.py | 2 +- .../specs/patterns/entity_link_pattern.py | 2 +- .../semantics/specs/patterns/match_list_pattern.py | 2 +- .../semantics/specs/patterns/metric_pattern.py | 2 +- .../specs/patterns/metric_time_pattern.py | 2 +- .../semantics/specs/patterns/none_date_part.py | 2 +- .../semantics/specs/patterns/spec_pattern.py | 2 +- .../semantics/specs/patterns/typed_patterns.py | 2 +- metricflow/{ => semantics}/specs/spec_classes.py | 0 metricflow/specs/column_assoc.py | 2 +- metricflow/specs/dimension_spec_resolver.py | 2 +- metricflow/specs/rendered_spec_tracker.py | 2 +- metricflow/specs/spec_set_transforms.py | 2 +- metricflow/specs/where_filter_transform.py | 2 +- tests/dataflow/builder/test_cyclic_join.py | 2 +- .../dataflow/builder/test_dataflow_plan_builder.py | 4 ++-- .../dataflow/builder/test_measure_additiveness.py | 2 +- tests/dataflow/builder/test_node_data_set.py | 4 ++-- tests/dataflow/builder/test_node_evaluator.py | 2 +- .../source_scan/test_cm_branch_combiner.py | 2 +- .../source_scan/test_source_scan_optimizer.py | 4 ++-- tests/examples/test_node_sql.py | 2 +- tests/model/test_where_filter_spec.py | 4 ++-- tests/naming/conftest.py | 2 +- tests/naming/test_dunder_naming_scheme.py | 2 +- tests/naming/test_metric_name_scheme.py | 2 +- tests/naming/test_object_builder_naming_scheme.py | 2 +- .../test_conversion_metrics_to_sql.py | 2 +- .../dataflow_to_sql/test_distinct_values_to_sql.py | 2 +- .../test_metric_time_dimension_to_sql.py | 2 +- ...eate_select_columns_with_measures_aggregated.py | 2 +- ...test_create_validity_window_join_description.py | 2 +- .../plan_conversion/test_dataflow_to_execution.py | 2 +- tests/plan_conversion/test_dataflow_to_sql_plan.py | 4 ++-- .../group_by_item/test_available_group_by_items.py | 2 +- tests/query/test_query_parser.py | 14 +++++++------- .../test_cumulative_metric_rendering.py | 2 +- .../test_derived_metric_rendering.py | 4 ++-- .../test_fill_nulls_with_rendering.py | 2 +- .../test_granularity_date_part_rendering.py | 2 +- .../test_metric_time_without_metrics.py | 2 +- tests/query_rendering/test_query_rendering.py | 4 ++-- .../test_time_spine_join_rendering.py | 2 +- tests/snapshot_utils.py | 2 +- tests/specs/patterns/test_entity_link_pattern.py | 2 +- tests/specs/patterns/test_typed_patterns.py | 2 +- tests/specs/test_time_dimension_spec.py | 2 +- tests/table_snapshot/table_snapshots.py | 2 +- tests/test_specs.py | 2 +- 96 files changed, 130 insertions(+), 119 deletions(-) rename metricflow/{ => semantics}/specs/spec_classes.py (100%) diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index 79d36cf843..f9579d71f2 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -63,8 +63,7 @@ from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( ConstantPropertySpec, CumulativeMeasureDescription, EntitySpec, @@ -83,6 +82,7 @@ TimeDimensionSpec, WhereFilterSpec, ) +from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.specs.where_filter_transform import WhereSpecFactory from metricflow.sql.sql_plan import SqlJoinType from metricflow.sql.sql_table import SqlTable diff --git a/metricflow/dataflow/builder/measure_additiveness.py b/metricflow/dataflow/builder/measure_additiveness.py index 1653a077fd..66e6422cac 100644 --- a/metricflow/dataflow/builder/measure_additiveness.py +++ b/metricflow/dataflow/builder/measure_additiveness.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from typing import Dict, Optional, Sequence, Tuple -from metricflow.specs.spec_classes import MeasureSpec, NonAdditiveDimensionSpec +from metricflow.semantics.specs.spec_classes import MeasureSpec, NonAdditiveDimensionSpec @dataclass(frozen=True) diff --git a/metricflow/dataflow/builder/node_evaluator.py b/metricflow/dataflow/builder/node_evaluator.py index c4009225e3..411cdac69c 100644 --- a/metricflow/dataflow/builder/node_evaluator.py +++ b/metricflow/dataflow/builder/node_evaluator.py @@ -41,7 +41,12 @@ from metricflow.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription -from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinkableSpecSet, LinklessEntitySpec +from metricflow.semantics.specs.spec_classes import ( + InstanceSpecSet, + LinkableInstanceSpec, + LinkableSpecSet, + LinklessEntitySpec, +) from metricflow.sql.sql_plan import SqlJoinType logger = logging.getLogger(__name__) diff --git a/metricflow/dataflow/builder/partitions.py b/metricflow/dataflow/builder/partitions.py index 09a0081353..b71c8f1158 100644 --- a/metricflow/dataflow/builder/partitions.py +++ b/metricflow/dataflow/builder/partitions.py @@ -6,7 +6,7 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, InstanceSpecSet, PartitionSpecSet, diff --git a/metricflow/dataflow/nodes/aggregate_measures.py b/metricflow/dataflow/nodes/aggregate_measures.py index 31eca1a4f0..f2640a6075 100644 --- a/metricflow/dataflow/nodes/aggregate_measures.py +++ b/metricflow/dataflow/nodes/aggregate_measures.py @@ -5,7 +5,7 @@ from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.specs.spec_classes import MetricInputMeasureSpec +from metricflow.semantics.specs.spec_classes import MetricInputMeasureSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/compute_metrics.py b/metricflow/dataflow/nodes/compute_metrics.py index b83178f464..a043dd9428 100644 --- a/metricflow/dataflow/nodes/compute_metrics.py +++ b/metricflow/dataflow/nodes/compute_metrics.py @@ -10,7 +10,7 @@ DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.specs.spec_classes import MetricSpec +from metricflow.semantics.specs.spec_classes import MetricSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/filter_elements.py b/metricflow/dataflow/nodes/filter_elements.py index 9bdfb60054..05205a1ee4 100644 --- a/metricflow/dataflow/nodes/filter_elements.py +++ b/metricflow/dataflow/nodes/filter_elements.py @@ -6,7 +6,7 @@ from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.specs.spec_classes import InstanceSpecSet +from metricflow.semantics.specs.spec_classes import InstanceSpecSet from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_conversion_events.py b/metricflow/dataflow/nodes/join_conversion_events.py index 69b3ec5f5b..133fac4992 100644 --- a/metricflow/dataflow/nodes/join_conversion_events.py +++ b/metricflow/dataflow/nodes/join_conversion_events.py @@ -7,7 +7,13 @@ from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.specs.spec_classes import ConstantPropertySpec, EntitySpec, InstanceSpec, MeasureSpec, TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import ( + ConstantPropertySpec, + EntitySpec, + InstanceSpec, + MeasureSpec, + TimeDimensionSpec, +) from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_over_time.py b/metricflow/dataflow/nodes/join_over_time.py index 57d9d8bcd6..f60f48d047 100644 --- a/metricflow/dataflow/nodes/join_over_time.py +++ b/metricflow/dataflow/nodes/join_over_time.py @@ -9,7 +9,7 @@ from metricflow.dag.mf_dag import DisplayedProperty, NodeId from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.filters.time_constraint import TimeRangeConstraint -from metricflow.specs.spec_classes import TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_to_base.py b/metricflow/dataflow/nodes/join_to_base.py index 7803f26ef7..35e165c496 100644 --- a/metricflow/dataflow/nodes/join_to_base.py +++ b/metricflow/dataflow/nodes/join_to_base.py @@ -10,7 +10,7 @@ PartitionTimeDimensionJoinDescription, ) from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec from metricflow.sql.sql_plan import SqlJoinType from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_to_time_spine.py b/metricflow/dataflow/nodes/join_to_time_spine.py index 2b194c4d9d..a3833b764b 100644 --- a/metricflow/dataflow/nodes/join_to_time_spine.py +++ b/metricflow/dataflow/nodes/join_to_time_spine.py @@ -10,7 +10,7 @@ from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.filters.time_constraint import TimeRangeConstraint -from metricflow.specs.spec_classes import TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from metricflow.sql.sql_plan import SqlJoinType from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/order_by_limit.py b/metricflow/dataflow/nodes/order_by_limit.py index 46a46129b8..615d224c5a 100644 --- a/metricflow/dataflow/nodes/order_by_limit.py +++ b/metricflow/dataflow/nodes/order_by_limit.py @@ -10,7 +10,7 @@ DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.specs.spec_classes import OrderBySpec +from metricflow.semantics.specs.spec_classes import OrderBySpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/semi_additive_join.py b/metricflow/dataflow/nodes/semi_additive_join.py index c934a2dcee..c31499b77d 100644 --- a/metricflow/dataflow/nodes/semi_additive_join.py +++ b/metricflow/dataflow/nodes/semi_additive_join.py @@ -7,7 +7,7 @@ from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/where_filter.py b/metricflow/dataflow/nodes/where_filter.py index 7d88599d69..7ae6591e11 100644 --- a/metricflow/dataflow/nodes/where_filter.py +++ b/metricflow/dataflow/nodes/where_filter.py @@ -6,7 +6,7 @@ from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput -from metricflow.specs.spec_classes import WhereFilterSpec +from metricflow.semantics.specs.spec_classes import WhereFilterSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py b/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py index 4069cb3c37..d057e3f74d 100644 --- a/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py +++ b/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py @@ -28,7 +28,7 @@ from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.dataflow.optimizer.source_scan.matching_linkable_specs import MatchingLinkableSpecsTransform -from metricflow.specs.spec_classes import MetricSpec +from metricflow.semantics.specs.spec_classes import MetricSpec logger = logging.getLogger(__name__) diff --git a/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py b/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py index da85b8dce2..798ab521cb 100644 --- a/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py +++ b/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py @@ -1,6 +1,6 @@ from __future__ import annotations -from metricflow.specs.spec_classes import InstanceSpecSet, InstanceSpecSetTransform +from metricflow.semantics.specs.spec_classes import InstanceSpecSet, InstanceSpecSetTransform class MatchingLinkableSpecsTransform(InstanceSpecSetTransform[bool]): diff --git a/metricflow/dataset/convert_semantic_model.py b/metricflow/dataset/convert_semantic_model.py index e0e9e79b8e..171f8a3774 100644 --- a/metricflow/dataset/convert_semantic_model.py +++ b/metricflow/dataset/convert_semantic_model.py @@ -31,14 +31,14 @@ from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.model.spec_converters import MeasureConverter from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DEFAULT_TIME_GRANULARITY, DimensionSpec, EntityReference, EntitySpec, TimeDimensionSpec, ) +from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, diff --git a/metricflow/dataset/dataset_classes.py b/metricflow/dataset/dataset_classes.py index 6eecd5271f..b5e71771f0 100644 --- a/metricflow/dataset/dataset_classes.py +++ b/metricflow/dataset/dataset_classes.py @@ -10,7 +10,7 @@ from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords from metricflow.instances import InstanceSet, TimeDimensionInstance -from metricflow.specs.spec_classes import TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import TimeDimensionSpec logger = logging.getLogger(__name__) diff --git a/metricflow/dataset/sql_dataset.py b/metricflow/dataset/sql_dataset.py index dd3dd489a3..d6a83e16f2 100644 --- a/metricflow/dataset/sql_dataset.py +++ b/metricflow/dataset/sql_dataset.py @@ -10,8 +10,8 @@ from metricflow.instances import ( InstanceSet, ) +from metricflow.semantics.specs.spec_classes import DimensionSpec, EntitySpec, TimeDimensionSpec from metricflow.specs.column_assoc import ColumnAssociation -from metricflow.specs.spec_classes import DimensionSpec, EntitySpec, TimeDimensionSpec from metricflow.sql.sql_plan import ( SqlQueryPlanNode, SqlSelectStatementNode, diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 710a4a5f64..3cecd544fb 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -50,9 +50,9 @@ from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.random_id import random_id +from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.specs.query_param_implementations import SavedQueryParameter -from metricflow.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.sql_table import SqlTable from metricflow.telemetry.models import TelemetryLevel diff --git a/metricflow/engine/models.py b/metricflow/engine/models.py index bbed186bed..58c87bf62e 100644 --- a/metricflow/engine/models.py +++ b/metricflow/engine/models.py @@ -29,7 +29,7 @@ from dbt_semantic_interfaces.type_enums.entity_type import EntityType from metricflow.naming.linkable_spec_name import StructuredLinkableSpecName -from metricflow.specs.spec_classes import DimensionSpec, EntityReference +from metricflow.semantics.specs.spec_classes import DimensionSpec, EntityReference @dataclass(frozen=True) diff --git a/metricflow/instances.py b/metricflow/instances.py index 942b42bbc4..4ea51dee90 100644 --- a/metricflow/instances.py +++ b/metricflow/instances.py @@ -10,8 +10,7 @@ from dbt_semantic_interfaces.references import MetricModelReference, SemanticModelElementReference from metricflow.aggregation_properties import AggregationState -from metricflow.specs.column_assoc import ColumnAssociation -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, @@ -22,6 +21,7 @@ MetricSpec, TimeDimensionSpec, ) +from metricflow.specs.column_assoc import ColumnAssociation # Type for the specification used in the instance. SpecT = TypeVar("SpecT", bound=InstanceSpec) diff --git a/metricflow/model/data_warehouse_model_validator.py b/metricflow/model/data_warehouse_model_validator.py index 1e6eb6cbe4..1f3702be35 100644 --- a/metricflow/model/data_warehouse_model_validator.py +++ b/metricflow/model/data_warehouse_model_validator.py @@ -41,7 +41,7 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec +from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec from metricflow.sql.sql_bind_parameters import SqlBindParameters diff --git a/metricflow/model/semantics/linkable_spec_resolver.py b/metricflow/model/semantics/linkable_spec_resolver.py index bbecb8945b..6b3404583e 100644 --- a/metricflow/model/semantics/linkable_spec_resolver.py +++ b/metricflow/model/semantics/linkable_spec_resolver.py @@ -34,7 +34,7 @@ ) from metricflow.model.semantics.linkable_element_set import LinkableElementSet from metricflow.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DEFAULT_TIME_GRANULARITY, EntityReference, ) diff --git a/metricflow/model/semantics/metric_lookup.py b/metricflow/model/semantics/metric_lookup.py index c1791e2e69..62ebc729e9 100644 --- a/metricflow/model/semantics/metric_lookup.py +++ b/metricflow/model/semantics/metric_lookup.py @@ -16,7 +16,7 @@ ) from metricflow.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.specs.spec_classes import TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import TimeDimensionSpec logger = logging.getLogger(__name__) diff --git a/metricflow/model/semantics/semantic_model_lookup.py b/metricflow/model/semantics/semantic_model_lookup.py index 0b9a35d3f0..179e06bf3d 100644 --- a/metricflow/model/semantics/semantic_model_lookup.py +++ b/metricflow/model/semantics/semantic_model_lookup.py @@ -25,7 +25,7 @@ from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.model.semantics.element_group import ElementGrouper from metricflow.model.spec_converters import MeasureConverter -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, LinkableInstanceSpec, diff --git a/metricflow/model/spec_converters.py b/metricflow/model/spec_converters.py index f53c12cd9b..ab701bcc81 100644 --- a/metricflow/model/spec_converters.py +++ b/metricflow/model/spec_converters.py @@ -12,7 +12,7 @@ from dbt_semantic_interfaces.protocols.measure import Measure -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( MeasureSpec, NonAdditiveDimensionSpec, ) diff --git a/metricflow/naming/dunder_scheme.py b/metricflow/naming/dunder_scheme.py index 8f93957578..6f9eca2a09 100644 --- a/metricflow/naming/dunder_scheme.py +++ b/metricflow/naming/dunder_scheme.py @@ -15,7 +15,7 @@ EntityLinkPatternParameterSet, ParameterSetField, ) -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, InstanceSpecSetTransform, diff --git a/metricflow/naming/metric_scheme.py b/metricflow/naming/metric_scheme.py index 44febf5d0a..e607d62b01 100644 --- a/metricflow/naming/metric_scheme.py +++ b/metricflow/naming/metric_scheme.py @@ -7,7 +7,7 @@ from metricflow.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.specs.patterns.metric_pattern import MetricSpecPattern -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, ) diff --git a/metricflow/naming/naming_scheme.py b/metricflow/naming/naming_scheme.py index da21195c02..ab3b42d244 100644 --- a/metricflow/naming/naming_scheme.py +++ b/metricflow/naming/naming_scheme.py @@ -6,7 +6,7 @@ from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern if TYPE_CHECKING: - from metricflow.specs.spec_classes import InstanceSpec + from metricflow.semantics.specs.spec_classes import InstanceSpec class QueryItemNamingScheme(ABC): diff --git a/metricflow/naming/object_builder_scheme.py b/metricflow/naming/object_builder_scheme.py index c7772586e1..b431367488 100644 --- a/metricflow/naming/object_builder_scheme.py +++ b/metricflow/naming/object_builder_scheme.py @@ -21,7 +21,7 @@ ) from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.semantics.specs.patterns.typed_patterns import DimensionPattern, TimeDimensionPattern -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( InstanceSpec, ) diff --git a/metricflow/naming/object_builder_str.py b/metricflow/naming/object_builder_str.py index 770963412c..0b6d4db731 100644 --- a/metricflow/naming/object_builder_str.py +++ b/metricflow/naming/object_builder_str.py @@ -14,7 +14,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.specs.spec_classes import InstanceSpec, InstanceSpecSet, InstanceSpecSetTransform +from metricflow.semantics.specs.spec_classes import InstanceSpec, InstanceSpecSet, InstanceSpecSetTransform class ObjectBuilderNameConverter: diff --git a/metricflow/plan_conversion/column_resolver.py b/metricflow/plan_conversion/column_resolver.py index 8b319cf024..a173632f1a 100644 --- a/metricflow/plan_conversion/column_resolver.py +++ b/metricflow/plan_conversion/column_resolver.py @@ -4,12 +4,7 @@ from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.naming.linkable_spec_name import DUNDER, StructuredLinkableSpecName -from metricflow.specs.column_assoc import ( - ColumnAssociation, - ColumnAssociationResolver, - SingleColumnCorrelationKey, -) -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, @@ -20,6 +15,11 @@ MetricSpec, TimeDimensionSpec, ) +from metricflow.specs.column_assoc import ( + ColumnAssociation, + ColumnAssociationResolver, + SingleColumnCorrelationKey, +) logger = logging.getLogger(__name__) diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index 115c7fba84..2b8b9d3fbb 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -87,8 +87,7 @@ ) from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.protocols.sql_client import SqlEngine -from metricflow.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver, SingleColumnCorrelationKey -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( GroupByMetricSpec, InstanceSpecSet, MeasureSpec, @@ -96,6 +95,7 @@ MetricSpec, TimeDimensionSpec, ) +from metricflow.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver, SingleColumnCorrelationKey from metricflow.sql.optimizer.optimization_levels import ( SqlQueryOptimizationLevel, SqlQueryOptimizerConfiguration, diff --git a/metricflow/plan_conversion/instance_converters.py b/metricflow/plan_conversion/instance_converters.py index 89f1282ca5..642c3d3b28 100644 --- a/metricflow/plan_conversion/instance_converters.py +++ b/metricflow/plan_conversion/instance_converters.py @@ -32,8 +32,7 @@ from metricflow.model.semantics.metric_lookup import MetricLookup from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.plan_conversion.select_column_gen import SelectColumnSet -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, EntitySpec, @@ -46,6 +45,7 @@ MetricInputMeasureSpec, TimeDimensionSpec, ) +from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index 22a5978832..f39864462f 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -19,7 +19,7 @@ from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS, SemanticModelJoinEvaluator from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec +from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec from metricflow.specs.spec_set_transforms import ToElementNameSet from metricflow.sql.sql_plan import SqlJoinType diff --git a/metricflow/plan_conversion/spec_transforms.py b/metricflow/plan_conversion/spec_transforms.py index c9092ae94a..ba0c94cbce 100644 --- a/metricflow/plan_conversion/spec_transforms.py +++ b/metricflow/plan_conversion/spec_transforms.py @@ -4,11 +4,11 @@ from metricflow.plan_conversion.select_column_gen import SelectColumnSet from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr -from metricflow.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( InstanceSpecSet, InstanceSpecSetTransform, ) +from metricflow.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver from metricflow.sql.sql_plan import SqlSelectColumn diff --git a/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py b/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py index c221e5e2d3..aae5f98c0c 100644 --- a/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py +++ b/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py @@ -9,7 +9,7 @@ from metricflow.query.group_by_item.path_prefixable import PathPrefixable from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinkableSpecSet +from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinkableSpecSet @dataclass(frozen=True) diff --git a/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py b/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py index e003cede4e..7073dbb077 100644 --- a/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py +++ b/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py @@ -45,7 +45,7 @@ from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec +from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py b/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py index 699f449c99..01ce5c8e9a 100644 --- a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py +++ b/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py @@ -24,7 +24,7 @@ from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern if TYPE_CHECKING: - from metricflow.specs.spec_classes import LinkableInstanceSpec + from metricflow.semantics.specs.spec_classes import LinkableInstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/query/group_by_item/group_by_item_resolver.py b/metricflow/query/group_by_item/group_by_item_resolver.py index fc0d8d6337..9084551c75 100644 --- a/metricflow/query/group_by_item/group_by_item_resolver.py +++ b/metricflow/query/group_by_item/group_by_item_resolver.py @@ -27,7 +27,7 @@ from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.semantics.specs.patterns.typed_patterns import TimeDimensionPattern -from metricflow.specs.spec_classes import LinkableInstanceSpec, LinkableSpecSet +from metricflow.semantics.specs.spec_classes import LinkableInstanceSpec, LinkableSpecSet logger = logging.getLogger(__name__) diff --git a/metricflow/query/issues/group_by_item_resolver/invalid_use_of_date_part.py b/metricflow/query/issues/group_by_item_resolver/invalid_use_of_date_part.py index df06c82667..477b4732a9 100644 --- a/metricflow/query/issues/group_by_item_resolver/invalid_use_of_date_part.py +++ b/metricflow/query/issues/group_by_item_resolver/invalid_use_of_date_part.py @@ -12,7 +12,7 @@ MetricFlowQueryResolutionIssue, ) from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.specs.spec_classes import LinkableInstanceSpec +from metricflow.semantics.specs.spec_classes import LinkableInstanceSpec @dataclass(frozen=True) diff --git a/metricflow/query/query_parser.py b/metricflow/query/query_parser.py index 6caa85c821..b9296889c2 100644 --- a/metricflow/query/query_parser.py +++ b/metricflow/query/query_parser.py @@ -54,7 +54,7 @@ from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.metric_time_pattern import MetricTimePattern from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, MetricFlowQuerySpec, diff --git a/metricflow/query/query_resolution.py b/metricflow/query/query_resolution.py index 8ea8e036d0..2db8bea1eb 100644 --- a/metricflow/query/query_resolution.py +++ b/metricflow/query/query_resolution.py @@ -11,7 +11,7 @@ from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.specs.spec_classes import MetricFlowQuerySpec +from metricflow.semantics.specs.spec_classes import MetricFlowQuerySpec @dataclass(frozen=True) diff --git a/metricflow/query/query_resolver.py b/metricflow/query/query_resolver.py index 7419732c65..0259085f78 100644 --- a/metricflow/query/query_resolver.py +++ b/metricflow/query/query_resolver.py @@ -48,7 +48,7 @@ from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator from metricflow.query.validation_rules.query_validator import PostResolutionQueryValidator from metricflow.semantics.specs.patterns.match_list_pattern import MatchListSpecPattern -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( InstanceSpec, LinkableInstanceSpec, LinkableSpecSet, diff --git a/metricflow/query/suggestion_generator.py b/metricflow/query/suggestion_generator.py index a14f7750f6..74e27beb7e 100644 --- a/metricflow/query/suggestion_generator.py +++ b/metricflow/query/suggestion_generator.py @@ -8,7 +8,7 @@ from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.spec_classes import InstanceSpec +from metricflow.semantics.specs.spec_classes import InstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/query/validation_rules/metric_time_requirements.py b/metricflow/query/validation_rules/metric_time_requirements.py index 3a076e8b8e..3b83b3531e 100644 --- a/metricflow/query/validation_rules/metric_time_requirements.py +++ b/metricflow/query/validation_rules/metric_time_requirements.py @@ -18,7 +18,7 @@ from metricflow.query.issues.parsing.offset_metric_requires_metric_time import OffsetMetricRequiresMetricTimeIssue from metricflow.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery from metricflow.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule -from metricflow.specs.spec_classes import TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import TimeDimensionSpec class MetricTimeQueryValidationRule(PostResolutionQueryValidationRule): diff --git a/metricflow/semantics/specs/patterns/base_time_grain.py b/metricflow/semantics/specs/patterns/base_time_grain.py index a9399df5c7..2c7b1c5af8 100644 --- a/metricflow/semantics/specs/patterns/base_time_grain.py +++ b/metricflow/semantics/specs/patterns/base_time_grain.py @@ -8,7 +8,7 @@ from metricflow.semantics.specs.patterns.metric_time_pattern import MetricTimePattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, LinkableInstanceSpec, diff --git a/metricflow/semantics/specs/patterns/entity_link_pattern.py b/metricflow/semantics/specs/patterns/entity_link_pattern.py index a3d18078d1..0eb3537743 100644 --- a/metricflow/semantics/specs/patterns/entity_link_pattern.py +++ b/metricflow/semantics/specs/patterns/entity_link_pattern.py @@ -12,7 +12,7 @@ from typing_extensions import override from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.spec_classes import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec +from metricflow.semantics.specs.spec_classes import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/specs/patterns/match_list_pattern.py b/metricflow/semantics/specs/patterns/match_list_pattern.py index 642e675d99..1d26b9e6bb 100644 --- a/metricflow/semantics/specs/patterns/match_list_pattern.py +++ b/metricflow/semantics/specs/patterns/match_list_pattern.py @@ -5,7 +5,7 @@ from typing_extensions import override from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.spec_classes import InstanceSpec +from metricflow.semantics.specs.spec_classes import InstanceSpec class MatchListSpecPattern(SpecPattern): diff --git a/metricflow/semantics/specs/patterns/metric_pattern.py b/metricflow/semantics/specs/patterns/metric_pattern.py index 64c0c4b2c9..373b6ba08b 100644 --- a/metricflow/semantics/specs/patterns/metric_pattern.py +++ b/metricflow/semantics/specs/patterns/metric_pattern.py @@ -7,7 +7,7 @@ from typing_extensions import override from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, MetricSpec, diff --git a/metricflow/semantics/specs/patterns/metric_time_pattern.py b/metricflow/semantics/specs/patterns/metric_time_pattern.py index d65f8460f8..65a10704c5 100644 --- a/metricflow/semantics/specs/patterns/metric_time_pattern.py +++ b/metricflow/semantics/specs/patterns/metric_time_pattern.py @@ -6,7 +6,7 @@ from typing_extensions import override from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, LinkableSpecSet, diff --git a/metricflow/semantics/specs/patterns/none_date_part.py b/metricflow/semantics/specs/patterns/none_date_part.py index bfecaf3cb4..d5cdcbbc57 100644 --- a/metricflow/semantics/specs/patterns/none_date_part.py +++ b/metricflow/semantics/specs/patterns/none_date_part.py @@ -5,7 +5,7 @@ from typing_extensions import override from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, LinkableInstanceSpec, diff --git a/metricflow/semantics/specs/patterns/spec_pattern.py b/metricflow/semantics/specs/patterns/spec_pattern.py index 7bf1347b19..3ba8bd8074 100644 --- a/metricflow/semantics/specs/patterns/spec_pattern.py +++ b/metricflow/semantics/specs/patterns/spec_pattern.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, Sequence if TYPE_CHECKING: - from metricflow.specs.spec_classes import InstanceSpec + from metricflow.semantics.specs.spec_classes import InstanceSpec class SpecPattern(ABC): diff --git a/metricflow/semantics/specs/patterns/typed_patterns.py b/metricflow/semantics/specs/patterns/typed_patterns.py index b21350641f..83253f63b2 100644 --- a/metricflow/semantics/specs/patterns/typed_patterns.py +++ b/metricflow/semantics/specs/patterns/typed_patterns.py @@ -17,7 +17,7 @@ EntityLinkPatternParameterSet, ParameterSetField, ) -from metricflow.specs.spec_classes import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec +from metricflow.semantics.specs.spec_classes import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec @dataclass(frozen=True) diff --git a/metricflow/specs/spec_classes.py b/metricflow/semantics/specs/spec_classes.py similarity index 100% rename from metricflow/specs/spec_classes.py rename to metricflow/semantics/specs/spec_classes.py diff --git a/metricflow/specs/column_assoc.py b/metricflow/specs/column_assoc.py index ed10c1fc85..80325559d7 100644 --- a/metricflow/specs/column_assoc.py +++ b/metricflow/specs/column_assoc.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass -from metricflow.specs.spec_classes import InstanceSpec +from metricflow.semantics.specs.spec_classes import InstanceSpec class ColumnCorrelationKey(ABC): diff --git a/metricflow/specs/dimension_spec_resolver.py b/metricflow/specs/dimension_spec_resolver.py index 25be42f56a..c2b4aa1c27 100644 --- a/metricflow/specs/dimension_spec_resolver.py +++ b/metricflow/specs/dimension_spec_resolver.py @@ -12,7 +12,7 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart -from metricflow.specs.spec_classes import DEFAULT_TIME_GRANULARITY, DimensionSpec, TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import DEFAULT_TIME_GRANULARITY, DimensionSpec, TimeDimensionSpec class DimensionSpecResolver: diff --git a/metricflow/specs/rendered_spec_tracker.py b/metricflow/specs/rendered_spec_tracker.py index 626bad7e4f..ab795f7ed7 100644 --- a/metricflow/specs/rendered_spec_tracker.py +++ b/metricflow/specs/rendered_spec_tracker.py @@ -2,7 +2,7 @@ from typing import List, Sequence -from metricflow.specs.spec_classes import LinkableInstanceSpec +from metricflow.semantics.specs.spec_classes import LinkableInstanceSpec class RenderedSpecTracker: diff --git a/metricflow/specs/spec_set_transforms.py b/metricflow/specs/spec_set_transforms.py index 20da278101..fb466a9567 100644 --- a/metricflow/specs/spec_set_transforms.py +++ b/metricflow/specs/spec_set_transforms.py @@ -2,7 +2,7 @@ from typing import Set -from metricflow.specs.spec_classes import InstanceSpecSet, InstanceSpecSetTransform +from metricflow.semantics.specs.spec_classes import InstanceSpecSet, InstanceSpecSetTransform class ToElementNameSet(InstanceSpecSetTransform[Set[str]]): diff --git a/metricflow/specs/where_filter_transform.py b/metricflow/specs/where_filter_transform.py index a95c6993ab..24a51c62bb 100644 --- a/metricflow/specs/where_filter_transform.py +++ b/metricflow/specs/where_filter_transform.py @@ -9,9 +9,9 @@ from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp +from metricflow.semantics.specs.spec_classes import LinkableSpecSet, WhereFilterSpec from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.specs.rendered_spec_tracker import RenderedSpecTracker -from metricflow.specs.spec_classes import LinkableSpecSet, WhereFilterSpec from metricflow.specs.where_filter_dimension import WhereFilterDimensionFactory from metricflow.specs.where_filter_entity import WhereFilterEntityFactory from metricflow.specs.where_filter_metric import WhereFilterMetricFactory diff --git a/tests/dataflow/builder/test_cyclic_join.py b/tests/dataflow/builder/test_cyclic_join.py index 732813c6f8..28c4119c9c 100644 --- a/tests/dataflow/builder/test_cyclic_join.py +++ b/tests/dataflow/builder/test_cyclic_join.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.references import EntityReference from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index a8aa0e400a..7e9444e83b 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -14,8 +14,7 @@ from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.query.query_parser import MetricFlowQueryParser -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, MetricFlowQuerySpec, @@ -23,6 +22,7 @@ OrderBySpec, TimeDimensionSpec, ) +from metricflow.specs.column_assoc import ColumnAssociationResolver from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests/dataflow/builder/test_measure_additiveness.py b/tests/dataflow/builder/test_measure_additiveness.py index 571b3ba33d..9faf91d7d8 100644 --- a/tests/dataflow/builder/test_measure_additiveness.py +++ b/tests/dataflow/builder/test_measure_additiveness.py @@ -3,7 +3,7 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from metricflow.dataflow.builder.measure_additiveness import group_measure_specs_by_additiveness -from metricflow.specs.spec_classes import MeasureSpec, NonAdditiveDimensionSpec +from metricflow.semantics.specs.spec_classes import MeasureSpec, NonAdditiveDimensionSpec def test_bucket_measure_specs_by_additiveness() -> None: # noqa: D103 diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index 802ff9ca9c..b4e52b01ba 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -18,11 +18,11 @@ from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource -from metricflow.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( LinklessEntitySpec, MeasureSpec, ) +from metricflow.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey from metricflow.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression from metricflow.sql.sql_plan import SqlJoinType, SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode from metricflow.sql.sql_table import SqlTable diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index 12efa6cc66..69226d80b5 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -19,7 +19,7 @@ from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, EntitySpec, diff --git a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py index 43453e054f..b8e5559201 100644 --- a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py +++ b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py @@ -17,7 +17,7 @@ ComputeMetricsBranchCombiner, ComputeMetricsBranchCombinerResult, ) -from metricflow.specs.spec_classes import InstanceSpecSet, MeasureSpec +from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index 48645aa175..d7ce62fcd5 100644 --- a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -34,13 +34,13 @@ from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer from metricflow.dataset.dataset_classes import DataSet from metricflow.query.query_parser import MetricFlowQueryParser -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, MetricFlowQuerySpec, MetricSpec, ) +from metricflow.specs.column_assoc import ColumnAssociationResolver from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index af68ea1936..342b6a775a 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -16,7 +16,7 @@ from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer diff --git a/tests/model/test_where_filter_spec.py b/tests/model/test_where_filter_spec.py index c1d2d29baa..f9f155c3dd 100644 --- a/tests/model/test_where_filter_spec.py +++ b/tests/model/test_where_filter_spec.py @@ -34,8 +34,7 @@ ) from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, @@ -44,6 +43,7 @@ TimeDimensionSpec, WhereFilterSpec, ) +from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.specs.where_filter_transform import WhereSpecFactory from tests.specs.conftest import EXAMPLE_FILTER_LOCATION diff --git a/tests/naming/conftest.py b/tests/naming/conftest.py index d900759ee2..7a4e410b0c 100644 --- a/tests/naming/conftest.py +++ b/tests/naming/conftest.py @@ -7,7 +7,7 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, diff --git a/tests/naming/test_dunder_naming_scheme.py b/tests/naming/test_dunder_naming_scheme.py index bc57f4f56e..3616b06992 100644 --- a/tests/naming/test_dunder_naming_scheme.py +++ b/tests/naming/test_dunder_naming_scheme.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from metricflow.naming.dunder_scheme import DunderNamingScheme -from metricflow.specs.spec_classes import DimensionSpec, EntitySpec, LinkableInstanceSpec, TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import DimensionSpec, EntitySpec, LinkableInstanceSpec, TimeDimensionSpec from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR diff --git a/tests/naming/test_metric_name_scheme.py b/tests/naming/test_metric_name_scheme.py index 9ddf44daf5..91607574e8 100644 --- a/tests/naming/test_metric_name_scheme.py +++ b/tests/naming/test_metric_name_scheme.py @@ -5,7 +5,7 @@ import pytest from metricflow.naming.metric_scheme import MetricNamingScheme -from metricflow.specs.spec_classes import DimensionSpec, InstanceSpec, MetricSpec +from metricflow.semantics.specs.spec_classes import DimensionSpec, InstanceSpec, MetricSpec @pytest.fixture(scope="session") diff --git a/tests/naming/test_object_builder_naming_scheme.py b/tests/naming/test_object_builder_naming_scheme.py index cd2e6b7f4b..5b2174a5a5 100644 --- a/tests/naming/test_object_builder_naming_scheme.py +++ b/tests/naming/test_object_builder_naming_scheme.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, diff --git a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py index e57d502cb8..7c651e34f9 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py @@ -8,7 +8,7 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, diff --git a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index 6fc357f2ef..512995c3a3 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -9,8 +9,8 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index 71581307bf..8a7c886990 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -10,7 +10,7 @@ from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.spec_classes import MetricFlowQuerySpec, MetricSpec +from metricflow.semantics.specs.spec_classes import MetricFlowQuerySpec, MetricSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py index a425921c87..57c30e169d 100644 --- a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py +++ b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py @@ -10,7 +10,7 @@ FilterElements, ) from metricflow.plan_conversion.select_column_gen import SelectColumnSet -from metricflow.specs.spec_classes import InstanceSpecSet, MeasureSpec, MetricInputMeasureSpec +from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec, MetricInputMeasureSpec from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlFunction, diff --git a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py index 5bea25684c..41e7137958 100644 --- a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py +++ b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py @@ -9,7 +9,7 @@ from metricflow.instances import InstanceSet from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription -from metricflow.specs.spec_classes import TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index cb8ca6f699..f8a4c00431 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -9,7 +9,7 @@ from metricflow.plan_conversion.dataflow_to_execution import DataflowToExecutionPlanConverter from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, MetricFlowQuerySpec, diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index de3a125a7f..e8fac9cd46 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -32,8 +32,7 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, InstanceSpecSet, LinkableSpecSet, @@ -47,6 +46,7 @@ TimeDimensionSpec, WhereFilterSpec, ) +from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_plan import SqlJoinType diff --git a/tests/query/group_by_item/test_available_group_by_items.py b/tests/query/group_by_item/test_available_group_by_items.py index c3a6b3a631..d846c7b502 100644 --- a/tests/query/group_by_item/test_available_group_by_items.py +++ b/tests/query/group_by_item/test_available_group_by_items.py @@ -9,7 +9,7 @@ from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.specs.spec_classes import LinkableSpecSet +from metricflow.semantics.specs.spec_classes import LinkableSpecSet from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_linkable_spec_set_snapshot_equal diff --git a/tests/query/test_query_parser.py b/tests/query/test_query_parser.py index d3e7a77287..123f0e4641 100644 --- a/tests/query/test_query_parser.py +++ b/tests/query/test_query_parser.py @@ -18,19 +18,19 @@ from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser -from metricflow.specs.query_param_implementations import ( - DimensionOrEntityParameter, - MetricParameter, - OrderByParameter, - TimeDimensionParameter, -) -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, MetricSpec, OrderBySpec, TimeDimensionSpec, ) +from metricflow.specs.query_param_implementations import ( + DimensionOrEntityParameter, + MetricParameter, + OrderByParameter, + TimeDimensionParameter, +) from tests.model.example_project_configuration import EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE from tests.time.metric_time_dimension import MTD diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests/query_rendering/test_cumulative_metric_rendering.py index aa6080d999..a557105bbc 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests/query_rendering/test_cumulative_metric_rendering.py @@ -16,8 +16,8 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index ea46ec145e..951dfb4d4f 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -15,11 +15,11 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, ) +from metricflow.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check from tests.time.metric_time_dimension import ( diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index 3f40d5599e..bea00fc698 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -17,7 +17,7 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests/query_rendering/test_granularity_date_part_rendering.py index ff5158a4d1..a5b08dc7be 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests/query_rendering/test_granularity_date_part_rendering.py @@ -15,7 +15,7 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, ) diff --git a/tests/query_rendering/test_metric_time_without_metrics.py b/tests/query_rendering/test_metric_time_without_metrics.py index 917a373931..f3082bf4ec 100644 --- a/tests/query_rendering/test_metric_time_without_metrics.py +++ b/tests/query_rendering/test_metric_time_without_metrics.py @@ -11,7 +11,7 @@ from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec +from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check from tests.time.metric_time_dimension import MTD_SPEC_DAY diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index bb9e406d66..d6869de3bd 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -22,13 +22,13 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec, ) +from metricflow.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check from tests.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_WEEK diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests/query_rendering/test_time_spine_join_rendering.py index 8170d3a8f8..9f585ae15f 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests/query_rendering/test_time_spine_join_rendering.py @@ -16,7 +16,7 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, ) diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index 2224dfb10c..4b0b5104e6 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -14,7 +14,7 @@ from metricflow.model.semantics.linkable_element_set import LinkableElementSet from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.protocols.sql_client import SqlClient, SqlEngine -from metricflow.specs.spec_classes import InstanceSpecSet, LinkableSpecSet +from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet from metricflow.test_helpers import assert_snapshot_text_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker diff --git a/tests/specs/patterns/test_entity_link_pattern.py b/tests/specs/patterns/test_entity_link_pattern.py index 22216f82ae..1ff6041bf9 100644 --- a/tests/specs/patterns/test_entity_link_pattern.py +++ b/tests/specs/patterns/test_entity_link_pattern.py @@ -15,7 +15,7 @@ EntityLinkPatternParameterSet, ParameterSetField, ) -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, diff --git a/tests/specs/patterns/test_typed_patterns.py b/tests/specs/patterns/test_typed_patterns.py index 51bdb33df2..17e50270e0 100644 --- a/tests/specs/patterns/test_typed_patterns.py +++ b/tests/specs/patterns/test_typed_patterns.py @@ -25,7 +25,7 @@ GroupByMetricPattern, TimeDimensionPattern, ) -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, diff --git a/tests/specs/test_time_dimension_spec.py b/tests/specs/test_time_dimension_spec.py index 8159e822cf..67d4343b92 100644 --- a/tests/specs/test_time_dimension_spec.py +++ b/tests/specs/test_time_dimension_spec.py @@ -5,7 +5,7 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.specs.spec_classes import TimeDimensionSpec, TimeDimensionSpecField +from metricflow.semantics.specs.spec_classes import TimeDimensionSpec, TimeDimensionSpecField logger = logging.getLogger(__name__) diff --git a/tests/table_snapshot/table_snapshots.py b/tests/table_snapshot/table_snapshots.py index e1d12baab0..7d6d208d9e 100644 --- a/tests/table_snapshot/table_snapshots.py +++ b/tests/table_snapshot/table_snapshots.py @@ -15,7 +15,7 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.implementations.base import FrozenBaseModel -from metricflow.specs.spec_classes import hash_items +from metricflow.semantics.specs.spec_classes import hash_items from metricflow.sql.sql_table import SqlTable from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods diff --git a/tests/test_specs.py b/tests/test_specs.py index a96e46d50f..c44116ad5c 100644 --- a/tests/test_specs.py +++ b/tests/test_specs.py @@ -5,7 +5,7 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, EntitySpec, From 8657abfc5e4c65a4de7b19b4d22e094fafecd5ae Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 13:23:15 -0700 Subject: [PATCH 10/80] Move specs. --- metricflow/dataflow/builder/dataflow_plan_builder.py | 4 ++-- metricflow/dataflow/builder/node_data_set.py | 2 +- metricflow/dataflow/builder/source_node.py | 2 +- metricflow/dataset/convert_semantic_model.py | 2 +- metricflow/dataset/sql_dataset.py | 2 +- metricflow/engine/metricflow_engine.py | 4 ++-- metricflow/instances.py | 2 +- metricflow/model/semantics/linkable_element.py | 2 +- metricflow/model/semantics/linkable_element_set.py | 2 +- metricflow/plan_conversion/column_resolver.py | 10 +++++----- metricflow/plan_conversion/dataflow_to_sql.py | 6 +++++- metricflow/plan_conversion/instance_converters.py | 2 +- metricflow/plan_conversion/node_processor.py | 2 +- metricflow/plan_conversion/spec_transforms.py | 2 +- metricflow/{ => semantics}/specs/column_assoc.py | 0 .../{ => semantics}/specs/dimension_spec_resolver.py | 0 metricflow/{ => semantics}/specs/python_object.py | 2 +- .../specs/query_param_implementations.py | 0 .../{ => semantics}/specs/rendered_spec_tracker.py | 0 .../{ => semantics}/specs/spec_set_transforms.py | 0 .../{ => semantics}/specs/where_filter_dimension.py | 4 ++-- .../{ => semantics}/specs/where_filter_entity.py | 4 ++-- .../{ => semantics}/specs/where_filter_metric.py | 4 ++-- .../specs/where_filter_time_dimension.py | 6 +++--- .../{ => semantics}/specs/where_filter_transform.py | 12 ++++++------ metricflow/specs/__init__.py | 0 metricflow/specs/patterns/__init__.py | 0 tests/dataflow/builder/test_dataflow_plan_builder.py | 2 +- tests/dataflow/builder/test_node_data_set.py | 2 +- .../source_scan/test_source_scan_optimizer.py | 2 +- tests/fixtures/dataflow_fixtures.py | 2 +- tests/fixtures/manifest_fixtures.py | 2 +- tests/integration/test_configured_cases.py | 2 +- tests/model/test_where_filter_spec.py | 4 ++-- .../dataflow_to_sql/test_distinct_values_to_sql.py | 2 +- tests/plan_conversion/test_dataflow_to_sql_plan.py | 2 +- tests/query/test_query_parser.py | 12 ++++++------ .../test_cumulative_metric_rendering.py | 2 +- .../query_rendering/test_derived_metric_rendering.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- tests/specs/test_where_filter_entity.py | 6 +++--- 41 files changed, 62 insertions(+), 58 deletions(-) rename metricflow/{ => semantics}/specs/column_assoc.py (100%) rename metricflow/{ => semantics}/specs/dimension_spec_resolver.py (100%) rename metricflow/{ => semantics}/specs/python_object.py (97%) rename metricflow/{ => semantics}/specs/query_param_implementations.py (100%) rename metricflow/{ => semantics}/specs/rendered_spec_tracker.py (100%) rename metricflow/{ => semantics}/specs/spec_set_transforms.py (100%) rename metricflow/{ => semantics}/specs/where_filter_dimension.py (97%) rename metricflow/{ => semantics}/specs/where_filter_entity.py (96%) rename metricflow/{ => semantics}/specs/where_filter_metric.py (96%) rename metricflow/{ => semantics}/specs/where_filter_time_dimension.py (94%) rename metricflow/{ => semantics}/specs/where_filter_transform.py (89%) delete mode 100644 metricflow/specs/__init__.py delete mode 100644 metricflow/specs/patterns/__init__.py diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index f9579d71f2..b10bee91ba 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -63,6 +63,7 @@ from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( ConstantPropertySpec, CumulativeMeasureDescription, @@ -82,8 +83,7 @@ TimeDimensionSpec, WhereFilterSpec, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.where_filter_transform import WhereSpecFactory +from metricflow.semantics.specs.where_filter_transform import WhereSpecFactory from metricflow.sql.sql_plan import SqlJoinType from metricflow.sql.sql_table import SqlTable diff --git a/metricflow/dataflow/builder/node_data_set.py b/metricflow/dataflow/builder/node_data_set.py index 303a1a6e35..48cc7ac0a0 100644 --- a/metricflow/dataflow/builder/node_data_set.py +++ b/metricflow/dataflow/builder/node_data_set.py @@ -8,7 +8,7 @@ from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.mf_logging.runtime import log_block_runtime from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.specs.column_assoc import ColumnAssociationResolver +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver if TYPE_CHECKING: from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup diff --git a/metricflow/dataflow/builder/source_node.py b/metricflow/dataflow/builder/source_node.py index b893518cbd..c1d0dbebed 100644 --- a/metricflow/dataflow/builder/source_node.py +++ b/metricflow/dataflow/builder/source_node.py @@ -13,7 +13,7 @@ from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.specs.column_assoc import ColumnAssociationResolver +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver @dataclass(frozen=True) diff --git a/metricflow/dataset/convert_semantic_model.py b/metricflow/dataset/convert_semantic_model.py index 171f8a3774..2be2cbe6fb 100644 --- a/metricflow/dataset/convert_semantic_model.py +++ b/metricflow/dataset/convert_semantic_model.py @@ -31,6 +31,7 @@ from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.model.spec_converters import MeasureConverter from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DEFAULT_TIME_GRANULARITY, DimensionSpec, @@ -38,7 +39,6 @@ EntitySpec, TimeDimensionSpec, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, diff --git a/metricflow/dataset/sql_dataset.py b/metricflow/dataset/sql_dataset.py index d6a83e16f2..27ceec4152 100644 --- a/metricflow/dataset/sql_dataset.py +++ b/metricflow/dataset/sql_dataset.py @@ -10,8 +10,8 @@ from metricflow.instances import ( InstanceSet, ) +from metricflow.semantics.specs.column_assoc import ColumnAssociation from metricflow.semantics.specs.spec_classes import DimensionSpec, EntitySpec, TimeDimensionSpec -from metricflow.specs.column_assoc import ColumnAssociation from metricflow.sql.sql_plan import ( SqlQueryPlanNode, SqlSelectStatementNode, diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 3cecd544fb..975944f242 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -50,9 +50,9 @@ from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.random_id import random_id +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow.semantics.specs.query_param_implementations import SavedQueryParameter from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.query_param_implementations import SavedQueryParameter from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.sql_table import SqlTable from metricflow.telemetry.models import TelemetryLevel diff --git a/metricflow/instances.py b/metricflow/instances.py index 4ea51dee90..151c07708e 100644 --- a/metricflow/instances.py +++ b/metricflow/instances.py @@ -10,6 +10,7 @@ from dbt_semantic_interfaces.references import MetricModelReference, SemanticModelElementReference from metricflow.aggregation_properties import AggregationState +from metricflow.semantics.specs.column_assoc import ColumnAssociation from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, @@ -21,7 +22,6 @@ MetricSpec, TimeDimensionSpec, ) -from metricflow.specs.column_assoc import ColumnAssociation # Type for the specification used in the instance. SpecT = TypeVar("SpecT", bound=InstanceSpec) diff --git a/metricflow/model/semantics/linkable_element.py b/metricflow/model/semantics/linkable_element.py index c469f22da6..58e5ddafbd 100644 --- a/metricflow/model/semantics/linkable_element.py +++ b/metricflow/model/semantics/linkable_element.py @@ -10,7 +10,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.specs.spec_classes import EntityReference +from metricflow.semantics.specs.spec_classes import EntityReference class LinkableElementType(Enum): diff --git a/metricflow/model/semantics/linkable_element_set.py b/metricflow/model/semantics/linkable_element_set.py index cf8de27a03..626ad26420 100644 --- a/metricflow/model/semantics/linkable_element_set.py +++ b/metricflow/model/semantics/linkable_element_set.py @@ -12,7 +12,7 @@ LinkableEntity, LinkableMetric, ) -from metricflow.specs.spec_classes import ( +from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, diff --git a/metricflow/plan_conversion/column_resolver.py b/metricflow/plan_conversion/column_resolver.py index a173632f1a..a27bd0e06b 100644 --- a/metricflow/plan_conversion/column_resolver.py +++ b/metricflow/plan_conversion/column_resolver.py @@ -4,6 +4,11 @@ from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.naming.linkable_spec_name import DUNDER, StructuredLinkableSpecName +from metricflow.semantics.specs.column_assoc import ( + ColumnAssociation, + ColumnAssociationResolver, + SingleColumnCorrelationKey, +) from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, @@ -15,11 +20,6 @@ MetricSpec, TimeDimensionSpec, ) -from metricflow.specs.column_assoc import ( - ColumnAssociation, - ColumnAssociationResolver, - SingleColumnCorrelationKey, -) logger = logging.getLogger(__name__) diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index 2b8b9d3fbb..dd99c47452 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -87,6 +87,11 @@ ) from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.protocols.sql_client import SqlEngine +from metricflow.semantics.specs.column_assoc import ( + ColumnAssociation, + ColumnAssociationResolver, + SingleColumnCorrelationKey, +) from metricflow.semantics.specs.spec_classes import ( GroupByMetricSpec, InstanceSpecSet, @@ -95,7 +100,6 @@ MetricSpec, TimeDimensionSpec, ) -from metricflow.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver, SingleColumnCorrelationKey from metricflow.sql.optimizer.optimization_levels import ( SqlQueryOptimizationLevel, SqlQueryOptimizerConfiguration, diff --git a/metricflow/plan_conversion/instance_converters.py b/metricflow/plan_conversion/instance_converters.py index 642c3d3b28..1d13e9c1d0 100644 --- a/metricflow/plan_conversion/instance_converters.py +++ b/metricflow/plan_conversion/instance_converters.py @@ -32,6 +32,7 @@ from metricflow.model.semantics.metric_lookup import MetricLookup from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.plan_conversion.select_column_gen import SelectColumnSet +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, @@ -45,7 +46,6 @@ MetricInputMeasureSpec, TimeDimensionSpec, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index f39864462f..8ed5d0f455 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -20,7 +20,7 @@ from metricflow.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS, SemanticModelJoinEvaluator from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec -from metricflow.specs.spec_set_transforms import ToElementNameSet +from metricflow.semantics.specs.spec_set_transforms import ToElementNameSet from metricflow.sql.sql_plan import SqlJoinType logger = logging.getLogger(__name__) diff --git a/metricflow/plan_conversion/spec_transforms.py b/metricflow/plan_conversion/spec_transforms.py index ba0c94cbce..7acb630e39 100644 --- a/metricflow/plan_conversion/spec_transforms.py +++ b/metricflow/plan_conversion/spec_transforms.py @@ -4,11 +4,11 @@ from metricflow.plan_conversion.select_column_gen import SelectColumnSet from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr +from metricflow.semantics.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( InstanceSpecSet, InstanceSpecSetTransform, ) -from metricflow.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver from metricflow.sql.sql_plan import SqlSelectColumn diff --git a/metricflow/specs/column_assoc.py b/metricflow/semantics/specs/column_assoc.py similarity index 100% rename from metricflow/specs/column_assoc.py rename to metricflow/semantics/specs/column_assoc.py diff --git a/metricflow/specs/dimension_spec_resolver.py b/metricflow/semantics/specs/dimension_spec_resolver.py similarity index 100% rename from metricflow/specs/dimension_spec_resolver.py rename to metricflow/semantics/specs/dimension_spec_resolver.py diff --git a/metricflow/specs/python_object.py b/metricflow/semantics/specs/python_object.py similarity index 97% rename from metricflow/specs/python_object.py rename to metricflow/semantics/specs/python_object.py index 9dc916daea..0a47bbaf97 100644 --- a/metricflow/specs/python_object.py +++ b/metricflow/semantics/specs/python_object.py @@ -8,7 +8,7 @@ from metricflow.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.protocols.query_parameter import GroupByParameter from metricflow.query.query_exceptions import InvalidQueryException -from metricflow.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter +from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter def parse_object_builder_naming_scheme(group_by_item_name: str) -> GroupByParameter: diff --git a/metricflow/specs/query_param_implementations.py b/metricflow/semantics/specs/query_param_implementations.py similarity index 100% rename from metricflow/specs/query_param_implementations.py rename to metricflow/semantics/specs/query_param_implementations.py diff --git a/metricflow/specs/rendered_spec_tracker.py b/metricflow/semantics/specs/rendered_spec_tracker.py similarity index 100% rename from metricflow/specs/rendered_spec_tracker.py rename to metricflow/semantics/specs/rendered_spec_tracker.py diff --git a/metricflow/specs/spec_set_transforms.py b/metricflow/semantics/specs/spec_set_transforms.py similarity index 100% rename from metricflow/specs/spec_set_transforms.py rename to metricflow/semantics/specs/spec_set_transforms.py diff --git a/metricflow/specs/where_filter_dimension.py b/metricflow/semantics/specs/where_filter_dimension.py similarity index 97% rename from metricflow/specs/where_filter_dimension.py rename to metricflow/semantics/specs/where_filter_dimension.py index 231c8c5c05..92b47f2613 100644 --- a/metricflow/specs/where_filter_dimension.py +++ b/metricflow/semantics/specs/where_filter_dimension.py @@ -24,8 +24,8 @@ FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.rendered_spec_tracker import RenderedSpecTracker +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker logger = logging.getLogger(__name__) diff --git a/metricflow/specs/where_filter_entity.py b/metricflow/semantics/specs/where_filter_entity.py similarity index 96% rename from metricflow/specs/where_filter_entity.py rename to metricflow/semantics/specs/where_filter_entity.py index cbdde3d4a9..cad81510f9 100644 --- a/metricflow/specs/where_filter_entity.py +++ b/metricflow/semantics/specs/where_filter_entity.py @@ -19,8 +19,8 @@ FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.rendered_spec_tracker import RenderedSpecTracker +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker class WhereFilterEntity(ProtocolHint[QueryInterfaceEntity]): diff --git a/metricflow/specs/where_filter_metric.py b/metricflow/semantics/specs/where_filter_metric.py similarity index 96% rename from metricflow/specs/where_filter_metric.py rename to metricflow/semantics/specs/where_filter_metric.py index d635a01587..9bd0e9cf8e 100644 --- a/metricflow/specs/where_filter_metric.py +++ b/metricflow/semantics/specs/where_filter_metric.py @@ -16,8 +16,8 @@ FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.rendered_spec_tracker import RenderedSpecTracker +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker class WhereFilterMetric(ProtocolHint[QueryInterfaceMetric]): diff --git a/metricflow/specs/where_filter_time_dimension.py b/metricflow/semantics/specs/where_filter_time_dimension.py similarity index 94% rename from metricflow/specs/where_filter_time_dimension.py rename to metricflow/semantics/specs/where_filter_time_dimension.py index a97cf9a53c..acc97e3d5e 100644 --- a/metricflow/specs/where_filter_time_dimension.py +++ b/metricflow/semantics/specs/where_filter_time_dimension.py @@ -21,9 +21,9 @@ FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.rendered_spec_tracker import RenderedSpecTracker -from metricflow.specs.where_filter_dimension import WhereFilterDimension +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker +from metricflow.semantics.specs.where_filter_dimension import WhereFilterDimension class WhereFilterTimeDimension(WhereFilterDimension): diff --git a/metricflow/specs/where_filter_transform.py b/metricflow/semantics/specs/where_filter_transform.py similarity index 89% rename from metricflow/specs/where_filter_transform.py rename to metricflow/semantics/specs/where_filter_transform.py index 24a51c62bb..b83ecbaa6c 100644 --- a/metricflow/specs/where_filter_transform.py +++ b/metricflow/semantics/specs/where_filter_transform.py @@ -9,13 +9,13 @@ from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker from metricflow.semantics.specs.spec_classes import LinkableSpecSet, WhereFilterSpec -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.rendered_spec_tracker import RenderedSpecTracker -from metricflow.specs.where_filter_dimension import WhereFilterDimensionFactory -from metricflow.specs.where_filter_entity import WhereFilterEntityFactory -from metricflow.specs.where_filter_metric import WhereFilterMetricFactory -from metricflow.specs.where_filter_time_dimension import WhereFilterTimeDimensionFactory +from metricflow.semantics.specs.where_filter_dimension import WhereFilterDimensionFactory +from metricflow.semantics.specs.where_filter_entity import WhereFilterEntityFactory +from metricflow.semantics.specs.where_filter_metric import WhereFilterMetricFactory +from metricflow.semantics.specs.where_filter_time_dimension import WhereFilterTimeDimensionFactory from metricflow.sql.sql_bind_parameters import SqlBindParameters logger = logging.getLogger(__name__) diff --git a/metricflow/specs/__init__.py b/metricflow/specs/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/metricflow/specs/patterns/__init__.py b/metricflow/specs/patterns/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index 7e9444e83b..8a9e2244d1 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -14,6 +14,7 @@ from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, @@ -22,7 +23,6 @@ OrderBySpec, TimeDimensionSpec, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index b4e52b01ba..0e8a459444 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -18,11 +18,11 @@ from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource +from metricflow.semantics.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey from metricflow.semantics.specs.spec_classes import ( LinklessEntitySpec, MeasureSpec, ) -from metricflow.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey from metricflow.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression from metricflow.sql.sql_plan import SqlJoinType, SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode from metricflow.sql.sql_table import SqlTable diff --git a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index d7ce62fcd5..532123949d 100644 --- a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -34,13 +34,13 @@ from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer from metricflow.dataset.dataset_classes import DataSet from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, MetricFlowQuerySpec, MetricSpec, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests/fixtures/dataflow_fixtures.py b/tests/fixtures/dataflow_fixtures.py index dc47725968..6690c581c1 100644 --- a/tests/fixtures/dataflow_fixtures.py +++ b/tests/fixtures/dataflow_fixtures.py @@ -8,7 +8,7 @@ from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser -from metricflow.specs.column_assoc import ColumnAssociationResolver +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.sql_client_fixtures import sql_client # noqa: F401, F403 diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index 28c04219d4..ab8b0f53bf 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -29,7 +29,7 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser -from metricflow.specs.column_assoc import ColumnAssociationResolver +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.id_fixtures import IdNumberSpace, patch_id_generators_helper from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/integration/test_configured_cases.py b/tests/integration/test_configured_cases.py index 2af09222b0..fec4cfab0f 100644 --- a/tests/integration/test_configured_cases.py +++ b/tests/integration/test_configured_cases.py @@ -21,7 +21,7 @@ ) from metricflow.protocols.query_parameter import DimensionOrEntityQueryParameter from metricflow.protocols.sql_client import SqlClient -from metricflow.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter +from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlColumnReference, diff --git a/tests/model/test_where_filter_spec.py b/tests/model/test_where_filter_spec.py index f9f155c3dd..456aad74d6 100644 --- a/tests/model/test_where_filter_spec.py +++ b/tests/model/test_where_filter_spec.py @@ -34,6 +34,7 @@ ) from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, @@ -43,8 +44,7 @@ TimeDimensionSpec, WhereFilterSpec, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.where_filter_transform import WhereSpecFactory +from metricflow.semantics.specs.where_filter_transform import WhereSpecFactory from tests.specs.conftest import EXAMPLE_FILTER_LOCATION logger = logging.getLogger(__name__) diff --git a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index 512995c3a3..917a13aa07 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -9,8 +9,8 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec -from metricflow.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index e8fac9cd46..0269ba6c68 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -32,6 +32,7 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, InstanceSpecSet, @@ -46,7 +47,6 @@ TimeDimensionSpec, WhereFilterSpec, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_plan import SqlJoinType diff --git a/tests/query/test_query_parser.py b/tests/query/test_query_parser.py index 123f0e4641..f24ee2ae80 100644 --- a/tests/query/test_query_parser.py +++ b/tests/query/test_query_parser.py @@ -18,6 +18,12 @@ from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.specs.query_param_implementations import ( + DimensionOrEntityParameter, + MetricParameter, + OrderByParameter, + TimeDimensionParameter, +) from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, @@ -25,12 +31,6 @@ OrderBySpec, TimeDimensionSpec, ) -from metricflow.specs.query_param_implementations import ( - DimensionOrEntityParameter, - MetricParameter, - OrderByParameter, - TimeDimensionParameter, -) from tests.model.example_project_configuration import EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE from tests.time.metric_time_dimension import MTD diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests/query_rendering/test_cumulative_metric_rendering.py index a557105bbc..552e2bed16 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests/query_rendering/test_cumulative_metric_rendering.py @@ -16,8 +16,8 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec -from metricflow.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index 951dfb4d4f..b173985fdc 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -15,11 +15,11 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check from tests.time.metric_time_dimension import ( diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index d6869de3bd..09f2c97894 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -22,13 +22,13 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec, ) -from metricflow.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check from tests.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_WEEK diff --git a/tests/specs/test_where_filter_entity.py b/tests/specs/test_where_filter_entity.py index 92e1a519e5..8e10e797ec 100644 --- a/tests/specs/test_where_filter_entity.py +++ b/tests/specs/test_where_filter_entity.py @@ -4,9 +4,9 @@ from metricflow.errors.error_classes import InvalidQuerySyntax from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp -from metricflow.specs.column_assoc import ColumnAssociationResolver -from metricflow.specs.rendered_spec_tracker import RenderedSpecTracker -from metricflow.specs.where_filter_entity import WhereFilterEntity +from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker +from metricflow.semantics.specs.where_filter_entity import WhereFilterEntity from tests.specs.conftest import EXAMPLE_FILTER_LOCATION From 38f689edea3111bf6b19611587667db3736260ff Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 13:28:40 -0700 Subject: [PATCH 11/80] Move naming. --- metricflow/engine/metricflow_engine.py | 2 +- metricflow/engine/models.py | 2 +- metricflow/plan_conversion/column_resolver.py | 2 +- .../filter_spec_resolution/filter_spec_resolver.py | 2 +- metricflow/query/group_by_item/group_by_item_resolver.py | 2 +- .../group_by_item_resolver/ambiguous_group_by_item.py | 2 +- .../issues/group_by_item_resolver/multiple_join_paths.py | 2 +- .../query/issues/group_by_item_resolver/no_common_items.py | 2 +- metricflow/query/query_parser.py | 6 +++--- metricflow/query/query_resolver.py | 2 +- metricflow/query/resolver_inputs/base_resolver_inputs.py | 2 +- metricflow/query/resolver_inputs/query_resolver_inputs.py | 4 ++-- metricflow/query/suggestion_generator.py | 2 +- metricflow/{ => semantics}/naming/__init__.py | 0 metricflow/{ => semantics}/naming/dunder_scheme.py | 2 +- metricflow/{ => semantics}/naming/linkable_spec_name.py | 0 metricflow/{ => semantics}/naming/metric_scheme.py | 2 +- metricflow/{ => semantics}/naming/naming_scheme.py | 0 metricflow/{ => semantics}/naming/object_builder_scheme.py | 4 ++-- metricflow/{ => semantics}/naming/object_builder_str.py | 0 metricflow/semantics/specs/python_object.py | 2 +- metricflow/semantics/specs/query_param_implementations.py | 6 +++--- metricflow/semantics/specs/spec_classes.py | 2 +- tests/model/test_where_filter_spec.py | 2 +- tests/naming/test_dunder_naming_scheme.py | 2 +- tests/naming/test_metric_name_scheme.py | 2 +- tests/naming/test_object_builder_naming_scheme.py | 2 +- tests/query/group_by_item/conftest.py | 4 ++-- .../filter_spec_resolution/test_spec_lookup.py | 2 +- tests/query/group_by_item/test_matching_item_for_filters.py | 4 ++-- .../query/group_by_item/test_matching_item_for_querying.py | 4 ++-- tests/query_rendering/test_derived_metric_rendering.py | 2 +- tests/snapshot_utils.py | 4 ++-- 33 files changed, 39 insertions(+), 39 deletions(-) rename metricflow/{ => semantics}/naming/__init__.py (100%) rename metricflow/{ => semantics}/naming/dunder_scheme.py (98%) rename metricflow/{ => semantics}/naming/linkable_spec_name.py (100%) rename metricflow/{ => semantics}/naming/metric_scheme.py (94%) rename metricflow/{ => semantics}/naming/naming_scheme.py (100%) rename metricflow/{ => semantics}/naming/object_builder_scheme.py (97%) rename metricflow/{ => semantics}/naming/object_builder_str.py (100%) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 975944f242..7e597a980c 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -38,7 +38,6 @@ LinkableElementProperty, ) from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.convert_to_execution_plan import ConvertToExecutionPlanResult from metricflow.plan_conversion.dataflow_to_execution import ( @@ -50,6 +49,7 @@ from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.random_id import random_id +from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.query_param_implementations import SavedQueryParameter from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec diff --git a/metricflow/engine/models.py b/metricflow/engine/models.py index 58c87bf62e..4caadabab6 100644 --- a/metricflow/engine/models.py +++ b/metricflow/engine/models.py @@ -28,7 +28,7 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.entity_type import EntityType -from metricflow.naming.linkable_spec_name import StructuredLinkableSpecName +from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.semantics.specs.spec_classes import DimensionSpec, EntityReference diff --git a/metricflow/plan_conversion/column_resolver.py b/metricflow/plan_conversion/column_resolver.py index a27bd0e06b..8b0ccc6bdb 100644 --- a/metricflow/plan_conversion/column_resolver.py +++ b/metricflow/plan_conversion/column_resolver.py @@ -3,7 +3,7 @@ import logging from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.naming.linkable_spec_name import DUNDER, StructuredLinkableSpecName +from metricflow.semantics.naming.linkable_spec_name import DUNDER, StructuredLinkableSpecName from metricflow.semantics.specs.column_assoc import ( ColumnAssociation, ColumnAssociationResolver, diff --git a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py b/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py index e8c94cda41..16f51d17a2 100644 --- a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py +++ b/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py @@ -12,7 +12,6 @@ from metricflow.mf_logging.runtime import log_runtime from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.naming.object_builder_str import ObjectBuilderNameConverter from metricflow.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import WhereFilterPatternFactory @@ -45,6 +44,7 @@ from metricflow.query.issues.issues_base import ( MetricFlowQueryResolutionIssueSet, ) +from metricflow.semantics.naming.object_builder_str import ObjectBuilderNameConverter logger = logging.getLogger(__name__) diff --git a/metricflow/query/group_by_item/group_by_item_resolver.py b/metricflow/query/group_by_item/group_by_item_resolver.py index 9084551c75..501902cfe0 100644 --- a/metricflow/query/group_by_item/group_by_item_resolver.py +++ b/metricflow/query/group_by_item/group_by_item_resolver.py @@ -12,7 +12,6 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.query.group_by_item.candidate_push_down.push_down_visitor import ( PushDownResult, _PushDownGroupByItemCandidatesVisitor, @@ -24,6 +23,7 @@ MetricFlowQueryResolutionIssueSet, ) from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.semantics.specs.patterns.typed_patterns import TimeDimensionPattern diff --git a/metricflow/query/issues/group_by_item_resolver/ambiguous_group_by_item.py b/metricflow/query/issues/group_by_item_resolver/ambiguous_group_by_item.py index 35522ae621..d68e4c9ec5 100644 --- a/metricflow/query/issues/group_by_item_resolver/ambiguous_group_by_item.py +++ b/metricflow/query/issues/group_by_item_resolver/ambiguous_group_by_item.py @@ -7,7 +7,6 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.issues.issues_base import ( @@ -15,6 +14,7 @@ MetricFlowQueryResolutionIssue, ) from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme @dataclass(frozen=True) diff --git a/metricflow/query/issues/group_by_item_resolver/multiple_join_paths.py b/metricflow/query/issues/group_by_item_resolver/multiple_join_paths.py index c989fdbd84..d00a64a568 100644 --- a/metricflow/query/issues/group_by_item_resolver/multiple_join_paths.py +++ b/metricflow/query/issues/group_by_item_resolver/multiple_join_paths.py @@ -7,7 +7,6 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.issues.issues_base import ( @@ -15,6 +14,7 @@ MetricFlowQueryResolutionIssue, ) from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme @dataclass(frozen=True) diff --git a/metricflow/query/issues/group_by_item_resolver/no_common_items.py b/metricflow/query/issues/group_by_item_resolver/no_common_items.py index 475acd9ce9..5a35b2e954 100644 --- a/metricflow/query/issues/group_by_item_resolver/no_common_items.py +++ b/metricflow/query/issues/group_by_item_resolver/no_common_items.py @@ -7,7 +7,6 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath @@ -16,6 +15,7 @@ MetricFlowQueryResolutionIssue, ) from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme @dataclass(frozen=True) diff --git a/metricflow/query/query_parser.py b/metricflow/query/query_parser.py index b9296889c2..f5404b2578 100644 --- a/metricflow/query/query_parser.py +++ b/metricflow/query/query_parser.py @@ -20,9 +20,6 @@ from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.naming.dunder_scheme import DunderNamingScheme -from metricflow.naming.metric_scheme import MetricNamingScheme -from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.protocols.query_parameter import ( GroupByParameter, MetricQueryParameter, @@ -51,6 +48,9 @@ ResolverInputForQuery, ResolverInputForQueryLevelWhereFilterIntersection, ) +from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme +from metricflow.semantics.naming.metric_scheme import MetricNamingScheme +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.metric_time_pattern import MetricTimePattern from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern diff --git a/metricflow/query/query_resolver.py b/metricflow/query/query_resolver.py index 0259085f78..c55b3baf09 100644 --- a/metricflow/query/query_resolver.py +++ b/metricflow/query/query_resolver.py @@ -9,7 +9,6 @@ from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.naming.metric_scheme import MetricNamingScheme from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import WhereFilterPatternFactory from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_resolver import ( @@ -47,6 +46,7 @@ ) from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator from metricflow.query.validation_rules.query_validator import PostResolutionQueryValidator +from metricflow.semantics.naming.metric_scheme import MetricNamingScheme from metricflow.semantics.specs.patterns.match_list_pattern import MatchListSpecPattern from metricflow.semantics.specs.spec_classes import ( InstanceSpec, diff --git a/metricflow/query/resolver_inputs/base_resolver_inputs.py b/metricflow/query/resolver_inputs/base_resolver_inputs.py index 356aee4e84..b28519d635 100644 --- a/metricflow/query/resolver_inputs/base_resolver_inputs.py +++ b/metricflow/query/resolver_inputs/base_resolver_inputs.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from typing import Optional -from metricflow.naming.naming_scheme import QueryItemNamingScheme +from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern diff --git a/metricflow/query/resolver_inputs/query_resolver_inputs.py b/metricflow/query/resolver_inputs/query_resolver_inputs.py index 0d07dc4c5d..5f60534c2f 100644 --- a/metricflow/query/resolver_inputs/query_resolver_inputs.py +++ b/metricflow/query/resolver_inputs/query_resolver_inputs.py @@ -13,11 +13,11 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.naming.metric_scheme import MetricNamingScheme -from metricflow.naming.naming_scheme import QueryItemNamingScheme from metricflow.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.resolver_inputs.base_resolver_inputs import InputPatternDescription, MetricFlowQueryResolverInput +from metricflow.semantics.naming.metric_scheme import MetricNamingScheme +from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.specs.patterns.metric_pattern import MetricSpecPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern diff --git a/metricflow/query/suggestion_generator.py b/metricflow/query/suggestion_generator.py index 74e27beb7e..71bdbd3fb5 100644 --- a/metricflow/query/suggestion_generator.py +++ b/metricflow/query/suggestion_generator.py @@ -3,8 +3,8 @@ import logging from typing import Sequence, Tuple -from metricflow.naming.naming_scheme import QueryItemNamingScheme from metricflow.query.similarity import top_fuzzy_matches +from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern diff --git a/metricflow/naming/__init__.py b/metricflow/semantics/naming/__init__.py similarity index 100% rename from metricflow/naming/__init__.py rename to metricflow/semantics/naming/__init__.py diff --git a/metricflow/naming/dunder_scheme.py b/metricflow/semantics/naming/dunder_scheme.py similarity index 98% rename from metricflow/naming/dunder_scheme.py rename to metricflow/semantics/naming/dunder_scheme.py index 6f9eca2a09..fe876b915e 100644 --- a/metricflow/naming/dunder_scheme.py +++ b/metricflow/semantics/naming/dunder_scheme.py @@ -9,7 +9,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.naming.naming_scheme import QueryItemNamingScheme +from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, diff --git a/metricflow/naming/linkable_spec_name.py b/metricflow/semantics/naming/linkable_spec_name.py similarity index 100% rename from metricflow/naming/linkable_spec_name.py rename to metricflow/semantics/naming/linkable_spec_name.py diff --git a/metricflow/naming/metric_scheme.py b/metricflow/semantics/naming/metric_scheme.py similarity index 94% rename from metricflow/naming/metric_scheme.py rename to metricflow/semantics/naming/metric_scheme.py index e607d62b01..8e324848fc 100644 --- a/metricflow/naming/metric_scheme.py +++ b/metricflow/semantics/naming/metric_scheme.py @@ -5,7 +5,7 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.naming.naming_scheme import QueryItemNamingScheme +from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.specs.patterns.metric_pattern import MetricSpecPattern from metricflow.semantics.specs.spec_classes import ( InstanceSpec, diff --git a/metricflow/naming/naming_scheme.py b/metricflow/semantics/naming/naming_scheme.py similarity index 100% rename from metricflow/naming/naming_scheme.py rename to metricflow/semantics/naming/naming_scheme.py diff --git a/metricflow/naming/object_builder_scheme.py b/metricflow/semantics/naming/object_builder_scheme.py similarity index 97% rename from metricflow/naming/object_builder_scheme.py rename to metricflow/semantics/naming/object_builder_scheme.py index b431367488..8417d17467 100644 --- a/metricflow/naming/object_builder_scheme.py +++ b/metricflow/semantics/naming/object_builder_scheme.py @@ -12,8 +12,8 @@ from dbt_semantic_interfaces.references import EntityReference from typing_extensions import override -from metricflow.naming.naming_scheme import QueryItemNamingScheme -from metricflow.naming.object_builder_str import ObjectBuilderNameConverter +from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow.semantics.naming.object_builder_str import ObjectBuilderNameConverter from metricflow.semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, diff --git a/metricflow/naming/object_builder_str.py b/metricflow/semantics/naming/object_builder_str.py similarity index 100% rename from metricflow/naming/object_builder_str.py rename to metricflow/semantics/naming/object_builder_str.py diff --git a/metricflow/semantics/specs/python_object.py b/metricflow/semantics/specs/python_object.py index 0a47bbaf97..939b401f19 100644 --- a/metricflow/semantics/specs/python_object.py +++ b/metricflow/semantics/specs/python_object.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.call_parameter_sets import ParseWhereFilterException from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter -from metricflow.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.protocols.query_parameter import GroupByParameter from metricflow.query.query_exceptions import InvalidQueryException +from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter diff --git a/metricflow/semantics/specs/query_param_implementations.py b/metricflow/semantics/specs/query_param_implementations.py index 13d3f5d5f4..fce452e73d 100644 --- a/metricflow/semantics/specs/query_param_implementations.py +++ b/metricflow/semantics/specs/query_param_implementations.py @@ -9,9 +9,6 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.naming.linkable_spec_name import StructuredLinkableSpecName -from metricflow.naming.metric_scheme import MetricNamingScheme -from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.protocols.query_parameter import ( DimensionOrEntityQueryParameter, InputOrderByParameter, @@ -23,6 +20,9 @@ ResolverInputForMetric, ResolverInputForOrderByItem, ) +from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName +from metricflow.semantics.naming.metric_scheme import MetricNamingScheme +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, diff --git a/metricflow/semantics/specs/spec_classes.py b/metricflow/semantics/specs/spec_classes.py index 41ee7e6f38..40bd813aa7 100644 --- a/metricflow/semantics/specs/spec_classes.py +++ b/metricflow/semantics/specs/spec_classes.py @@ -38,8 +38,8 @@ from metricflow.aggregation_properties import AggregationState from metricflow.collection_helpers.merger import Mergeable from metricflow.filters.time_constraint import TimeRangeConstraint -from metricflow.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp +from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_column_type import SqlColumnType from metricflow.sql.sql_plan import SqlJoinType diff --git a/tests/model/test_where_filter_spec.py b/tests/model/test_where_filter_spec.py index 456aad74d6..0c4a2eeca5 100644 --- a/tests/model/test_where_filter_spec.py +++ b/tests/model/test_where_filter_spec.py @@ -24,7 +24,6 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( CallParameterSet, @@ -34,6 +33,7 @@ ) from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/naming/test_dunder_naming_scheme.py b/tests/naming/test_dunder_naming_scheme.py index 3616b06992..91d4273b16 100644 --- a/tests/naming/test_dunder_naming_scheme.py +++ b/tests/naming/test_dunder_naming_scheme.py @@ -7,7 +7,7 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart -from metricflow.naming.dunder_scheme import DunderNamingScheme +from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme from metricflow.semantics.specs.spec_classes import DimensionSpec, EntitySpec, LinkableInstanceSpec, TimeDimensionSpec from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR diff --git a/tests/naming/test_metric_name_scheme.py b/tests/naming/test_metric_name_scheme.py index 91607574e8..1540e0795c 100644 --- a/tests/naming/test_metric_name_scheme.py +++ b/tests/naming/test_metric_name_scheme.py @@ -4,7 +4,7 @@ import pytest -from metricflow.naming.metric_scheme import MetricNamingScheme +from metricflow.semantics.naming.metric_scheme import MetricNamingScheme from metricflow.semantics.specs.spec_classes import DimensionSpec, InstanceSpec, MetricSpec diff --git a/tests/naming/test_object_builder_naming_scheme.py b/tests/naming/test_object_builder_naming_scheme.py index 5b2174a5a5..5bd93372ec 100644 --- a/tests/naming/test_object_builder_naming_scheme.py +++ b/tests/naming/test_object_builder_naming_scheme.py @@ -7,7 +7,7 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart -from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, diff --git a/tests/query/group_by_item/conftest.py b/tests/query/group_by_item/conftest.py index b70cb6d770..8c4b03254a 100644 --- a/tests/query/group_by_item/conftest.py +++ b/tests/query/group_by_item/conftest.py @@ -12,10 +12,10 @@ from dbt_semantic_interfaces.references import MetricReference from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.naming.naming_scheme import QueryItemNamingScheme -from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder +from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId diff --git a/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py b/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py index c38fbf1178..2a57392540 100644 --- a/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py +++ b/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py @@ -22,7 +22,6 @@ from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.naming.naming_scheme import QueryItemNamingScheme from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( DefaultWhereFilterPatternFactory, ) @@ -31,6 +30,7 @@ ) from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_resolver import WhereFilterSpecResolver from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform from tests.model.modify.modify_manifest import modify_manifest diff --git a/tests/query/group_by_item/test_matching_item_for_filters.py b/tests/query/group_by_item/test_matching_item_for_filters.py index e2b0f11e2a..75778882c0 100644 --- a/tests/query/group_by_item/test_matching_item_for_filters.py +++ b/tests/query/group_by_item/test_matching_item_for_filters.py @@ -8,10 +8,10 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.naming.naming_scheme import QueryItemNamingScheme -from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_object_snapshot_equal diff --git a/tests/query/group_by_item/test_matching_item_for_querying.py b/tests/query/group_by_item/test_matching_item_for_querying.py index 8626bf3eaa..f3cb9c93a9 100644 --- a/tests/query/group_by_item/test_matching_item_for_querying.py +++ b/tests/query/group_by_item/test_matching_item_for_querying.py @@ -10,13 +10,13 @@ from dbt_semantic_interfaces.references import MetricReference from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.naming.naming_scheme import QueryItemNamingScheme -from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) +from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_object_snapshot_equal diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index b173985fdc..b9d0eb9c90 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -11,10 +11,10 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.filters.time_constraint import TimeRangeConstraint -from metricflow.naming.dunder_scheme import DunderNamingScheme from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index 4b0b5104e6..f4255204c0 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -11,9 +11,9 @@ from metricflow.dataflow.dataflow_plan import DataflowPlan from metricflow.execution.execution_plan import ExecutionPlan from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.model.semantics.linkable_element_set import LinkableElementSet -from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.model.semantics.linkable_spec_resolver import LinkableElementSet from metricflow.protocols.sql_client import SqlClient, SqlEngine +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet from metricflow.test_helpers import assert_snapshot_text_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker From e9e04f4c481bb37159e89b0e4a37bcad2a97eb22 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 13:33:12 -0700 Subject: [PATCH 12/80] Move filters. --- metricflow/dataflow/builder/dataflow_plan_builder.py | 2 +- metricflow/dataflow/nodes/constrain_time.py | 2 +- metricflow/dataflow/nodes/join_over_time.py | 2 +- metricflow/dataflow/nodes/join_to_time_spine.py | 2 +- metricflow/engine/metricflow_engine.py | 2 +- metricflow/plan_conversion/dataflow_to_sql.py | 2 +- metricflow/plan_conversion/node_processor.py | 2 +- metricflow/query/query_parser.py | 4 ++-- metricflow/{ => semantics}/filters/__init__.py | 0 metricflow/{ => semantics}/filters/merge_where.py | 0 metricflow/{ => semantics}/filters/time_constraint.py | 0 metricflow/semantics/specs/spec_classes.py | 2 +- tests/dataflow/builder/test_dataflow_plan_builder.py | 2 +- tests/plan_conversion/test_dataflow_to_sql_plan.py | 2 +- tests/plan_conversion/test_time_spine.py | 2 +- tests/query/test_query_parser.py | 2 +- tests/query_rendering/test_cumulative_metric_rendering.py | 2 +- tests/query_rendering/test_derived_metric_rendering.py | 2 +- tests/query_rendering/test_metric_time_without_metrics.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- 20 files changed, 18 insertions(+), 18 deletions(-) rename metricflow/{ => semantics}/filters/__init__.py (100%) rename metricflow/{ => semantics}/filters/merge_where.py (100%) rename metricflow/{ => semantics}/filters/time_constraint.py (100%) diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index b10bee91ba..9134eb107a 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -55,7 +55,6 @@ from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer from metricflow.dataset.dataset_classes import DataSet from metricflow.errors.error_classes import UnableToSatisfyQueryError -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime @@ -63,6 +62,7 @@ from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( ConstantPropertySpec, diff --git a/metricflow/dataflow/nodes/constrain_time.py b/metricflow/dataflow/nodes/constrain_time.py index 6a0ddbc16f..72866051e8 100644 --- a/metricflow/dataflow/nodes/constrain_time.py +++ b/metricflow/dataflow/nodes/constrain_time.py @@ -6,7 +6,7 @@ from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput -from metricflow.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_over_time.py b/metricflow/dataflow/nodes/join_over_time.py index f60f48d047..f8f2636a92 100644 --- a/metricflow/dataflow/nodes/join_over_time.py +++ b/metricflow/dataflow/nodes/join_over_time.py @@ -8,7 +8,7 @@ from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dag.mf_dag import DisplayedProperty, NodeId from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_to_time_spine.py b/metricflow/dataflow/nodes/join_to_time_spine.py index a3833b764b..76e51e0ff0 100644 --- a/metricflow/dataflow/nodes/join_to_time_spine.py +++ b/metricflow/dataflow/nodes/join_to_time_spine.py @@ -9,7 +9,7 @@ from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from metricflow.sql.sql_plan import SqlJoinType from metricflow.visitor import VisitorOutputT diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 7e597a980c..3315d28448 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -29,7 +29,6 @@ from metricflow.errors.error_classes import ExecutionException from metricflow.execution.execution_plan import ExecutionPlan, SqlQuery from metricflow.execution.executor import SequentialPlanExecutor -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup @@ -49,6 +48,7 @@ from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.random_id import random_id +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.query_param_implementations import SavedQueryParameter diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index dd99c47452..af30f15344 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -41,7 +41,6 @@ from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.dataset.dataset_classes import DataSet from metricflow.dataset.sql_dataset import SqlDataSet -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.instances import ( GroupByMetricInstance, InstanceSet, @@ -87,6 +86,7 @@ ) from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.protocols.sql_client import SqlEngine +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ( ColumnAssociation, ColumnAssociationResolver, diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index 8ed5d0f455..f1f0d17517 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -15,10 +15,10 @@ from metricflow.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS, SemanticModelJoinEvaluator from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec from metricflow.semantics.specs.spec_set_transforms import ToElementNameSet from metricflow.sql.sql_plan import SqlJoinType diff --git a/metricflow/query/query_parser.py b/metricflow/query/query_parser.py index f5404b2578..bef98d8587 100644 --- a/metricflow/query/query_parser.py +++ b/metricflow/query/query_parser.py @@ -14,8 +14,6 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from metricflow.assert_one_arg import assert_at_most_one_arg_set -from metricflow.filters.merge_where import merge_to_single_where_filter -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime @@ -48,6 +46,8 @@ ResolverInputForQuery, ResolverInputForQueryLevelWhereFilterIntersection, ) +from metricflow.semantics.filters.merge_where import merge_to_single_where_filter +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme from metricflow.semantics.naming.metric_scheme import MetricNamingScheme from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme diff --git a/metricflow/filters/__init__.py b/metricflow/semantics/filters/__init__.py similarity index 100% rename from metricflow/filters/__init__.py rename to metricflow/semantics/filters/__init__.py diff --git a/metricflow/filters/merge_where.py b/metricflow/semantics/filters/merge_where.py similarity index 100% rename from metricflow/filters/merge_where.py rename to metricflow/semantics/filters/merge_where.py diff --git a/metricflow/filters/time_constraint.py b/metricflow/semantics/filters/time_constraint.py similarity index 100% rename from metricflow/filters/time_constraint.py rename to metricflow/semantics/filters/time_constraint.py diff --git a/metricflow/semantics/specs/spec_classes.py b/metricflow/semantics/specs/spec_classes.py index 40bd813aa7..c28ec8a45c 100644 --- a/metricflow/semantics/specs/spec_classes.py +++ b/metricflow/semantics/specs/spec_classes.py @@ -37,8 +37,8 @@ from metricflow.aggregation_properties import AggregationState from metricflow.collection_helpers.merger import Mergeable -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_column_type import SqlColumnType diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index 8a9e2244d1..8482051f17 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -12,8 +12,8 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet from metricflow.errors.error_classes import UnableToSatisfyQueryError -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index 0269ba6c68..b42689e040 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -28,10 +28,10 @@ from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode from metricflow.dataflow.nodes.where_filter import WhereConstraintNode from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/plan_conversion/test_time_spine.py b/tests/plan_conversion/test_time_spine.py index 8feef5120c..e5c5057f9d 100644 --- a/tests/plan_conversion/test_time_spine.py +++ b/tests/plan_conversion/test_time_spine.py @@ -2,9 +2,9 @@ from pandas import DataFrame -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.time.time_constants import ISO8601_PYTHON_TS_FORMAT diff --git a/tests/query/test_query_parser.py b/tests/query/test_query_parser.py index f24ee2ae80..e3562c63e6 100644 --- a/tests/query/test_query_parser.py +++ b/tests/query/test_query_parser.py @@ -14,10 +14,10 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.query_param_implementations import ( DimensionOrEntityParameter, MetricParameter, diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests/query_rendering/test_cumulative_metric_rendering.py index 552e2bed16..5409b39e6e 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests/query_rendering/test_cumulative_metric_rendering.py @@ -12,10 +12,10 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index b9d0eb9c90..4bb046cfef 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -10,10 +10,10 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/query_rendering/test_metric_time_without_metrics.py b/tests/query_rendering/test_metric_time_without_metrics.py index f3082bf4ec..2a4db8d66d 100644 --- a/tests/query_rendering/test_metric_time_without_metrics.py +++ b/tests/query_rendering/test_metric_time_without_metrics.py @@ -8,9 +8,9 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index 09f2c97894..e07b7d4694 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -18,10 +18,10 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet -from metricflow.filters.time_constraint import TimeRangeConstraint from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, From 91529ecb45e649d5b40fad074129292ddebb69e5 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 15:13:07 -0700 Subject: [PATCH 13/80] Move model. --- dbt-metricflow/dbt_metricflow/cli/cli_context.py | 2 +- .../cli/dbt_connectors/dbt_config_accessor.py | 2 +- dbt-metricflow/dbt_metricflow/cli/main.py | 2 +- metricflow/dataflow/builder/dataflow_plan_builder.py | 2 +- metricflow/dataflow/builder/node_data_set.py | 2 +- metricflow/dataflow/builder/node_evaluator.py | 4 ++-- metricflow/dataflow/builder/partitions.py | 2 +- metricflow/dataflow/builder/source_node.py | 2 +- metricflow/dataset/convert_semantic_model.py | 4 ++-- metricflow/engine/metricflow_engine.py | 12 ++++++------ metricflow/plan_conversion/column_resolver.py | 2 +- metricflow/plan_conversion/dataflow_to_sql.py | 2 +- metricflow/plan_conversion/instance_converters.py | 4 ++-- metricflow/plan_conversion/node_processor.py | 4 ++-- .../candidate_push_down/push_down_visitor.py | 4 ++-- .../filter_spec_resolution/filter_spec_resolver.py | 2 +- .../query/group_by_item/group_by_item_resolver.py | 2 +- .../group_by_item/resolution_dag/dag_builder.py | 2 +- .../resolution_dag/input_metric_location.py | 2 +- metricflow/query/query_parser.py | 2 +- metricflow/query/query_resolver.py | 2 +- .../query/validation_rules/base_validation_rule.py | 2 +- .../query/validation_rules/duplicate_metric.py | 2 +- .../validation_rules/metric_time_requirements.py | 2 +- metricflow/query/validation_rules/query_validator.py | 2 +- metricflow/{ => semantics}/model/__init__.py | 0 .../model/data_warehouse_model_validator.py | 2 +- .../{ => semantics}/model/dbt_manifest_parser.py | 2 +- metricflow/{ => semantics}/model/graph.py | 0 .../{ => semantics}/model/object_to_reference.py | 0 .../model/semantic_manifest_lookup.py | 4 ++-- .../{ => semantics}/model/semantics/__init__.py | 0 .../{ => semantics}/model/semantics/element_group.py | 0 .../model/semantics/linkable_element.py | 0 .../model/semantics/linkable_element_set.py | 2 +- .../model/semantics/linkable_spec_resolver.py | 8 ++++---- .../{ => semantics}/model/semantics/metric_lookup.py | 10 +++++----- .../model/semantics/semantic_model_container.py | 0 .../model/semantics/semantic_model_join_evaluator.py | 2 +- .../model/semantics/semantic_model_lookup.py | 4 ++-- metricflow/{ => semantics}/model/spec_converters.py | 0 .../model/transformations/__init__.py | 0 .../transformations/dedupe_metric_input_measures.py | 0 metricflow/semantics/specs/spec_classes.py | 4 ++-- tests/dataflow/builder/test_node_data_set.py | 2 +- tests/dataflow/builder/test_node_evaluator.py | 2 +- tests/examples/test_node_sql.py | 2 +- tests/fixtures/cli_fixtures.py | 2 +- tests/fixtures/manifest_fixtures.py | 2 +- tests/fixtures/table_fixtures.py | 2 +- tests/integration/conftest.py | 2 +- tests/integration/test_configured_cases.py | 2 +- tests/integration/test_rendered_query.py | 2 +- tests/model/semantics/test_linkable_element_set.py | 4 ++-- tests/model/semantics/test_linkable_spec_resolver.py | 8 ++++---- .../semantics/test_semantic_model_join_evaluator.py | 4 ++-- tests/model/test_data_warehouse_tasks.py | 4 ++-- tests/model/test_semantic_model_container.py | 6 +++--- ...create_select_columns_with_measures_aggregated.py | 2 +- .../test_create_validity_window_join_description.py | 2 +- tests/plan_conversion/test_dataflow_to_execution.py | 2 +- tests/plan_conversion/test_time_spine.py | 2 +- tests/query/group_by_item/conftest.py | 2 +- .../filter_spec_resolution/test_spec_lookup.py | 2 +- .../resolution_dag/test_resolution_dags.py | 2 +- .../group_by_item/test_available_group_by_items.py | 2 +- .../group_by_item/test_matching_item_for_filters.py | 2 +- .../group_by_item/test_matching_item_for_querying.py | 2 +- tests/query/test_ambiguous_entity_path.py | 2 +- tests/query/test_query_parser.py | 2 +- tests/query/test_suggestions.py | 2 +- tests/snapshot_utils.py | 2 +- 72 files changed, 90 insertions(+), 90 deletions(-) rename metricflow/{ => semantics}/model/__init__.py (100%) rename metricflow/{ => semantics}/model/data_warehouse_model_validator.py (99%) rename metricflow/{ => semantics}/model/dbt_manifest_parser.py (93%) rename metricflow/{ => semantics}/model/graph.py (100%) rename metricflow/{ => semantics}/model/object_to_reference.py (100%) rename metricflow/{ => semantics}/model/semantic_manifest_lookup.py (93%) rename metricflow/{ => semantics}/model/semantics/__init__.py (100%) rename metricflow/{ => semantics}/model/semantics/element_group.py (100%) rename metricflow/{ => semantics}/model/semantics/linkable_element.py (100%) rename metricflow/{ => semantics}/model/semantics/linkable_element_set.py (99%) rename metricflow/{ => semantics}/model/semantics/linkable_spec_resolver.py (98%) rename metricflow/{ => semantics}/model/semantics/metric_lookup.py (95%) rename metricflow/{ => semantics}/model/semantics/semantic_model_container.py (100%) rename metricflow/{ => semantics}/model/semantics/semantic_model_join_evaluator.py (99%) rename metricflow/{ => semantics}/model/semantics/semantic_model_lookup.py (99%) rename metricflow/{ => semantics}/model/spec_converters.py (100%) rename metricflow/{ => semantics}/model/transformations/__init__.py (100%) rename metricflow/{ => semantics}/model/transformations/dedupe_metric_input_measures.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/cli_context.py b/dbt-metricflow/dbt_metricflow/cli/cli_context.py index 83abb96676..129d9915e3 100644 --- a/dbt-metricflow/dbt_metricflow/cli/cli_context.py +++ b/dbt-metricflow/dbt_metricflow/cli/cli_context.py @@ -10,8 +10,8 @@ from dbt_metricflow.cli.dbt_connectors.adapter_backed_client import AdapterBackedSqlClient from dbt_metricflow.cli.dbt_connectors.dbt_config_accessor import dbtArtifacts, dbtProjectMetadata from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup logger = logging.getLogger(__name__) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py index dbe9ebec53..724d442de2 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py @@ -16,7 +16,7 @@ from metricflow.errors.error_classes import ModelCreationException from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.model.dbt_manifest_parser import parse_manifest_from_dbt_generated_manifest +from metricflow.semantics.model.dbt_manifest_parser import parse_manifest_from_dbt_generated_manifest logger = logging.getLogger(__name__) diff --git a/dbt-metricflow/dbt_metricflow/cli/main.py b/dbt-metricflow/dbt_metricflow/cli/main.py index fa1ffe8831..26a2e8be17 100644 --- a/dbt-metricflow/dbt_metricflow/cli/main.py +++ b/dbt-metricflow/dbt_metricflow/cli/main.py @@ -37,7 +37,7 @@ ) from metricflow.dag.dag_visualization import display_dag_as_svg from metricflow.engine.metricflow_engine import MetricFlowExplainResult, MetricFlowQueryRequest, MetricFlowQueryResult -from metricflow.model.data_warehouse_model_validator import DataWarehouseModelValidator +from metricflow.semantics.model.data_warehouse_model_validator import DataWarehouseModelValidator from metricflow.telemetry.models import TelemetryLevel from metricflow.telemetry.reporter import TelemetryReporter, log_call diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index 9134eb107a..f8976dfb61 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -58,11 +58,11 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( ConstantPropertySpec, diff --git a/metricflow/dataflow/builder/node_data_set.py b/metricflow/dataflow/builder/node_data_set.py index 48cc7ac0a0..0636825ae0 100644 --- a/metricflow/dataflow/builder/node_data_set.py +++ b/metricflow/dataflow/builder/node_data_set.py @@ -11,7 +11,7 @@ from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver if TYPE_CHECKING: - from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup + from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup class DataflowPlanNodeOutputDataSetResolver(DataflowToSqlQueryPlanConverter): diff --git a/metricflow/dataflow/builder/node_evaluator.py b/metricflow/dataflow/builder/node_evaluator.py index 411cdac69c..4f9c98e97f 100644 --- a/metricflow/dataflow/builder/node_evaluator.py +++ b/metricflow/dataflow/builder/node_evaluator.py @@ -38,9 +38,9 @@ from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.instances import InstanceSet from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator -from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription +from metricflow.semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator +from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.spec_classes import ( InstanceSpecSet, LinkableInstanceSpec, diff --git a/metricflow/dataflow/builder/partitions.py b/metricflow/dataflow/builder/partitions.py index b71c8f1158..a930e0c575 100644 --- a/metricflow/dataflow/builder/partitions.py +++ b/metricflow/dataflow/builder/partitions.py @@ -5,7 +5,7 @@ from typing import List, Sequence, Tuple from metricflow.dataset.dataset_classes import DataSet -from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.spec_classes import ( DimensionSpec, InstanceSpecSet, diff --git a/metricflow/dataflow/builder/source_node.py b/metricflow/dataflow/builder/source_node.py index c1d0dbebed..b08ed990ec 100644 --- a/metricflow/dataflow/builder/source_node.py +++ b/metricflow/dataflow/builder/source_node.py @@ -12,7 +12,7 @@ from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/dataset/convert_semantic_model.py b/metricflow/dataset/convert_semantic_model.py index 2be2cbe6fb..1c4b8a7628 100644 --- a/metricflow/dataset/convert_semantic_model.py +++ b/metricflow/dataset/convert_semantic_model.py @@ -28,9 +28,9 @@ MeasureInstance, TimeDimensionInstance, ) -from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.model.spec_converters import MeasureConverter from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource +from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow.semantics.model.spec_converters import MeasureConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DEFAULT_TIME_GRANULARITY, diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 3315d28448..9738144113 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -31,12 +31,6 @@ from metricflow.execution.executor import SequentialPlanExecutor from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.model.semantics.linkable_element import ( - LinkableDimension, - LinkableElementProperty, -) -from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.convert_to_execution_plan import ConvertToExecutionPlanResult from metricflow.plan_conversion.dataflow_to_execution import ( @@ -49,6 +43,12 @@ from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.random_id import random_id from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.model.semantics.linkable_element import ( + LinkableDimension, + LinkableElementProperty, +) +from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.query_param_implementations import SavedQueryParameter diff --git a/metricflow/plan_conversion/column_resolver.py b/metricflow/plan_conversion/column_resolver.py index 8b0ccc6bdb..8f51a4f708 100644 --- a/metricflow/plan_conversion/column_resolver.py +++ b/metricflow/plan_conversion/column_resolver.py @@ -2,7 +2,7 @@ import logging -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.linkable_spec_name import DUNDER, StructuredLinkableSpecName from metricflow.semantics.specs.column_assoc import ( ColumnAssociation, diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index af30f15344..4dca10c55a 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -49,7 +49,6 @@ TimeDimensionInstance, ) from metricflow.mf_logging.formatting import indent -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.plan_conversion.instance_converters import ( AddGroupByMetrics, @@ -87,6 +86,7 @@ from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.protocols.sql_client import SqlEngine from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ( ColumnAssociation, ColumnAssociationResolver, diff --git a/metricflow/plan_conversion/instance_converters.py b/metricflow/plan_conversion/instance_converters.py index 1d13e9c1d0..df636ac841 100644 --- a/metricflow/plan_conversion/instance_converters.py +++ b/metricflow/plan_conversion/instance_converters.py @@ -29,9 +29,9 @@ MetricInstance, TimeDimensionInstance, ) -from metricflow.model.semantics.metric_lookup import MetricLookup -from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.plan_conversion.select_column_gen import SelectColumnSet +from metricflow.semantics.model.semantics.metric_lookup import MetricLookup +from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index f1f0d17517..0baaec7146 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -16,9 +16,9 @@ from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS, SemanticModelJoinEvaluator -from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS, SemanticModelJoinEvaluator +from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec from metricflow.semantics.specs.spec_set_transforms import ToElementNameSet from metricflow.sql.sql_plan import SqlJoinType diff --git a/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py b/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py index 7073dbb077..3bc89feb9a 100644 --- a/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py +++ b/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py @@ -11,8 +11,6 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat, mf_pformat_many -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.model.semantics.linkable_element import LinkableElementProperty from metricflow.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, @@ -42,6 +40,8 @@ MetricFlowQueryResolutionIssueSet, ) from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.model.semantics.linkable_element import LinkableElementProperty from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern diff --git a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py b/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py index 16f51d17a2..baf9e17203 100644 --- a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py +++ b/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py @@ -11,7 +11,6 @@ from typing_extensions import override from metricflow.mf_logging.runtime import log_runtime -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import WhereFilterPatternFactory @@ -44,6 +43,7 @@ from metricflow.query.issues.issues_base import ( MetricFlowQueryResolutionIssueSet, ) +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.object_builder_str import ObjectBuilderNameConverter logger = logging.getLogger(__name__) diff --git a/metricflow/query/group_by_item/group_by_item_resolver.py b/metricflow/query/group_by_item/group_by_item_resolver.py index 501902cfe0..e16edacbbe 100644 --- a/metricflow/query/group_by_item/group_by_item_resolver.py +++ b/metricflow/query/group_by_item/group_by_item_resolver.py @@ -11,7 +11,6 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.candidate_push_down.push_down_visitor import ( PushDownResult, _PushDownGroupByItemCandidatesVisitor, @@ -23,6 +22,7 @@ MetricFlowQueryResolutionIssueSet, ) from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern diff --git a/metricflow/query/group_by_item/resolution_dag/dag_builder.py b/metricflow/query/group_by_item/resolution_dag/dag_builder.py index e92950e014..b98c2f5215 100644 --- a/metricflow/query/group_by_item/resolution_dag/dag_builder.py +++ b/metricflow/query/group_by_item/resolution_dag/dag_builder.py @@ -8,7 +8,6 @@ from dbt_semantic_interfaces.references import MeasureReference, MetricReference from dbt_semantic_interfaces.type_enums import MetricType -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.query.group_by_item.resolution_dag.input_metric_location import InputMetricDefinitionLocation from metricflow.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( @@ -23,6 +22,7 @@ from metricflow.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup logger = logging.getLogger(__name__) diff --git a/metricflow/query/group_by_item/resolution_dag/input_metric_location.py b/metricflow/query/group_by_item/resolution_dag/input_metric_location.py index e017756ca8..a339a5d9da 100644 --- a/metricflow/query/group_by_item/resolution_dag/input_metric_location.py +++ b/metricflow/query/group_by_item/resolution_dag/input_metric_location.py @@ -5,7 +5,7 @@ from dbt_semantic_interfaces.protocols import MetricInput from dbt_semantic_interfaces.references import MetricReference -from metricflow.model.semantics.metric_lookup import MetricLookup +from metricflow.semantics.model.semantics.metric_lookup import MetricLookup @dataclass(frozen=True) diff --git a/metricflow/query/query_parser.py b/metricflow/query/query_parser.py index bef98d8587..2b46558a22 100644 --- a/metricflow/query/query_parser.py +++ b/metricflow/query/query_parser.py @@ -17,7 +17,6 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.protocols.query_parameter import ( GroupByParameter, MetricQueryParameter, @@ -48,6 +47,7 @@ ) from metricflow.semantics.filters.merge_where import merge_to_single_where_filter from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme from metricflow.semantics.naming.metric_scheme import MetricNamingScheme from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme diff --git a/metricflow/query/query_resolver.py b/metricflow/query/query_resolver.py index c55b3baf09..898812e25b 100644 --- a/metricflow/query/query_resolver.py +++ b/metricflow/query/query_resolver.py @@ -8,7 +8,6 @@ from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import WhereFilterPatternFactory from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_resolver import ( @@ -46,6 +45,7 @@ ) from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator from metricflow.query.validation_rules.query_validator import PostResolutionQueryValidator +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.metric_scheme import MetricNamingScheme from metricflow.semantics.specs.patterns.match_list_pattern import MatchListSpecPattern from metricflow.semantics.specs.spec_classes import ( diff --git a/metricflow/query/validation_rules/base_validation_rule.py b/metricflow/query/validation_rules/base_validation_rule.py index 3f2186e878..ccdffc04e6 100644 --- a/metricflow/query/validation_rules/base_validation_rule.py +++ b/metricflow/query/validation_rules/base_validation_rule.py @@ -6,10 +6,10 @@ from dbt_semantic_interfaces.protocols import Metric, WhereFilterIntersection from dbt_semantic_interfaces.references import MetricReference -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet from metricflow.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup class PostResolutionQueryValidationRule(ABC): diff --git a/metricflow/query/validation_rules/duplicate_metric.py b/metricflow/query/validation_rules/duplicate_metric.py index 923968016c..d1888fdc1d 100644 --- a/metricflow/query/validation_rules/duplicate_metric.py +++ b/metricflow/query/validation_rules/duplicate_metric.py @@ -7,12 +7,12 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet from metricflow.query.issues.parsing.duplicate_metric import DuplicateMetricIssue from metricflow.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery from metricflow.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup logger = logging.getLogger(__name__) diff --git a/metricflow/query/validation_rules/metric_time_requirements.py b/metricflow/query/validation_rules/metric_time_requirements.py index 3b83b3531e..a046c61afe 100644 --- a/metricflow/query/validation_rules/metric_time_requirements.py +++ b/metricflow/query/validation_rules/metric_time_requirements.py @@ -9,7 +9,6 @@ from dbt_semantic_interfaces.type_enums import MetricType from typing_extensions import override -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet from metricflow.query.issues.parsing.cumulative_metric_requires_metric_time import ( @@ -18,6 +17,7 @@ from metricflow.query.issues.parsing.offset_metric_requires_metric_time import OffsetMetricRequiresMetricTimeIssue from metricflow.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery from metricflow.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import TimeDimensionSpec diff --git a/metricflow/query/validation_rules/query_validator.py b/metricflow/query/validation_rules/query_validator.py index de87b2038e..28c3c4da1b 100644 --- a/metricflow/query/validation_rules/query_validator.py +++ b/metricflow/query/validation_rules/query_validator.py @@ -4,7 +4,6 @@ from typing_extensions import override -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( @@ -28,6 +27,7 @@ from metricflow.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule from metricflow.query.validation_rules.duplicate_metric import DuplicateMetricValidationRule from metricflow.query.validation_rules.metric_time_requirements import MetricTimeQueryValidationRule +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup class PostResolutionQueryValidator: diff --git a/metricflow/model/__init__.py b/metricflow/semantics/model/__init__.py similarity index 100% rename from metricflow/model/__init__.py rename to metricflow/semantics/model/__init__.py diff --git a/metricflow/model/data_warehouse_model_validator.py b/metricflow/semantics/model/data_warehouse_model_validator.py similarity index 99% rename from metricflow/model/data_warehouse_model_validator.py rename to metricflow/semantics/model/data_warehouse_model_validator.py index 1f3702be35..ff42fd1c3d 100644 --- a/metricflow/model/data_warehouse_model_validator.py +++ b/metricflow/semantics/model/data_warehouse_model_validator.py @@ -36,11 +36,11 @@ from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.dataset_classes import DataSet from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec from metricflow.sql.sql_bind_parameters import SqlBindParameters diff --git a/metricflow/model/dbt_manifest_parser.py b/metricflow/semantics/model/dbt_manifest_parser.py similarity index 93% rename from metricflow/model/dbt_manifest_parser.py rename to metricflow/semantics/model/dbt_manifest_parser.py index 0e53410084..2fa24ad357 100644 --- a/metricflow/model/dbt_manifest_parser.py +++ b/metricflow/semantics/model/dbt_manifest_parser.py @@ -16,7 +16,7 @@ PydanticSemanticManifestTransformer, ) -from metricflow.model.transformations.dedupe_metric_input_measures import DedupeMetricInputMeasuresRule +from metricflow.semantics.model.transformations.dedupe_metric_input_measures import DedupeMetricInputMeasuresRule def parse_manifest_from_dbt_generated_manifest(manifest_json_string: str) -> PydanticSemanticManifest: diff --git a/metricflow/model/graph.py b/metricflow/semantics/model/graph.py similarity index 100% rename from metricflow/model/graph.py rename to metricflow/semantics/model/graph.py diff --git a/metricflow/model/object_to_reference.py b/metricflow/semantics/model/object_to_reference.py similarity index 100% rename from metricflow/model/object_to_reference.py rename to metricflow/semantics/model/object_to_reference.py diff --git a/metricflow/model/semantic_manifest_lookup.py b/metricflow/semantics/model/semantic_manifest_lookup.py similarity index 93% rename from metricflow/model/semantic_manifest_lookup.py rename to metricflow/semantics/model/semantic_manifest_lookup.py index 6d47938975..bf0619297b 100644 --- a/metricflow/model/semantic_manifest_lookup.py +++ b/metricflow/semantics/model/semantic_manifest_lookup.py @@ -6,9 +6,9 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.model.semantics.metric_lookup import MetricLookup -from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.plan_conversion.time_spine import TimeSpineSource +from metricflow.semantics.model.semantics.metric_lookup import MetricLookup +from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/model/semantics/__init__.py b/metricflow/semantics/model/semantics/__init__.py similarity index 100% rename from metricflow/model/semantics/__init__.py rename to metricflow/semantics/model/semantics/__init__.py diff --git a/metricflow/model/semantics/element_group.py b/metricflow/semantics/model/semantics/element_group.py similarity index 100% rename from metricflow/model/semantics/element_group.py rename to metricflow/semantics/model/semantics/element_group.py diff --git a/metricflow/model/semantics/linkable_element.py b/metricflow/semantics/model/semantics/linkable_element.py similarity index 100% rename from metricflow/model/semantics/linkable_element.py rename to metricflow/semantics/model/semantics/linkable_element.py diff --git a/metricflow/model/semantics/linkable_element_set.py b/metricflow/semantics/model/semantics/linkable_element_set.py similarity index 99% rename from metricflow/model/semantics/linkable_element_set.py rename to metricflow/semantics/model/semantics/linkable_element_set.py index 626ad26420..a2363f35e0 100644 --- a/metricflow/model/semantics/linkable_element_set.py +++ b/metricflow/semantics/model/semantics/linkable_element_set.py @@ -4,7 +4,7 @@ from dataclasses import dataclass, field from typing import Dict, FrozenSet, List, Sequence, Set, Tuple -from metricflow.model.semantics.linkable_element import ( +from metricflow.semantics.model.semantics.linkable_element import ( ElementPathKey, LinkableDimension, LinkableElementProperty, diff --git a/metricflow/model/semantics/linkable_spec_resolver.py b/metricflow/semantics/model/semantics/linkable_spec_resolver.py similarity index 98% rename from metricflow/model/semantics/linkable_spec_resolver.py rename to metricflow/semantics/model/semantics/linkable_spec_resolver.py index 6b3404583e..3584d7c4a2 100644 --- a/metricflow/model/semantics/linkable_spec_resolver.py +++ b/metricflow/semantics/model/semantics/linkable_spec_resolver.py @@ -22,7 +22,7 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.errors.error_classes import UnknownMetricLinkingError from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.model.semantics.linkable_element import ( +from metricflow.semantics.model.semantics.linkable_element import ( ElementPathKey, LinkableDimension, LinkableElementProperty, @@ -32,15 +32,15 @@ SemanticModelJoinPath, SemanticModelJoinPathElement, ) -from metricflow.model.semantics.linkable_element_set import LinkableElementSet -from metricflow.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator +from metricflow.semantics.model.semantics.linkable_element_set import LinkableElementSet +from metricflow.semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator from metricflow.semantics.specs.spec_classes import ( DEFAULT_TIME_GRANULARITY, EntityReference, ) if TYPE_CHECKING: - from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup + from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup logger = logging.getLogger(__name__) diff --git a/metricflow/model/semantics/metric_lookup.py b/metricflow/semantics/model/semantics/metric_lookup.py similarity index 95% rename from metricflow/model/semantics/metric_lookup.py rename to metricflow/semantics/model/semantics/metric_lookup.py index 62ebc729e9..2cb29b9efe 100644 --- a/metricflow/model/semantics/metric_lookup.py +++ b/metricflow/semantics/model/semantics/metric_lookup.py @@ -9,13 +9,13 @@ from dbt_semantic_interfaces.references import MeasureReference, MetricReference from metricflow.errors.error_classes import DuplicateMetricError, MetricNotFoundError, NonExistentMeasureError -from metricflow.model.semantics.linkable_element import LinkableElementProperty -from metricflow.model.semantics.linkable_element_set import LinkableElementSet -from metricflow.model.semantics.linkable_spec_resolver import ( +from metricflow.semantics.model.semantics.linkable_element import LinkableElementProperty +from metricflow.semantics.model.semantics.linkable_element_set import LinkableElementSet +from metricflow.semantics.model.semantics.linkable_spec_resolver import ( ValidLinkableSpecResolver, ) -from metricflow.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS -from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow.semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS +from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.spec_classes import TimeDimensionSpec logger = logging.getLogger(__name__) diff --git a/metricflow/model/semantics/semantic_model_container.py b/metricflow/semantics/model/semantics/semantic_model_container.py similarity index 100% rename from metricflow/model/semantics/semantic_model_container.py rename to metricflow/semantics/model/semantics/semantic_model_container.py diff --git a/metricflow/model/semantics/semantic_model_join_evaluator.py b/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py similarity index 99% rename from metricflow/model/semantics/semantic_model_join_evaluator.py rename to metricflow/semantics/model/semantics/semantic_model_join_evaluator.py index ed8c3f7205..813b8d4d68 100644 --- a/metricflow/model/semantics/semantic_model_join_evaluator.py +++ b/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py @@ -14,7 +14,7 @@ from metricflow.mf_logging.pretty_print import mf_pformat if TYPE_CHECKING: - from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup + from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup MAX_JOIN_HOPS = 2 diff --git a/metricflow/model/semantics/semantic_model_lookup.py b/metricflow/semantics/model/semantics/semantic_model_lookup.py similarity index 99% rename from metricflow/model/semantics/semantic_model_lookup.py rename to metricflow/semantics/model/semantics/semantic_model_lookup.py index 179e06bf3d..d307bed6d1 100644 --- a/metricflow/model/semantics/semantic_model_lookup.py +++ b/metricflow/semantics/model/semantics/semantic_model_lookup.py @@ -23,8 +23,8 @@ from metricflow.errors.error_classes import InvalidSemanticModelError from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.model.semantics.element_group import ElementGrouper -from metricflow.model.spec_converters import MeasureConverter +from metricflow.semantics.model.semantics.element_group import ElementGrouper +from metricflow.semantics.model.spec_converters import MeasureConverter from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, diff --git a/metricflow/model/spec_converters.py b/metricflow/semantics/model/spec_converters.py similarity index 100% rename from metricflow/model/spec_converters.py rename to metricflow/semantics/model/spec_converters.py diff --git a/metricflow/model/transformations/__init__.py b/metricflow/semantics/model/transformations/__init__.py similarity index 100% rename from metricflow/model/transformations/__init__.py rename to metricflow/semantics/model/transformations/__init__.py diff --git a/metricflow/model/transformations/dedupe_metric_input_measures.py b/metricflow/semantics/model/transformations/dedupe_metric_input_measures.py similarity index 100% rename from metricflow/model/transformations/dedupe_metric_input_measures.py rename to metricflow/semantics/model/transformations/dedupe_metric_input_measures.py diff --git a/metricflow/semantics/specs/spec_classes.py b/metricflow/semantics/specs/spec_classes.py index c28ec8a45c..bffb7a5c6e 100644 --- a/metricflow/semantics/specs/spec_classes.py +++ b/metricflow/semantics/specs/spec_classes.py @@ -46,8 +46,8 @@ from metricflow.visitor import VisitorOutputT if TYPE_CHECKING: - from metricflow.model.semantics.metric_lookup import MetricLookup - from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup + from metricflow.semantics.model.semantics.metric_lookup import MetricLookup + from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup def hash_items(items: Sequence[SqlColumnType]) -> str: diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index 0e8a459444..4f1ac70f7b 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -15,9 +15,9 @@ InstanceSet, MeasureInstance, ) -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey from metricflow.semantics.specs.spec_classes import ( LinklessEntitySpec, diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index 69226d80b5..47f1eff1d4 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -16,9 +16,9 @@ from metricflow.dataflow.builder.source_node import SourceNodeSet from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.dataset.dataset_classes import DataSet -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index 342b6a775a..9304bd3b2e 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -12,10 +12,10 @@ from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer diff --git a/tests/fixtures/cli_fixtures.py b/tests/fixtures/cli_fixtures.py index 6768a93205..6047ecd15a 100644 --- a/tests/fixtures/cli_fixtures.py +++ b/tests/fixtures/cli_fixtures.py @@ -15,9 +15,9 @@ from dbt_metricflow.cli.cli_context import CLIContext from dbt_metricflow.cli.dbt_connectors.dbt_config_accessor import dbtArtifacts, dbtProjectMetadata from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import dbt_project_dir diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index ab8b0f53bf..8521563c3e 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -24,11 +24,11 @@ from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.id_fixtures import IdNumberSpace, patch_id_generators_helper diff --git a/tests/fixtures/table_fixtures.py b/tests/fixtures/table_fixtures.py index e020e4660a..b107a3a9c6 100644 --- a/tests/fixtures/table_fixtures.py +++ b/tests/fixtures/table_fixtures.py @@ -6,7 +6,7 @@ import pytest -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods from tests.source_schema_tools import create_tables_listed_in_table_snapshot_repository diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 7c71de699b..c1a530800d 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -6,10 +6,10 @@ from dbt_semantic_interfaces.test_utils import as_datetime from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/integration/test_configured_cases.py b/tests/integration/test_configured_cases.py index fec4cfab0f..1495ce5095 100644 --- a/tests/integration/test_configured_cases.py +++ b/tests/integration/test_configured_cases.py @@ -15,12 +15,12 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import ( DunderColumnAssociationResolver, ) from metricflow.protocols.query_parameter import DimensionOrEntityQueryParameter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, diff --git a/tests/integration/test_rendered_query.py b/tests/integration/test_rendered_query.py index 17a53fb6eb..3713c0073b 100644 --- a/tests/integration/test_rendered_query.py +++ b/tests/integration/test_rendered_query.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.test_utils import as_datetime from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers diff --git a/tests/model/semantics/test_linkable_element_set.py b/tests/model/semantics/test_linkable_element_set.py index 578e5dcd8d..6ecda24766 100644 --- a/tests/model/semantics/test_linkable_element_set.py +++ b/tests/model/semantics/test_linkable_element_set.py @@ -22,14 +22,14 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from more_itertools import bucket -from metricflow.model.semantics.linkable_element import ( +from metricflow.semantics.model.semantics.linkable_element import ( LinkableDimension, LinkableElementProperty, LinkableEntity, LinkableMetric, SemanticModelJoinPathElement, ) -from metricflow.model.semantics.linkable_element_set import LinkableElementSet +from metricflow.semantics.model.semantics.linkable_element_set import LinkableElementSet AMBIGUOUS_NAME = "ambiguous" # Common references diff --git a/tests/model/semantics/test_linkable_spec_resolver.py b/tests/model/semantics/test_linkable_spec_resolver.py index b6d26c141a..637e8fb44b 100644 --- a/tests/model/semantics/test_linkable_spec_resolver.py +++ b/tests/model/semantics/test_linkable_spec_resolver.py @@ -11,16 +11,16 @@ SemanticModelReference, ) -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.model.semantics.linkable_element import ( +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.model.semantics.linkable_element import ( LinkableElementProperty, SemanticModelJoinPath, SemanticModelJoinPathElement, ) -from metricflow.model.semantics.linkable_spec_resolver import ( +from metricflow.semantics.model.semantics.linkable_spec_resolver import ( ValidLinkableSpecResolver, ) -from metricflow.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS +from metricflow.semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_spec_set_snapshot_equal diff --git a/tests/model/semantics/test_semantic_model_join_evaluator.py b/tests/model/semantics/test_semantic_model_join_evaluator.py index 27dc6be340..de5ab789c6 100644 --- a/tests/model/semantics/test_semantic_model_join_evaluator.py +++ b/tests/model/semantics/test_semantic_model_join_evaluator.py @@ -6,8 +6,8 @@ from dbt_semantic_interfaces.protocols.entity import EntityType from dbt_semantic_interfaces.references import EntityReference, SemanticModelReference -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.model.semantics.semantic_model_join_evaluator import ( +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.model.semantics.semantic_model_join_evaluator import ( SemanticModelEntityJoin, SemanticModelEntityJoinType, SemanticModelJoinEvaluator, diff --git a/tests/model/test_data_warehouse_tasks.py b/tests/model/test_data_warehouse_tasks.py index c362fc259c..e900e3ba62 100644 --- a/tests/model/test_data_warehouse_tasks.py +++ b/tests/model/test_data_warehouse_tasks.py @@ -15,12 +15,12 @@ from dbt_semantic_interfaces.transformations.semantic_manifest_transformer import PydanticSemanticManifestTransformer from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType -from metricflow.model.data_warehouse_model_validator import ( +from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.model.data_warehouse_model_validator import ( DataWarehouseModelValidator, DataWarehouseTaskBuilder, DataWarehouseValidationTask, ) -from metricflow.protocols.sql_client import SqlClient from metricflow.sql.sql_bind_parameters import SqlBindParameters from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import ( diff --git a/tests/model/test_semantic_model_container.py b/tests/model/test_semantic_model_container.py index 53b877c603..c636888522 100644 --- a/tests/model/test_semantic_model_container.py +++ b/tests/model/test_semantic_model_container.py @@ -7,9 +7,9 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.references import EntityReference, MeasureReference, MetricReference -from metricflow.model.semantics.linkable_element import LinkableElementProperty -from metricflow.model.semantics.metric_lookup import MetricLookup -from metricflow.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow.semantics.model.semantics.linkable_element import LinkableElementProperty +from metricflow.semantics.model.semantics.metric_lookup import MetricLookup +from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_object_snapshot_equal diff --git a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py index 57c30e169d..9490350cdf 100644 --- a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py +++ b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py @@ -3,13 +3,13 @@ from typing import Mapping from metricflow.instances import InstanceSet -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.instance_converters import ( CreateSelectColumnsWithMeasuresAggregated, FilterElements, ) from metricflow.plan_conversion.select_column_gen import SelectColumnSet +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec, MetricInputMeasureSpec from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, diff --git a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py index 41e7137958..f025fd934f 100644 --- a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py +++ b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py @@ -7,8 +7,8 @@ from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.instances import InstanceSet -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index f8a4c00431..ecc85a2fda 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -4,11 +4,11 @@ from _pytest.fixtures import FixtureRequest from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_execution import DataflowToExecutionPlanConverter from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, diff --git a/tests/plan_conversion/test_time_spine.py b/tests/plan_conversion/test_time_spine.py index e5c5057f9d..f8e00aa0dd 100644 --- a/tests/plan_conversion/test_time_spine.py +++ b/tests/plan_conversion/test_time_spine.py @@ -2,9 +2,9 @@ from pandas import DataFrame -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.time.time_constants import ISO8601_PYTHON_TS_FORMAT diff --git a/tests/query/group_by_item/conftest.py b/tests/query/group_by_item/conftest.py index 8c4b03254a..e3e0402824 100644 --- a/tests/query/group_by_item/conftest.py +++ b/tests/query/group_by_item/conftest.py @@ -11,9 +11,9 @@ from dbt_semantic_interfaces.protocols import WhereFilterIntersection from dbt_semantic_interfaces.references import MetricReference -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py b/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py index 2a57392540..1dbf9bd1dd 100644 --- a/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py +++ b/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py @@ -21,7 +21,6 @@ from dbt_semantic_interfaces.transformations.transform_rule import SemanticManifestTransformRule from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( DefaultWhereFilterPatternFactory, ) @@ -30,6 +29,7 @@ ) from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_resolver import WhereFilterSpecResolver from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform diff --git a/tests/query/group_by_item/resolution_dag/test_resolution_dags.py b/tests/query/group_by_item/resolution_dag/test_resolution_dags.py index e9f2e3deb5..4f8587f40b 100644 --- a/tests/query/group_by_item/resolution_dag/test_resolution_dags.py +++ b/tests/query/group_by_item/resolution_dag/test_resolution_dags.py @@ -6,8 +6,8 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests/query/group_by_item/test_available_group_by_items.py b/tests/query/group_by_item/test_available_group_by_items.py index d846c7b502..a288ad5e21 100644 --- a/tests/query/group_by_item/test_available_group_by_items.py +++ b/tests/query/group_by_item/test_available_group_by_items.py @@ -6,9 +6,9 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import LinkableSpecSet from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query.group_by_item.conftest import AmbiguousResolutionQueryId diff --git a/tests/query/group_by_item/test_matching_item_for_filters.py b/tests/query/group_by_item/test_matching_item_for_filters.py index 75778882c0..4c96c77ad9 100644 --- a/tests/query/group_by_item/test_matching_item_for_filters.py +++ b/tests/query/group_by_item/test_matching_item_for_filters.py @@ -7,9 +7,9 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query/group_by_item/test_matching_item_for_querying.py b/tests/query/group_by_item/test_matching_item_for_querying.py index f3cb9c93a9..bd3f0b6694 100644 --- a/tests/query/group_by_item/test_matching_item_for_querying.py +++ b/tests/query/group_by_item/test_matching_item_for_querying.py @@ -9,12 +9,12 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query/test_ambiguous_entity_path.py b/tests/query/test_ambiguous_entity_path.py index b9a08a87f4..fb60543e7f 100644 --- a/tests/query/test_ambiguous_entity_path.py +++ b/tests/query/test_ambiguous_entity_path.py @@ -5,12 +5,12 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( DefaultWhereFilterPatternFactory, ) from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_object_snapshot_equal, assert_str_snapshot_equal diff --git a/tests/query/test_query_parser.py b/tests/query/test_query_parser.py index e3562c63e6..e9141fc5fb 100644 --- a/tests/query/test_query_parser.py +++ b/tests/query/test_query_parser.py @@ -14,10 +14,10 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.query_param_implementations import ( DimensionOrEntityParameter, MetricParameter, diff --git a/tests/query/test_suggestions.py b/tests/query/test_suggestions.py index 6200e38461..0260c741b5 100644 --- a/tests/query/test_suggestions.py +++ b/tests/query/test_suggestions.py @@ -12,10 +12,10 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference -from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.model.modify.modify_manifest import modify_manifest from tests.model.modify.modify_metric_filter import ModifyMetricFilterTransform diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index f4255204c0..b19fda7217 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -11,8 +11,8 @@ from metricflow.dataflow.dataflow_plan import DataflowPlan from metricflow.execution.execution_plan import ExecutionPlan from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.model.semantics.linkable_spec_resolver import LinkableElementSet from metricflow.protocols.sql_client import SqlClient, SqlEngine +from metricflow.semantics.model.semantics.linkable_spec_resolver import LinkableElementSet from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet from metricflow.test_helpers import assert_snapshot_text_equal From 248474b3615670ba227c1af182a28fe854ced94d Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 15:18:11 -0700 Subject: [PATCH 14/80] Move dag. --- dbt-metricflow/dbt_metricflow/cli/main.py | 2 +- metricflow/dataflow/builder/dataflow_plan_builder.py | 4 ++-- metricflow/dataflow/dataflow_plan.py | 4 ++-- metricflow/dataflow/nodes/add_generated_uuid.py | 4 ++-- metricflow/dataflow/nodes/aggregate_measures.py | 2 +- metricflow/dataflow/nodes/combine_aggregated_outputs.py | 2 +- metricflow/dataflow/nodes/compute_metrics.py | 4 ++-- metricflow/dataflow/nodes/constrain_time.py | 4 ++-- metricflow/dataflow/nodes/filter_elements.py | 4 ++-- metricflow/dataflow/nodes/join_conversion_events.py | 4 ++-- metricflow/dataflow/nodes/join_over_time.py | 4 ++-- metricflow/dataflow/nodes/join_to_base.py | 4 ++-- metricflow/dataflow/nodes/join_to_time_spine.py | 4 ++-- metricflow/dataflow/nodes/metric_time_transform.py | 4 ++-- metricflow/dataflow/nodes/min_max.py | 2 +- metricflow/dataflow/nodes/order_by_limit.py | 4 ++-- metricflow/dataflow/nodes/read_sql_source.py | 4 ++-- metricflow/dataflow/nodes/semi_additive_join.py | 4 ++-- metricflow/dataflow/nodes/where_filter.py | 4 ++-- metricflow/dataflow/nodes/write_to_dataframe.py | 2 +- metricflow/dataflow/nodes/write_to_table.py | 2 +- .../dataflow/optimizer/source_scan/source_scan_optimizer.py | 4 ++-- metricflow/dataset/convert_semantic_model.py | 4 ++-- metricflow/engine/metricflow_engine.py | 2 +- metricflow/execution/execution_plan.py | 4 ++-- metricflow/execution/executor.py | 2 +- metricflow/plan_conversion/dataflow_to_sql.py | 6 +++--- metricflow/query/group_by_item/resolution_dag/dag.py | 4 ++-- .../resolution_dag/resolution_nodes/base_node.py | 2 +- .../resolution_dag/resolution_nodes/measure_source_node.py | 4 ++-- .../resolution_nodes/metric_resolution_node.py | 4 ++-- .../resolution_nodes/no_metrics_query_source_node.py | 2 +- .../resolution_nodes/query_resolution_node.py | 4 ++-- metricflow/{ => semantics}/dag/__init__.py | 0 metricflow/{ => semantics}/dag/dag_to_text.py | 2 +- metricflow/{ => semantics}/dag/dag_visualization.py | 2 +- metricflow/{ => semantics}/dag/id_prefix.py | 0 metricflow/{ => semantics}/dag/mf_dag.py | 6 +++--- metricflow/{ => semantics}/dag/sequential_id.py | 2 +- metricflow/sql/sql_exprs.py | 4 ++-- metricflow/sql/sql_plan.py | 4 ++-- .../optimizer/source_scan/test_cm_branch_combiner.py | 4 ++-- tests/dataflow_plan_to_svg.py | 2 +- tests/execution/noop_task.py | 2 +- tests/execution/test_sequential_executor.py | 2 +- tests/execution/test_tasks.py | 2 +- tests/fixtures/id_fixtures.py | 2 +- tests/mf_logging/test_dag_to_text.py | 4 ++-- tests/plan_conversion/test_dataflow_to_sql_plan.py | 2 +- tests/query_rendering/compare_rendered_query.py | 2 +- tests/snapshot_utils.py | 2 +- tests/sql/compare_sql_plan.py | 2 +- 52 files changed, 80 insertions(+), 80 deletions(-) rename metricflow/{ => semantics}/dag/__init__.py (100%) rename metricflow/{ => semantics}/dag/dag_to_text.py (98%) rename metricflow/{ => semantics}/dag/dag_visualization.py (96%) rename metricflow/{ => semantics}/dag/id_prefix.py (100%) rename metricflow/{ => semantics}/dag/mf_dag.py (96%) rename metricflow/{ => semantics}/dag/sequential_id.py (96%) diff --git a/dbt-metricflow/dbt_metricflow/cli/main.py b/dbt-metricflow/dbt_metricflow/cli/main.py index 26a2e8be17..357628296d 100644 --- a/dbt-metricflow/dbt_metricflow/cli/main.py +++ b/dbt-metricflow/dbt_metricflow/cli/main.py @@ -35,8 +35,8 @@ query_options, start_end_time_options, ) -from metricflow.dag.dag_visualization import display_dag_as_svg from metricflow.engine.metricflow_engine import MetricFlowExplainResult, MetricFlowQueryRequest, MetricFlowQueryResult +from metricflow.semantics.dag.dag_visualization import display_dag_as_svg from metricflow.semantics.model.data_warehouse_model_validator import DataWarehouseModelValidator from metricflow.telemetry.models import TelemetryLevel from metricflow.telemetry.reporter import TelemetryReporter, log_call diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index f8976dfb61..d40dd773fb 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -22,8 +22,6 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.dag.id_prefix import StaticIdPrefix -from metricflow.dag.mf_dag import DagId from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.node_evaluator import ( JoinLinkableInstancesRecipe, @@ -61,6 +59,8 @@ from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/dataflow/dataflow_plan.py b/metricflow/dataflow/dataflow_plan.py index fcfa0d6b24..6f28c0d7c2 100644 --- a/metricflow/dataflow/dataflow_plan.py +++ b/metricflow/dataflow/dataflow_plan.py @@ -7,8 +7,8 @@ from abc import ABC, abstractmethod from typing import Generic, Optional, Sequence, Type, TypeVar -from metricflow.dag.id_prefix import StaticIdPrefix -from metricflow.dag.mf_dag import DagId, DagNode, MetricFlowDag, NodeId +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId, DagNode, MetricFlowDag, NodeId from metricflow.visitor import Visitable, VisitorOutputT if typing.TYPE_CHECKING: diff --git a/metricflow/dataflow/nodes/add_generated_uuid.py b/metricflow/dataflow/nodes/add_generated_uuid.py index cebb7bdcd4..cce4ae5e09 100644 --- a/metricflow/dataflow/nodes/add_generated_uuid.py +++ b/metricflow/dataflow/nodes/add_generated_uuid.py @@ -2,9 +2,9 @@ from typing import Sequence -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/aggregate_measures.py b/metricflow/dataflow/nodes/aggregate_measures.py index f2640a6075..fa64809fe3 100644 --- a/metricflow/dataflow/nodes/aggregate_measures.py +++ b/metricflow/dataflow/nodes/aggregate_measures.py @@ -3,8 +3,8 @@ from abc import ABC from typing import Sequence, Tuple -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.specs.spec_classes import MetricInputMeasureSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/combine_aggregated_outputs.py b/metricflow/dataflow/nodes/combine_aggregated_outputs.py index ffbe66cbe4..0e0ce0932c 100644 --- a/metricflow/dataflow/nodes/combine_aggregated_outputs.py +++ b/metricflow/dataflow/nodes/combine_aggregated_outputs.py @@ -2,13 +2,13 @@ from typing import Sequence, Union -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dataflow.dataflow_plan import ( BaseOutput, ComputedMetricsOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/compute_metrics.py b/metricflow/dataflow/nodes/compute_metrics.py index a043dd9428..ea68066a66 100644 --- a/metricflow/dataflow/nodes/compute_metrics.py +++ b/metricflow/dataflow/nodes/compute_metrics.py @@ -2,14 +2,14 @@ from typing import Sequence -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import ( BaseOutput, ComputedMetricsOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.specs.spec_classes import MetricSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/constrain_time.py b/metricflow/dataflow/nodes/constrain_time.py index 72866051e8..d231a85c07 100644 --- a/metricflow/dataflow/nodes/constrain_time.py +++ b/metricflow/dataflow/nodes/constrain_time.py @@ -2,10 +2,10 @@ from typing import Sequence -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/filter_elements.py b/metricflow/dataflow/nodes/filter_elements.py index 05205a1ee4..8d269caf05 100644 --- a/metricflow/dataflow/nodes/filter_elements.py +++ b/metricflow/dataflow/nodes/filter_elements.py @@ -2,10 +2,10 @@ from typing import Optional, Sequence, Tuple -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.specs.spec_classes import InstanceSpecSet from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_conversion_events.py b/metricflow/dataflow/nodes/join_conversion_events.py index 133fac4992..5ed58bbcdd 100644 --- a/metricflow/dataflow/nodes/join_conversion_events.py +++ b/metricflow/dataflow/nodes/join_conversion_events.py @@ -4,9 +4,9 @@ from dbt_semantic_interfaces.protocols import MetricTimeWindow -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.specs.spec_classes import ( ConstantPropertySpec, EntitySpec, diff --git a/metricflow/dataflow/nodes/join_over_time.py b/metricflow/dataflow/nodes/join_over_time.py index f8f2636a92..9a38c42ebc 100644 --- a/metricflow/dataflow/nodes/join_over_time.py +++ b/metricflow/dataflow/nodes/join_over_time.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.protocols import MetricTimeWindow from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty, NodeId from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty, NodeId from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_to_base.py b/metricflow/dataflow/nodes/join_to_base.py index 35e165c496..60b4569d38 100644 --- a/metricflow/dataflow/nodes/join_to_base.py +++ b/metricflow/dataflow/nodes/join_to_base.py @@ -3,13 +3,13 @@ from dataclasses import dataclass from typing import List, Optional, Sequence, Tuple -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty, NodeId from metricflow.dataflow.builder.partitions import ( PartitionDimensionJoinDescription, PartitionTimeDimensionJoinDescription, ) from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty, NodeId from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec from metricflow.sql.sql_plan import SqlJoinType from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_to_time_spine.py b/metricflow/dataflow/nodes/join_to_time_spine.py index 76e51e0ff0..f294a519f6 100644 --- a/metricflow/dataflow/nodes/join_to_time_spine.py +++ b/metricflow/dataflow/nodes/join_to_time_spine.py @@ -6,9 +6,9 @@ from dbt_semantic_interfaces.protocols import MetricTimeWindow from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from metricflow.sql.sql_plan import SqlJoinType diff --git a/metricflow/dataflow/nodes/metric_time_transform.py b/metricflow/dataflow/nodes/metric_time_transform.py index 882f1e11fb..85aea74880 100644 --- a/metricflow/dataflow/nodes/metric_time_transform.py +++ b/metricflow/dataflow/nodes/metric_time_transform.py @@ -4,9 +4,9 @@ from dbt_semantic_interfaces.references import TimeDimensionReference -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/min_max.py b/metricflow/dataflow/nodes/min_max.py index 08e54b718c..bb8dc8105c 100644 --- a/metricflow/dataflow/nodes/min_max.py +++ b/metricflow/dataflow/nodes/min_max.py @@ -2,8 +2,8 @@ from typing import Sequence -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/order_by_limit.py b/metricflow/dataflow/nodes/order_by_limit.py index 615d224c5a..bd4c407d92 100644 --- a/metricflow/dataflow/nodes/order_by_limit.py +++ b/metricflow/dataflow/nodes/order_by_limit.py @@ -2,14 +2,14 @@ from typing import Optional, Sequence, Union -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import ( BaseOutput, ComputedMetricsOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.specs.spec_classes import OrderBySpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/read_sql_source.py b/metricflow/dataflow/nodes/read_sql_source.py index 9c6233f374..bfa9d85924 100644 --- a/metricflow/dataflow/nodes/read_sql_source.py +++ b/metricflow/dataflow/nodes/read_sql_source.py @@ -5,10 +5,10 @@ import jinja2 -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.dataset.sql_dataset import SqlDataSet +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/semi_additive_join.py b/metricflow/dataflow/nodes/semi_additive_join.py index c31499b77d..720ef9bc4f 100644 --- a/metricflow/dataflow/nodes/semi_additive_join.py +++ b/metricflow/dataflow/nodes/semi_additive_join.py @@ -4,9 +4,9 @@ from dbt_semantic_interfaces.type_enums import AggregationType -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/where_filter.py b/metricflow/dataflow/nodes/where_filter.py index 7ae6591e11..a1de30559f 100644 --- a/metricflow/dataflow/nodes/where_filter.py +++ b/metricflow/dataflow/nodes/where_filter.py @@ -2,10 +2,10 @@ from typing import Sequence -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.specs.spec_classes import WhereFilterSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/write_to_dataframe.py b/metricflow/dataflow/nodes/write_to_dataframe.py index 867523bde7..bab11f8a22 100644 --- a/metricflow/dataflow/nodes/write_to_dataframe.py +++ b/metricflow/dataflow/nodes/write_to_dataframe.py @@ -2,7 +2,6 @@ from typing import Sequence -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlanNode, @@ -10,6 +9,7 @@ SinkNodeVisitor, SinkOutput, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/write_to_table.py b/metricflow/dataflow/nodes/write_to_table.py index d62647cfc2..76319eebb4 100644 --- a/metricflow/dataflow/nodes/write_to_table.py +++ b/metricflow/dataflow/nodes/write_to_table.py @@ -2,7 +2,6 @@ from typing import Sequence -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlanNode, @@ -10,6 +9,7 @@ SinkNodeVisitor, SinkOutput, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.sql.sql_table import SqlTable from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py b/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py index 6d604e0fbb..464346105f 100644 --- a/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py +++ b/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py @@ -4,8 +4,6 @@ from dataclasses import dataclass from typing import List, Optional, Sequence -from metricflow.dag.id_prefix import StaticIdPrefix -from metricflow.dag.mf_dag import DagId from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlan, @@ -36,6 +34,8 @@ ComputeMetricsBranchCombiner, ComputeMetricsBranchCombinerResult, ) +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId logger = logging.getLogger(__name__) diff --git a/metricflow/dataset/convert_semantic_model.py b/metricflow/dataset/convert_semantic_model.py index 1c4b8a7628..1dbf8444e0 100644 --- a/metricflow/dataset/convert_semantic_model.py +++ b/metricflow/dataset/convert_semantic_model.py @@ -17,8 +17,6 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.aggregation_properties import AggregationState -from metricflow.dag.id_prefix import DynamicIdPrefix, StaticIdPrefix -from metricflow.dag.sequential_id import SequentialIdGenerator from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.instances import ( @@ -29,6 +27,8 @@ TimeDimensionInstance, ) from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource +from metricflow.semantics.dag.id_prefix import DynamicIdPrefix, StaticIdPrefix +from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.model.spec_converters import MeasureConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 9738144113..fe3a6ee757 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -13,7 +13,6 @@ from dbt_semantic_interfaces.references import EntityReference, MeasureReference, MetricReference from dbt_semantic_interfaces.type_enums import DimensionType -from metricflow.dag.sequential_id import SequentialIdGenerator from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.source_node import SourceNodeBuilder @@ -42,6 +41,7 @@ from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.random_id import random_id +from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.model.semantics.linkable_element import ( diff --git a/metricflow/execution/execution_plan.py b/metricflow/execution/execution_plan.py index 6f8e973706..39e627262d 100644 --- a/metricflow/execution/execution_plan.py +++ b/metricflow/execution/execution_plan.py @@ -8,9 +8,9 @@ import pandas as pd -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from metricflow.visitor import Visitable diff --git a/metricflow/execution/executor.py b/metricflow/execution/executor.py index 2663019120..6f8a2dc83b 100644 --- a/metricflow/execution/executor.py +++ b/metricflow/execution/executor.py @@ -5,8 +5,8 @@ from collections import OrderedDict from typing import Dict -from metricflow.dag.mf_dag import NodeId from metricflow.execution.execution_plan import ExecutionPlan, ExecutionPlanTask, TaskExecutionResult +from metricflow.semantics.dag.mf_dag import NodeId logger = logging.getLogger(__name__) diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index 4dca10c55a..17a85bea17 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -13,9 +13,6 @@ from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords from metricflow.aggregation_properties import AggregationState -from metricflow.dag.id_prefix import StaticIdPrefix -from metricflow.dag.mf_dag import DagId -from metricflow.dag.sequential_id import SequentialIdGenerator from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlanNode, @@ -85,6 +82,9 @@ ) from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.protocols.sql_client import SqlEngine +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId +from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ( diff --git a/metricflow/query/group_by_item/resolution_dag/dag.py b/metricflow/query/group_by_item/resolution_dag/dag.py index f1d34f29a4..e4db458883 100644 --- a/metricflow/query/group_by_item/resolution_dag/dag.py +++ b/metricflow/query/group_by_item/resolution_dag/dag.py @@ -2,8 +2,6 @@ from typing import Union -from metricflow.dag.id_prefix import StaticIdPrefix -from metricflow.dag.mf_dag import DagId, MetricFlowDag from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, @@ -11,6 +9,8 @@ from metricflow.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId, MetricFlowDag ResolutionDagSinkNode = Union[QueryGroupByItemResolutionNode, MetricGroupByItemResolutionNode] diff --git a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/base_node.py b/metricflow/query/group_by_item/resolution_dag/resolution_nodes/base_node.py index 1b249675a1..f3ae67db0e 100644 --- a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/base_node.py +++ b/metricflow/query/group_by_item/resolution_dag/resolution_nodes/base_node.py @@ -3,7 +3,7 @@ from abc import ABC, abstractmethod from typing import TYPE_CHECKING, Generic, Sequence -from metricflow.dag.mf_dag import DagNode, NodeId +from metricflow.semantics.dag.mf_dag import DagNode, NodeId from metricflow.visitor import Visitable, VisitorOutputT if TYPE_CHECKING: diff --git a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py b/metricflow/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py index 91a7518064..3813815220 100644 --- a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py +++ b/metricflow/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py @@ -5,12 +5,12 @@ from dbt_semantic_interfaces.references import MeasureReference, MetricReference from typing_extensions import override -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.visitor import VisitorOutputT diff --git a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py b/metricflow/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py index 14cf6d121b..f5c1fec130 100644 --- a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py +++ b/metricflow/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py @@ -5,8 +5,6 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import Self, override -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.query.group_by_item.resolution_dag.input_metric_location import InputMetricDefinitionLocation from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, @@ -15,6 +13,8 @@ from metricflow.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.visitor import VisitorOutputT diff --git a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py b/metricflow/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py index 93e9055dd5..235d18de36 100644 --- a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py +++ b/metricflow/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py @@ -4,7 +4,6 @@ from typing_extensions import override -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, @@ -12,6 +11,7 @@ from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.visitor import VisitorOutputT diff --git a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py b/metricflow/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py index 5b0f1e277d..3f59de14f8 100644 --- a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py +++ b/metricflow/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py @@ -6,8 +6,6 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DisplayedProperty from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, @@ -18,6 +16,8 @@ from metricflow.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dag/__init__.py b/metricflow/semantics/dag/__init__.py similarity index 100% rename from metricflow/dag/__init__.py rename to metricflow/semantics/dag/__init__.py diff --git a/metricflow/dag/dag_to_text.py b/metricflow/semantics/dag/dag_to_text.py similarity index 98% rename from metricflow/dag/dag_to_text.py rename to metricflow/semantics/dag/dag_to_text.py index c2f218fefe..247a02bc8e 100644 --- a/metricflow/dag/dag_to_text.py +++ b/metricflow/semantics/dag/dag_to_text.py @@ -12,7 +12,7 @@ import jinja2 if typing.TYPE_CHECKING: - from metricflow.dag.mf_dag import DagNode, DagNodeT, DisplayedProperty, MetricFlowDag + from metricflow.semantics.dag.mf_dag import DagNode, DagNodeT, DisplayedProperty, MetricFlowDag from metricflow.mf_logging.pretty_print import mf_pformat diff --git a/metricflow/dag/dag_visualization.py b/metricflow/semantics/dag/dag_visualization.py similarity index 96% rename from metricflow/dag/dag_visualization.py rename to metricflow/semantics/dag/dag_visualization.py index 67544ad394..4d0ced10e2 100644 --- a/metricflow/dag/dag_visualization.py +++ b/metricflow/semantics/dag/dag_visualization.py @@ -6,8 +6,8 @@ import graphviz -from metricflow.dag.mf_dag import DagNode, MetricFlowDag from metricflow.random_id import random_id +from metricflow.semantics.dag.mf_dag import DagNode, MetricFlowDag logger = logging.getLogger(__name__) DagNodeT = TypeVar("DagNodeT", bound=DagNode) diff --git a/metricflow/dag/id_prefix.py b/metricflow/semantics/dag/id_prefix.py similarity index 100% rename from metricflow/dag/id_prefix.py rename to metricflow/semantics/dag/id_prefix.py diff --git a/metricflow/dag/mf_dag.py b/metricflow/semantics/dag/mf_dag.py similarity index 96% rename from metricflow/dag/mf_dag.py rename to metricflow/semantics/dag/mf_dag.py index 68a84dd916..1482b30c16 100644 --- a/metricflow/dag/mf_dag.py +++ b/metricflow/semantics/dag/mf_dag.py @@ -11,9 +11,9 @@ import jinja2 -from metricflow.dag.dag_to_text import MetricFlowDagTextFormatter -from metricflow.dag.id_prefix import IdPrefix -from metricflow.dag.sequential_id import SequentialIdGenerator +from metricflow.semantics.dag.dag_to_text import MetricFlowDagTextFormatter +from metricflow.semantics.dag.id_prefix import IdPrefix +from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.visitor import VisitorOutputT logger = logging.getLogger(__name__) diff --git a/metricflow/dag/sequential_id.py b/metricflow/semantics/dag/sequential_id.py similarity index 96% rename from metricflow/dag/sequential_id.py rename to metricflow/semantics/dag/sequential_id.py index a26f29c6f5..e50bd2b3b6 100644 --- a/metricflow/dag/sequential_id.py +++ b/metricflow/semantics/dag/sequential_id.py @@ -6,7 +6,7 @@ from typing_extensions import override -from metricflow.dag.id_prefix import IdPrefix +from metricflow.semantics.dag.id_prefix import IdPrefix @dataclass(frozen=True) diff --git a/metricflow/sql/sql_exprs.py b/metricflow/sql/sql_exprs.py index 778d40836b..8c5368155d 100644 --- a/metricflow/sql/sql_exprs.py +++ b/metricflow/sql/sql_exprs.py @@ -15,8 +15,8 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DagNode, DisplayedProperty, NodeId +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagNode, DisplayedProperty, NodeId from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.visitor import Visitable, VisitorOutputT diff --git a/metricflow/sql/sql_plan.py b/metricflow/sql/sql_plan.py index 9031819e2d..d00a616d1d 100644 --- a/metricflow/sql/sql_plan.py +++ b/metricflow/sql/sql_plan.py @@ -10,8 +10,8 @@ from typing_extensions import override -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId from metricflow.sql.sql_exprs import SqlExpressionNode from metricflow.sql.sql_table import SqlTable from metricflow.visitor import VisitorOutputT diff --git a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py index b8e5559201..e7a1df5124 100644 --- a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py +++ b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py @@ -5,8 +5,6 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.dag.id_prefix import StaticIdPrefix -from metricflow.dag.mf_dag import DagId from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlan, @@ -17,6 +15,8 @@ ComputeMetricsBranchCombiner, ComputeMetricsBranchCombinerResult, ) +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/dataflow_plan_to_svg.py b/tests/dataflow_plan_to_svg.py index 8f7432dc01..ead06c1485 100644 --- a/tests/dataflow_plan_to_svg.py +++ b/tests/dataflow_plan_to_svg.py @@ -4,7 +4,7 @@ from _pytest.fixtures import FixtureRequest -from metricflow.dag.dag_visualization import DagGraphT, render_via_graphviz +from metricflow.semantics.dag.dag_visualization import DagGraphT, render_via_graphviz from metricflow.test_helpers import snapshot_path_prefix from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/execution/noop_task.py b/tests/execution/noop_task.py index d5e8d855bf..87b8b9af0f 100644 --- a/tests/execution/noop_task.py +++ b/tests/execution/noop_task.py @@ -4,13 +4,13 @@ import time from typing import Optional, Sequence -from metricflow.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.execution.execution_plan import ( ExecutionPlanTask, SqlQuery, TaskExecutionError, TaskExecutionResult, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix logger = logging.getLogger(__name__) diff --git a/tests/execution/test_sequential_executor.py b/tests/execution/test_sequential_executor.py index c3e5ca2835..7532878f69 100644 --- a/tests/execution/test_sequential_executor.py +++ b/tests/execution/test_sequential_executor.py @@ -1,8 +1,8 @@ from __future__ import annotations -from metricflow.dag.mf_dag import DagId from metricflow.execution.execution_plan import ExecutionPlan from metricflow.execution.executor import SequentialPlanExecutor +from metricflow.semantics.dag.mf_dag import DagId from tests.execution.noop_task import NoOpExecutionPlanTask diff --git a/tests/execution/test_tasks.py b/tests/execution/test_tasks.py index 8009ac18cc..49d3a99602 100644 --- a/tests/execution/test_tasks.py +++ b/tests/execution/test_tasks.py @@ -2,7 +2,6 @@ import pandas as pd -from metricflow.dag.mf_dag import DagId from metricflow.execution.execution_plan import ( ExecutionPlan, SelectSqlQueryToDataFrameTask, @@ -11,6 +10,7 @@ from metricflow.execution.executor import SequentialPlanExecutor from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.random_id import random_id +from metricflow.semantics.dag.mf_dag import DagId from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal diff --git a/tests/fixtures/id_fixtures.py b/tests/fixtures/id_fixtures.py index 0e0f6209eb..aaf8f8038a 100644 --- a/tests/fixtures/id_fixtures.py +++ b/tests/fixtures/id_fixtures.py @@ -7,7 +7,7 @@ import pytest -from metricflow.dag.sequential_id import SequentialIdGenerator +from metricflow.semantics.dag.sequential_id import SequentialIdGenerator @dataclass(frozen=True) diff --git a/tests/mf_logging/test_dag_to_text.py b/tests/mf_logging/test_dag_to_text.py index d5d5c4c521..942589693a 100644 --- a/tests/mf_logging/test_dag_to_text.py +++ b/tests/mf_logging/test_dag_to_text.py @@ -6,9 +6,9 @@ import time from typing import List -from metricflow.dag.dag_to_text import MetricFlowDagTextFormatter -from metricflow.dag.mf_dag import DagId from metricflow.mf_logging.formatting import indent +from metricflow.semantics.dag.dag_to_text import MetricFlowDagTextFormatter +from metricflow.semantics.dag.mf_dag import DagId from metricflow.sql.sql_exprs import ( SqlStringExpression, ) diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index b42689e040..634a19f8ee 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -10,7 +10,6 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dag.mf_dag import DagId from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.dataflow_plan import ( BaseOutput, @@ -31,6 +30,7 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/query_rendering/compare_rendered_query.py b/tests/query_rendering/compare_rendered_query.py index c37a1f1647..ee6ecad8fc 100644 --- a/tests/query_rendering/compare_rendered_query.py +++ b/tests/query_rendering/compare_rendered_query.py @@ -4,10 +4,10 @@ from _pytest.fixtures import FixtureRequest -from metricflow.dag.mf_dag import DagId from metricflow.dataflow.dataflow_plan import BaseOutput from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dag.mf_dag import DagId from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index b19fda7217..de7d4d943f 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -7,11 +7,11 @@ import tabulate from _pytest.fixtures import FixtureRequest -from metricflow.dag.mf_dag import MetricFlowDag from metricflow.dataflow.dataflow_plan import DataflowPlan from metricflow.execution.execution_plan import ExecutionPlan from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.protocols.sql_client import SqlClient, SqlEngine +from metricflow.semantics.dag.mf_dag import MetricFlowDag from metricflow.semantics.model.semantics.linkable_spec_resolver import LinkableElementSet from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet diff --git a/tests/sql/compare_sql_plan.py b/tests/sql/compare_sql_plan.py index b4a562c72d..79de37e733 100644 --- a/tests/sql/compare_sql_plan.py +++ b/tests/sql/compare_sql_plan.py @@ -2,8 +2,8 @@ from _pytest.fixtures import FixtureRequest -from metricflow.dag.mf_dag import DagId from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dag.mf_dag import DagId from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer from metricflow.sql.sql_plan import SqlQueryPlan, SqlQueryPlanNode from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker From c952eb0a6a97a75f61c645bdb510ffaba7209817 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 15:20:56 -0700 Subject: [PATCH 15/80] Move dataset. --- metricflow/dataflow/builder/dataflow_plan_builder.py | 2 +- metricflow/dataflow/builder/node_data_set.py | 2 +- metricflow/dataflow/builder/node_evaluator.py | 4 ++-- metricflow/dataflow/builder/partitions.py | 2 +- metricflow/dataflow/builder/source_node.py | 4 ++-- metricflow/dataflow/nodes/read_sql_source.py | 2 +- metricflow/engine/metricflow_engine.py | 6 +++--- metricflow/plan_conversion/dataflow_to_sql.py | 4 ++-- metricflow/plan_conversion/sql_join_builder.py | 2 +- metricflow/{ => semantics}/dataset/__init__.py | 0 .../{ => semantics}/dataset/convert_semantic_model.py | 4 ++-- metricflow/{ => semantics}/dataset/dataset_classes.py | 0 .../{ => semantics}/dataset/semantic_model_adapter.py | 2 +- metricflow/{ => semantics}/dataset/sql_dataset.py | 2 +- .../semantics/model/data_warehouse_model_validator.py | 4 ++-- .../semantics/model/semantics/linkable_spec_resolver.py | 2 +- tests/dataflow/builder/test_dataflow_plan_builder.py | 2 +- tests/dataflow/builder/test_node_data_set.py | 2 +- tests/dataflow/builder/test_node_evaluator.py | 2 +- .../optimizer/source_scan/test_source_scan_optimizer.py | 2 +- tests/examples/test_node_sql.py | 2 +- tests/fixtures/manifest_fixtures.py | 4 ++-- tests/query_rendering/test_fill_nulls_with_rendering.py | 2 +- .../query_rendering/test_granularity_date_part_rendering.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- tests/query_rendering/test_time_spine_join_rendering.py | 2 +- tests/time/metric_time_dimension.py | 2 +- 27 files changed, 33 insertions(+), 33 deletions(-) rename metricflow/{ => semantics}/dataset/__init__.py (100%) rename metricflow/{ => semantics}/dataset/convert_semantic_model.py (99%) rename metricflow/{ => semantics}/dataset/dataset_classes.py (100%) rename metricflow/{ => semantics}/dataset/semantic_model_adapter.py (94%) rename metricflow/{ => semantics}/dataset/sql_dataset.py (98%) diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index d40dd773fb..5ce910ece1 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -51,7 +51,6 @@ from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer -from metricflow.dataset.dataset_classes import DataSet from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat @@ -61,6 +60,7 @@ from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/dataflow/builder/node_data_set.py b/metricflow/dataflow/builder/node_data_set.py index 0636825ae0..8cc4723045 100644 --- a/metricflow/dataflow/builder/node_data_set.py +++ b/metricflow/dataflow/builder/node_data_set.py @@ -5,9 +5,9 @@ from metricflow.dataflow.dataflow_plan import ( DataflowPlanNode, ) -from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.mf_logging.runtime import log_block_runtime from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver if TYPE_CHECKING: diff --git a/metricflow/dataflow/builder/node_evaluator.py b/metricflow/dataflow/builder/node_evaluator.py index 4f9c98e97f..74aa49b007 100644 --- a/metricflow/dataflow/builder/node_evaluator.py +++ b/metricflow/dataflow/builder/node_evaluator.py @@ -34,11 +34,11 @@ from metricflow.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.dataflow.nodes.join_to_base import JoinDescription, ValidityWindowJoinDescription from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.dataset.dataset_classes import DataSet -from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.instances import InstanceSet from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription +from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.spec_classes import ( diff --git a/metricflow/dataflow/builder/partitions.py b/metricflow/dataflow/builder/partitions.py index a930e0c575..19887c183c 100644 --- a/metricflow/dataflow/builder/partitions.py +++ b/metricflow/dataflow/builder/partitions.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from typing import List, Sequence, Tuple -from metricflow.dataset.dataset_classes import DataSet +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/metricflow/dataflow/builder/source_node.py b/metricflow/dataflow/builder/source_node.py index b08ed990ec..6bc5bc242d 100644 --- a/metricflow/dataflow/builder/source_node.py +++ b/metricflow/dataflow/builder/source_node.py @@ -10,8 +10,8 @@ ) from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter -from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet +from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter +from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/dataflow/nodes/read_sql_source.py b/metricflow/dataflow/nodes/read_sql_source.py index bfa9d85924..301bd22d09 100644 --- a/metricflow/dataflow/nodes/read_sql_source.py +++ b/metricflow/dataflow/nodes/read_sql_source.py @@ -6,9 +6,9 @@ import jinja2 from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.visitor import VisitorOutputT diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index fe3a6ee757..873b29f299 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -20,9 +20,6 @@ from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import ( SourceScanOptimizer, ) -from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter -from metricflow.dataset.dataset_classes import DataSet -from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.engine.models import Dimension, Entity, Measure, Metric, SavedQuery from metricflow.engine.time_source import ServerTimeSource from metricflow.errors.error_classes import ExecutionException @@ -42,6 +39,9 @@ from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.random_id import random_id from metricflow.semantics.dag.sequential_id import SequentialIdGenerator +from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter +from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.model.semantics.linkable_element import ( diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index 17a85bea17..68ecec0d9d 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -36,8 +36,6 @@ from metricflow.dataflow.nodes.where_filter import WhereConstraintNode from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode -from metricflow.dataset.dataset_classes import DataSet -from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.instances import ( GroupByMetricInstance, InstanceSet, @@ -85,6 +83,8 @@ from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dag.sequential_id import SequentialIdGenerator +from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ( diff --git a/metricflow/plan_conversion/sql_join_builder.py b/metricflow/plan_conversion/sql_join_builder.py index 5407f0c98a..cc90d503b6 100644 --- a/metricflow/plan_conversion/sql_join_builder.py +++ b/metricflow/plan_conversion/sql_join_builder.py @@ -11,8 +11,8 @@ from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode from metricflow.dataflow.nodes.join_to_base import JoinDescription from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr +from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, diff --git a/metricflow/dataset/__init__.py b/metricflow/semantics/dataset/__init__.py similarity index 100% rename from metricflow/dataset/__init__.py rename to metricflow/semantics/dataset/__init__.py diff --git a/metricflow/dataset/convert_semantic_model.py b/metricflow/semantics/dataset/convert_semantic_model.py similarity index 99% rename from metricflow/dataset/convert_semantic_model.py rename to metricflow/semantics/dataset/convert_semantic_model.py index 1dbf8444e0..470aedd0fd 100644 --- a/metricflow/dataset/convert_semantic_model.py +++ b/metricflow/semantics/dataset/convert_semantic_model.py @@ -17,8 +17,6 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.aggregation_properties import AggregationState -from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet -from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.instances import ( DimensionInstance, EntityInstance, @@ -29,6 +27,8 @@ from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.semantics.dag.id_prefix import DynamicIdPrefix, StaticIdPrefix from metricflow.semantics.dag.sequential_id import SequentialIdGenerator +from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet +from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.model.spec_converters import MeasureConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/dataset/dataset_classes.py b/metricflow/semantics/dataset/dataset_classes.py similarity index 100% rename from metricflow/dataset/dataset_classes.py rename to metricflow/semantics/dataset/dataset_classes.py diff --git a/metricflow/dataset/semantic_model_adapter.py b/metricflow/semantics/dataset/semantic_model_adapter.py similarity index 94% rename from metricflow/dataset/semantic_model_adapter.py rename to metricflow/semantics/dataset/semantic_model_adapter.py index efe24dc035..c3cb37d51a 100644 --- a/metricflow/dataset/semantic_model_adapter.py +++ b/metricflow/semantics/dataset/semantic_model_adapter.py @@ -3,8 +3,8 @@ from dbt_semantic_interfaces.references import SemanticModelReference from typing_extensions import override -from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.instances import InstanceSet +from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.sql.sql_plan import SqlSelectStatementNode diff --git a/metricflow/dataset/sql_dataset.py b/metricflow/semantics/dataset/sql_dataset.py similarity index 98% rename from metricflow/dataset/sql_dataset.py rename to metricflow/semantics/dataset/sql_dataset.py index 27ceec4152..bd841db5fe 100644 --- a/metricflow/dataset/sql_dataset.py +++ b/metricflow/semantics/dataset/sql_dataset.py @@ -6,10 +6,10 @@ from typing_extensions import override from metricflow.assert_one_arg import assert_exactly_one_arg_set -from metricflow.dataset.dataset_classes import DataSet from metricflow.instances import ( InstanceSet, ) +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.column_assoc import ColumnAssociation from metricflow.semantics.specs.spec_classes import DimensionSpec, EntitySpec, TimeDimensionSpec from metricflow.sql.sql_plan import ( diff --git a/metricflow/semantics/model/data_warehouse_model_validator.py b/metricflow/semantics/model/data_warehouse_model_validator.py index ff42fd1c3d..e80c7f1bc0 100644 --- a/metricflow/semantics/model/data_warehouse_model_validator.py +++ b/metricflow/semantics/model/data_warehouse_model_validator.py @@ -33,13 +33,13 @@ from metricflow.dataflow.builder.source_node import SourceNodeBuilder from metricflow.dataflow.dataflow_plan import BaseOutput from metricflow.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter -from metricflow.dataset.dataset_classes import DataSet from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec from metricflow.sql.sql_bind_parameters import SqlBindParameters diff --git a/metricflow/semantics/model/semantics/linkable_spec_resolver.py b/metricflow/semantics/model/semantics/linkable_spec_resolver.py index 3584d7c4a2..c2138c60d6 100644 --- a/metricflow/semantics/model/semantics/linkable_spec_resolver.py +++ b/metricflow/semantics/model/semantics/linkable_spec_resolver.py @@ -19,9 +19,9 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataset.dataset_classes import DataSet from metricflow.errors.error_classes import UnknownMetricLinkingError from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantics.linkable_element import ( ElementPathKey, LinkableDimension, diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index 8482051f17..fee463ed40 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -10,9 +10,9 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset_classes import DataSet from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index 4f1ac70f7b..ba867279da 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -10,13 +10,13 @@ from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.instances import ( InstanceSet, MeasureInstance, ) from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource +from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index 47f1eff1d4..48048633e4 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -15,9 +15,9 @@ from metricflow.dataflow.builder.partitions import PartitionTimeDimensionJoinDescription from metricflow.dataflow.builder.source_node import SourceNodeSet from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription -from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index 532123949d..57c3d2887d 100644 --- a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -32,8 +32,8 @@ from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer -from metricflow.dataset.dataset_classes import DataSet from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index 9304bd3b2e..7bff3af82a 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -10,11 +10,11 @@ from metricflow.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index 8521563c3e..00a963a558 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -21,13 +21,13 @@ from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.source_node import SourceNodeBuilder, SourceNodeSet from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter -from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.engine.metricflow_engine import MetricFlowEngine from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter +from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.test_helpers import ConfigurableTimeSource diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index bea00fc698..0a96abf39d 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -13,10 +13,10 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests/query_rendering/test_granularity_date_part_rendering.py index a5b08dc7be..c5094748c8 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests/query_rendering/test_granularity_date_part_rendering.py @@ -12,9 +12,9 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index e07b7d4694..a640b27e87 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -17,10 +17,10 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests/query_rendering/test_time_spine_join_rendering.py index 9f585ae15f..dd35fe51e2 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests/query_rendering/test_time_spine_join_rendering.py @@ -13,9 +13,9 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, diff --git a/tests/time/metric_time_dimension.py b/tests/time/metric_time_dimension.py index ac7ea7d9be..02e519390f 100644 --- a/tests/time/metric_time_dimension.py +++ b/tests/time/metric_time_dimension.py @@ -2,7 +2,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataset.dataset_classes import DataSet +from metricflow.semantics.dataset.dataset_classes import DataSet # Shortcuts for referring to the metric time dimension. MTD = DataSet.metric_time_dimension_name() From 0cc46a3de8cb82f8e2bd4ab9e1232b0a04ac438f Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 15:25:27 -0700 Subject: [PATCH 16/80] Move dataflow plan sub-modules. --- metricflow/dataflow/dataflow_plan.py | 36 +++++++------- metricflow/engine/metricflow_engine.py | 12 ++--- .../plan_conversion/dataflow_to_execution.py | 4 +- metricflow/plan_conversion/dataflow_to_sql.py | 36 +++++++------- .../plan_conversion/instance_converters.py | 2 +- metricflow/plan_conversion/node_processor.py | 12 ++--- .../plan_conversion/sql_join_builder.py | 8 ++-- metricflow/semantics/dataflow/__init__.py | 0 .../semantics/dataflow/builder/__init__.py | 0 .../dataflow/builder/dataflow_plan_builder.py | 48 +++++++++---------- .../dataflow/builder/measure_additiveness.py | 0 .../dataflow/builder/node_data_set.py | 0 .../dataflow/builder/node_evaluator.py | 20 ++++---- .../dataflow/builder/partitions.py | 0 .../dataflow/builder/source_node.py | 4 +- .../semantics/dataflow/nodes/__init__.py | 0 .../dataflow/nodes/add_generated_uuid.py | 0 .../dataflow/nodes/aggregate_measures.py | 0 .../nodes/combine_aggregated_outputs.py | 0 .../dataflow/nodes/compute_metrics.py | 0 .../dataflow/nodes/constrain_time.py | 2 +- .../dataflow/nodes/filter_elements.py | 0 .../dataflow/nodes/join_conversion_events.py | 0 .../dataflow/nodes/join_over_time.py | 0 .../dataflow/nodes/join_to_base.py | 8 ++-- .../dataflow/nodes/join_to_time_spine.py | 0 .../dataflow/nodes/metric_time_transform.py | 0 .../{ => semantics}/dataflow/nodes/min_max.py | 0 .../dataflow/nodes/order_by_limit.py | 0 .../dataflow/nodes/read_sql_source.py | 0 .../dataflow/nodes/semi_additive_join.py | 0 .../dataflow/nodes/where_filter.py | 2 +- .../dataflow/nodes/write_to_dataframe.py | 0 .../dataflow/nodes/write_to_table.py | 0 .../semantics/dataflow/optimizer/__init__.py | 0 .../optimizer/dataflow_plan_optimizer.py | 0 .../optimizer/source_scan/__init__.py | 0 .../source_scan/cm_branch_combiner.py | 38 +++++++-------- .../source_scan/matching_linkable_specs.py | 0 .../source_scan/source_scan_optimizer.py | 44 ++++++++--------- .../model/data_warehouse_model_validator.py | 6 +-- tests/dataflow/builder/test_cyclic_join.py | 2 +- .../builder/test_dataflow_plan_builder.py | 2 +- .../builder/test_measure_additiveness.py | 2 +- tests/dataflow/builder/test_node_data_set.py | 6 +-- tests/dataflow/builder/test_node_evaluator.py | 14 +++--- .../source_scan/test_cm_branch_combiner.py | 10 ++-- .../source_scan/test_source_scan_optimizer.py | 40 ++++++++-------- tests/examples/test_node_sql.py | 8 ++-- tests/fixtures/dataflow_fixtures.py | 2 +- tests/fixtures/manifest_fixtures.py | 8 ++-- .../test_conversion_metrics_to_sql.py | 2 +- .../test_distinct_values_to_sql.py | 2 +- .../test_metric_time_dimension_to_sql.py | 4 +- ...create_validity_window_join_description.py | 2 +- .../test_dataflow_to_execution.py | 2 +- .../test_dataflow_to_sql_plan.py | 26 +++++----- .../test_cumulative_metric_rendering.py | 2 +- .../test_derived_metric_rendering.py | 2 +- .../test_fill_nulls_with_rendering.py | 2 +- .../test_granularity_date_part_rendering.py | 2 +- .../test_metric_filter_rendering.py | 2 +- .../test_metric_time_without_metrics.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- .../test_time_spine_join_rendering.py | 2 +- 65 files changed, 215 insertions(+), 215 deletions(-) create mode 100644 metricflow/semantics/dataflow/__init__.py create mode 100644 metricflow/semantics/dataflow/builder/__init__.py rename metricflow/{ => semantics}/dataflow/builder/dataflow_plan_builder.py (97%) rename metricflow/{ => semantics}/dataflow/builder/measure_additiveness.py (100%) rename metricflow/{ => semantics}/dataflow/builder/node_data_set.py (100%) rename metricflow/{ => semantics}/dataflow/builder/node_evaluator.py (97%) rename metricflow/{ => semantics}/dataflow/builder/partitions.py (100%) rename metricflow/{ => semantics}/dataflow/builder/source_node.py (96%) create mode 100644 metricflow/semantics/dataflow/nodes/__init__.py rename metricflow/{ => semantics}/dataflow/nodes/add_generated_uuid.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/aggregate_measures.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/combine_aggregated_outputs.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/compute_metrics.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/constrain_time.py (96%) rename metricflow/{ => semantics}/dataflow/nodes/filter_elements.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/join_conversion_events.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/join_over_time.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/join_to_base.py (98%) rename metricflow/{ => semantics}/dataflow/nodes/join_to_time_spine.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/metric_time_transform.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/min_max.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/order_by_limit.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/read_sql_source.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/semi_additive_join.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/where_filter.py (96%) rename metricflow/{ => semantics}/dataflow/nodes/write_to_dataframe.py (100%) rename metricflow/{ => semantics}/dataflow/nodes/write_to_table.py (100%) create mode 100644 metricflow/semantics/dataflow/optimizer/__init__.py rename metricflow/{ => semantics}/dataflow/optimizer/dataflow_plan_optimizer.py (100%) create mode 100644 metricflow/semantics/dataflow/optimizer/source_scan/__init__.py rename metricflow/{ => semantics}/dataflow/optimizer/source_scan/cm_branch_combiner.py (91%) rename metricflow/{ => semantics}/dataflow/optimizer/source_scan/matching_linkable_specs.py (100%) rename metricflow/{ => semantics}/dataflow/optimizer/source_scan/source_scan_optimizer.py (89%) diff --git a/metricflow/dataflow/dataflow_plan.py b/metricflow/dataflow/dataflow_plan.py index 6f28c0d7c2..4f538ce038 100644 --- a/metricflow/dataflow/dataflow_plan.py +++ b/metricflow/dataflow/dataflow_plan.py @@ -12,24 +12,24 @@ from metricflow.visitor import Visitable, VisitorOutputT if typing.TYPE_CHECKING: - from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode - from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode - from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode - from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode - from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode - from metricflow.dataflow.nodes.filter_elements import FilterElementsNode - from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode - from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode - from metricflow.dataflow.nodes.join_to_base import JoinToBaseOutputNode - from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode - from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode - from metricflow.dataflow.nodes.min_max import MinMaxNode - from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode - from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode - from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode - from metricflow.dataflow.nodes.where_filter import WhereConstraintNode - from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode - from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode + from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode + from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode + from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode + from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode + from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode + from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode + from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode + from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode + from metricflow.semantics.dataflow.nodes.join_to_base import JoinToBaseOutputNode + from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode + from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode + from metricflow.semantics.dataflow.nodes.min_max import MinMaxNode + from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode + from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode + from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode + from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode + from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode + from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode logger = logging.getLogger(__name__) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 873b29f299..3168235749 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -13,13 +13,7 @@ from dbt_semantic_interfaces.references import EntityReference, MeasureReference, MetricReference from dbt_semantic_interfaces.type_enums import DimensionType -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.dataflow.builder.source_node import SourceNodeBuilder from metricflow.dataflow.dataflow_plan import DataflowPlan -from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import ( - SourceScanOptimizer, -) from metricflow.engine.models import Dimension, Entity, Measure, Metric, SavedQuery from metricflow.engine.time_source import ServerTimeSource from metricflow.errors.error_classes import ExecutionException @@ -39,6 +33,12 @@ from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.random_id import random_id from metricflow.semantics.dag.sequential_id import SequentialIdGenerator +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder +from metricflow.semantics.dataflow.optimizer.source_scan.source_scan_optimizer import ( + SourceScanOptimizer, +) from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet diff --git a/metricflow/plan_conversion/dataflow_to_execution.py b/metricflow/plan_conversion/dataflow_to_execution.py index f0c83b0481..1bb14f5ab5 100644 --- a/metricflow/plan_conversion/dataflow_to_execution.py +++ b/metricflow/plan_conversion/dataflow_to_execution.py @@ -9,8 +9,6 @@ DataflowPlanNode, SinkNodeVisitor, ) -from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.execution.execution_plan import ( ExecutionPlan, SelectSqlQueryToDataFrameTask, @@ -20,6 +18,8 @@ from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult, SqlQueryPlanRenderer logger = logging.getLogger(__name__) diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index 68ecec0d9d..a3ed7716e0 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -18,24 +18,6 @@ DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode -from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode -from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode -from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode -from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode -from metricflow.dataflow.nodes.join_to_base import JoinToBaseOutputNode -from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.dataflow.nodes.min_max import MinMaxNode -from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode -from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode -from metricflow.dataflow.nodes.where_filter import WhereConstraintNode -from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.instances import ( GroupByMetricInstance, InstanceSet, @@ -83,6 +65,24 @@ from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dag.sequential_id import SequentialIdGenerator +from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode +from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode +from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode +from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode +from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode +from metricflow.semantics.dataflow.nodes.join_to_base import JoinToBaseOutputNode +from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode +from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.semantics.dataflow.nodes.min_max import MinMaxNode +from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode +from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode +from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode +from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint diff --git a/metricflow/plan_conversion/instance_converters.py b/metricflow/plan_conversion/instance_converters.py index df636ac841..10b9108b2a 100644 --- a/metricflow/plan_conversion/instance_converters.py +++ b/metricflow/plan_conversion/instance_converters.py @@ -16,7 +16,6 @@ from metricflow.aggregation_properties import AggregationState from metricflow.assert_one_arg import assert_exactly_one_arg_set -from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.instances import ( DimensionInstance, EntityInstance, @@ -30,6 +29,7 @@ TimeDimensionInstance, ) from metricflow.plan_conversion.select_column_gen import SelectColumnSet +from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.model.semantics.metric_lookup import MetricLookup from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index 0baaec7146..b7279e76b7 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -6,16 +6,16 @@ from dbt_semantic_interfaces.references import EntityReference, TimeDimensionReference -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.dataflow.builder.partitions import PartitionJoinResolver from metricflow.dataflow.dataflow_plan import ( BaseOutput, ) -from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode -from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.semantics.dataflow.builder.partitions import PartitionJoinResolver +from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode +from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS, SemanticModelJoinEvaluator from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup diff --git a/metricflow/plan_conversion/sql_join_builder.py b/metricflow/plan_conversion/sql_join_builder.py index cc90d503b6..5d1e20dfab 100644 --- a/metricflow/plan_conversion/sql_join_builder.py +++ b/metricflow/plan_conversion/sql_join_builder.py @@ -7,11 +7,11 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.assert_one_arg import assert_exactly_one_arg_set -from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode -from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode -from metricflow.dataflow.nodes.join_to_base import JoinDescription -from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr +from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode +from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode +from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription +from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.sql.sql_exprs import ( SqlColumnReference, diff --git a/metricflow/semantics/dataflow/__init__.py b/metricflow/semantics/dataflow/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metricflow/semantics/dataflow/builder/__init__.py b/metricflow/semantics/dataflow/builder/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py similarity index 97% rename from metricflow/dataflow/builder/dataflow_plan_builder.py rename to metricflow/semantics/dataflow/builder/dataflow_plan_builder.py index 5ce910ece1..3d585eacbb 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py @@ -22,35 +22,11 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.dataflow.builder.node_evaluator import ( - JoinLinkableInstancesRecipe, - LinkableInstanceSatisfiabilityEvaluation, - NodeEvaluatorForLinkableInstances, -) -from metricflow.dataflow.builder.source_node import SourceNodeSet from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlan, SinkOutput, ) -from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode -from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode -from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode -from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode -from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode -from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode -from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.dataflow.nodes.min_max import MinMaxNode -from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode -from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode -from metricflow.dataflow.nodes.where_filter import WhereConstraintNode -from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode -from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat @@ -60,6 +36,30 @@ from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId +from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.semantics.dataflow.builder.node_evaluator import ( + JoinLinkableInstancesRecipe, + LinkableInstanceSatisfiabilityEvaluation, + NodeEvaluatorForLinkableInstances, +) +from metricflow.semantics.dataflow.builder.source_node import SourceNodeSet +from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode +from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode +from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode +from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode +from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode +from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode +from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode +from metricflow.semantics.dataflow.nodes.min_max import MinMaxNode +from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode +from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode +from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode +from metricflow.semantics.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup diff --git a/metricflow/dataflow/builder/measure_additiveness.py b/metricflow/semantics/dataflow/builder/measure_additiveness.py similarity index 100% rename from metricflow/dataflow/builder/measure_additiveness.py rename to metricflow/semantics/dataflow/builder/measure_additiveness.py diff --git a/metricflow/dataflow/builder/node_data_set.py b/metricflow/semantics/dataflow/builder/node_data_set.py similarity index 100% rename from metricflow/dataflow/builder/node_data_set.py rename to metricflow/semantics/dataflow/builder/node_data_set.py diff --git a/metricflow/dataflow/builder/node_evaluator.py b/metricflow/semantics/dataflow/builder/node_evaluator.py similarity index 97% rename from metricflow/dataflow/builder/node_evaluator.py rename to metricflow/semantics/dataflow/builder/node_evaluator.py index 74aa49b007..b8f71d7eca 100644 --- a/metricflow/dataflow/builder/node_evaluator.py +++ b/metricflow/semantics/dataflow/builder/node_evaluator.py @@ -23,20 +23,20 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.dataflow.builder.partitions import ( - PartitionDimensionJoinDescription, - PartitionJoinResolver, - PartitionTimeDimensionJoinDescription, -) from metricflow.dataflow.dataflow_plan import BaseOutput -from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.dataflow.nodes.join_to_base import JoinDescription, ValidityWindowJoinDescription -from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.instances import InstanceSet from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription +from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.semantics.dataflow.builder.partitions import ( + PartitionDimensionJoinDescription, + PartitionJoinResolver, + PartitionTimeDimensionJoinDescription, +) +from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, ValidityWindowJoinDescription +from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator diff --git a/metricflow/dataflow/builder/partitions.py b/metricflow/semantics/dataflow/builder/partitions.py similarity index 100% rename from metricflow/dataflow/builder/partitions.py rename to metricflow/semantics/dataflow/builder/partitions.py diff --git a/metricflow/dataflow/builder/source_node.py b/metricflow/semantics/dataflow/builder/source_node.py similarity index 96% rename from metricflow/dataflow/builder/source_node.py rename to metricflow/semantics/dataflow/builder/source_node.py index 6bc5bc242d..506e99f5d7 100644 --- a/metricflow/dataflow/builder/source_node.py +++ b/metricflow/semantics/dataflow/builder/source_node.py @@ -8,8 +8,8 @@ from metricflow.dataflow.dataflow_plan import ( BaseOutput, ) -from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode +from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup diff --git a/metricflow/semantics/dataflow/nodes/__init__.py b/metricflow/semantics/dataflow/nodes/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metricflow/dataflow/nodes/add_generated_uuid.py b/metricflow/semantics/dataflow/nodes/add_generated_uuid.py similarity index 100% rename from metricflow/dataflow/nodes/add_generated_uuid.py rename to metricflow/semantics/dataflow/nodes/add_generated_uuid.py diff --git a/metricflow/dataflow/nodes/aggregate_measures.py b/metricflow/semantics/dataflow/nodes/aggregate_measures.py similarity index 100% rename from metricflow/dataflow/nodes/aggregate_measures.py rename to metricflow/semantics/dataflow/nodes/aggregate_measures.py diff --git a/metricflow/dataflow/nodes/combine_aggregated_outputs.py b/metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py similarity index 100% rename from metricflow/dataflow/nodes/combine_aggregated_outputs.py rename to metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py diff --git a/metricflow/dataflow/nodes/compute_metrics.py b/metricflow/semantics/dataflow/nodes/compute_metrics.py similarity index 100% rename from metricflow/dataflow/nodes/compute_metrics.py rename to metricflow/semantics/dataflow/nodes/compute_metrics.py diff --git a/metricflow/dataflow/nodes/constrain_time.py b/metricflow/semantics/dataflow/nodes/constrain_time.py similarity index 96% rename from metricflow/dataflow/nodes/constrain_time.py rename to metricflow/semantics/dataflow/nodes/constrain_time.py index d231a85c07..8c3f7b65bd 100644 --- a/metricflow/dataflow/nodes/constrain_time.py +++ b/metricflow/semantics/dataflow/nodes/constrain_time.py @@ -3,9 +3,9 @@ from typing import Sequence from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/filter_elements.py b/metricflow/semantics/dataflow/nodes/filter_elements.py similarity index 100% rename from metricflow/dataflow/nodes/filter_elements.py rename to metricflow/semantics/dataflow/nodes/filter_elements.py diff --git a/metricflow/dataflow/nodes/join_conversion_events.py b/metricflow/semantics/dataflow/nodes/join_conversion_events.py similarity index 100% rename from metricflow/dataflow/nodes/join_conversion_events.py rename to metricflow/semantics/dataflow/nodes/join_conversion_events.py diff --git a/metricflow/dataflow/nodes/join_over_time.py b/metricflow/semantics/dataflow/nodes/join_over_time.py similarity index 100% rename from metricflow/dataflow/nodes/join_over_time.py rename to metricflow/semantics/dataflow/nodes/join_over_time.py diff --git a/metricflow/dataflow/nodes/join_to_base.py b/metricflow/semantics/dataflow/nodes/join_to_base.py similarity index 98% rename from metricflow/dataflow/nodes/join_to_base.py rename to metricflow/semantics/dataflow/nodes/join_to_base.py index 60b4569d38..571c237af4 100644 --- a/metricflow/dataflow/nodes/join_to_base.py +++ b/metricflow/semantics/dataflow/nodes/join_to_base.py @@ -3,13 +3,13 @@ from dataclasses import dataclass from typing import List, Optional, Sequence, Tuple -from metricflow.dataflow.builder.partitions import ( - PartitionDimensionJoinDescription, - PartitionTimeDimensionJoinDescription, -) from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty, NodeId +from metricflow.semantics.dataflow.builder.partitions import ( + PartitionDimensionJoinDescription, + PartitionTimeDimensionJoinDescription, +) from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec from metricflow.sql.sql_plan import SqlJoinType from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/join_to_time_spine.py b/metricflow/semantics/dataflow/nodes/join_to_time_spine.py similarity index 100% rename from metricflow/dataflow/nodes/join_to_time_spine.py rename to metricflow/semantics/dataflow/nodes/join_to_time_spine.py diff --git a/metricflow/dataflow/nodes/metric_time_transform.py b/metricflow/semantics/dataflow/nodes/metric_time_transform.py similarity index 100% rename from metricflow/dataflow/nodes/metric_time_transform.py rename to metricflow/semantics/dataflow/nodes/metric_time_transform.py diff --git a/metricflow/dataflow/nodes/min_max.py b/metricflow/semantics/dataflow/nodes/min_max.py similarity index 100% rename from metricflow/dataflow/nodes/min_max.py rename to metricflow/semantics/dataflow/nodes/min_max.py diff --git a/metricflow/dataflow/nodes/order_by_limit.py b/metricflow/semantics/dataflow/nodes/order_by_limit.py similarity index 100% rename from metricflow/dataflow/nodes/order_by_limit.py rename to metricflow/semantics/dataflow/nodes/order_by_limit.py diff --git a/metricflow/dataflow/nodes/read_sql_source.py b/metricflow/semantics/dataflow/nodes/read_sql_source.py similarity index 100% rename from metricflow/dataflow/nodes/read_sql_source.py rename to metricflow/semantics/dataflow/nodes/read_sql_source.py diff --git a/metricflow/dataflow/nodes/semi_additive_join.py b/metricflow/semantics/dataflow/nodes/semi_additive_join.py similarity index 100% rename from metricflow/dataflow/nodes/semi_additive_join.py rename to metricflow/semantics/dataflow/nodes/semi_additive_join.py diff --git a/metricflow/dataflow/nodes/where_filter.py b/metricflow/semantics/dataflow/nodes/where_filter.py similarity index 96% rename from metricflow/dataflow/nodes/where_filter.py rename to metricflow/semantics/dataflow/nodes/where_filter.py index a1de30559f..5c9d105efa 100644 --- a/metricflow/dataflow/nodes/where_filter.py +++ b/metricflow/semantics/dataflow/nodes/where_filter.py @@ -3,9 +3,9 @@ from typing import Sequence from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput from metricflow.semantics.specs.spec_classes import WhereFilterSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/dataflow/nodes/write_to_dataframe.py b/metricflow/semantics/dataflow/nodes/write_to_dataframe.py similarity index 100% rename from metricflow/dataflow/nodes/write_to_dataframe.py rename to metricflow/semantics/dataflow/nodes/write_to_dataframe.py diff --git a/metricflow/dataflow/nodes/write_to_table.py b/metricflow/semantics/dataflow/nodes/write_to_table.py similarity index 100% rename from metricflow/dataflow/nodes/write_to_table.py rename to metricflow/semantics/dataflow/nodes/write_to_table.py diff --git a/metricflow/semantics/dataflow/optimizer/__init__.py b/metricflow/semantics/dataflow/optimizer/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metricflow/dataflow/optimizer/dataflow_plan_optimizer.py b/metricflow/semantics/dataflow/optimizer/dataflow_plan_optimizer.py similarity index 100% rename from metricflow/dataflow/optimizer/dataflow_plan_optimizer.py rename to metricflow/semantics/dataflow/optimizer/dataflow_plan_optimizer.py diff --git a/metricflow/semantics/dataflow/optimizer/source_scan/__init__.py b/metricflow/semantics/dataflow/optimizer/source_scan/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py b/metricflow/semantics/dataflow/optimizer/source_scan/cm_branch_combiner.py similarity index 91% rename from metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py rename to metricflow/semantics/dataflow/optimizer/source_scan/cm_branch_combiner.py index d057e3f74d..10cbba3c3f 100644 --- a/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py +++ b/metricflow/semantics/dataflow/optimizer/source_scan/cm_branch_combiner.py @@ -9,25 +9,25 @@ DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode -from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode -from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode -from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode -from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode -from metricflow.dataflow.nodes.join_to_base import JoinToBaseOutputNode -from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.dataflow.nodes.min_max import MinMaxNode -from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode -from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode -from metricflow.dataflow.nodes.where_filter import WhereConstraintNode -from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode -from metricflow.dataflow.optimizer.source_scan.matching_linkable_specs import MatchingLinkableSpecsTransform +from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode +from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode +from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode +from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode +from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode +from metricflow.semantics.dataflow.nodes.join_to_base import JoinToBaseOutputNode +from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode +from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.semantics.dataflow.nodes.min_max import MinMaxNode +from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode +from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode +from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode +from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode +from metricflow.semantics.dataflow.optimizer.source_scan.matching_linkable_specs import MatchingLinkableSpecsTransform from metricflow.semantics.specs.spec_classes import MetricSpec logger = logging.getLogger(__name__) diff --git a/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py b/metricflow/semantics/dataflow/optimizer/source_scan/matching_linkable_specs.py similarity index 100% rename from metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py rename to metricflow/semantics/dataflow/optimizer/source_scan/matching_linkable_specs.py diff --git a/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py b/metricflow/semantics/dataflow/optimizer/source_scan/source_scan_optimizer.py similarity index 89% rename from metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py rename to metricflow/semantics/dataflow/optimizer/source_scan/source_scan_optimizer.py index 464346105f..638ec45d90 100644 --- a/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py +++ b/metricflow/semantics/dataflow/optimizer/source_scan/source_scan_optimizer.py @@ -11,31 +11,31 @@ DataflowPlanNodeVisitor, SinkOutput, ) -from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode -from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode -from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode -from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode -from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode -from metricflow.dataflow.nodes.join_to_base import JoinToBaseOutputNode -from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.dataflow.nodes.min_max import MinMaxNode -from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode -from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode -from metricflow.dataflow.nodes.where_filter import WhereConstraintNode -from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode -from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer -from metricflow.dataflow.optimizer.source_scan.cm_branch_combiner import ( +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId +from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode +from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode +from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode +from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode +from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode +from metricflow.semantics.dataflow.nodes.join_to_base import JoinToBaseOutputNode +from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode +from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.semantics.dataflow.nodes.min_max import MinMaxNode +from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode +from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode +from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode +from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode +from metricflow.semantics.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer +from metricflow.semantics.dataflow.optimizer.source_scan.cm_branch_combiner import ( ComputeMetricsBranchCombiner, ComputeMetricsBranchCombinerResult, ) -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/model/data_warehouse_model_validator.py b/metricflow/semantics/model/data_warehouse_model_validator.py index e80c7f1bc0..7d7a201cc7 100644 --- a/metricflow/semantics/model/data_warehouse_model_validator.py +++ b/metricflow/semantics/model/data_warehouse_model_validator.py @@ -29,15 +29,15 @@ ValidationWarning, ) -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.dataflow.builder.source_node import SourceNodeBuilder from metricflow.dataflow.dataflow_plan import BaseOutput -from metricflow.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder +from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup diff --git a/tests/dataflow/builder/test_cyclic_join.py b/tests/dataflow/builder/test_cyclic_join.py index 28c4119c9c..bca8250eeb 100644 --- a/tests/dataflow/builder/test_cyclic_join.py +++ b/tests/dataflow/builder/test_cyclic_join.py @@ -7,7 +7,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import EntityReference -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index fee463ed40..537fdd3722 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -9,9 +9,9 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/tests/dataflow/builder/test_measure_additiveness.py b/tests/dataflow/builder/test_measure_additiveness.py index 9faf91d7d8..1f19e92fe5 100644 --- a/tests/dataflow/builder/test_measure_additiveness.py +++ b/tests/dataflow/builder/test_measure_additiveness.py @@ -2,7 +2,7 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType -from metricflow.dataflow.builder.measure_additiveness import group_measure_specs_by_additiveness +from metricflow.semantics.dataflow.builder.measure_additiveness import group_measure_specs_by_additiveness from metricflow.semantics.specs.spec_classes import MeasureSpec, NonAdditiveDimensionSpec diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index ba867279da..5c7388919d 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -7,15 +7,15 @@ from dbt_semantic_interfaces.references import SemanticModelElementReference from metricflow.aggregation_properties import AggregationState -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode -from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.instances import ( InstanceSet, MeasureInstance, ) from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource +from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode +from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index 48048633e4..42e45388d3 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -6,17 +6,17 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.dataflow.builder.node_evaluator import ( +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor +from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.semantics.dataflow.builder.node_evaluator import ( JoinLinkableInstancesRecipe, LinkableInstanceSatisfiabilityEvaluation, NodeEvaluatorForLinkableInstances, ) -from metricflow.dataflow.builder.partitions import PartitionTimeDimensionJoinDescription -from metricflow.dataflow.builder.source_node import SourceNodeSet -from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor +from metricflow.semantics.dataflow.builder.partitions import PartitionTimeDimensionJoinDescription +from metricflow.semantics.dataflow.builder.source_node import SourceNodeSet +from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py index e7a1df5124..2d9f7f8b41 100644 --- a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py +++ b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py @@ -9,14 +9,14 @@ BaseOutput, DataflowPlan, ) -from metricflow.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.dataflow.optimizer.source_scan.cm_branch_combiner import ( +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId +from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.semantics.dataflow.optimizer.source_scan.cm_branch_combiner import ( ComputeMetricsBranchCombiner, ComputeMetricsBranchCombinerResult, ) -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index 57c3d2887d..20466f7599 100644 --- a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -7,32 +7,32 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.dataflow_plan import ( DataflowPlan, DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode -from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode -from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode -from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode -from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode -from metricflow.dataflow.nodes.join_to_base import JoinToBaseOutputNode -from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.dataflow.nodes.min_max import MinMaxNode -from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode -from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode -from metricflow.dataflow.nodes.where_filter import WhereConstraintNode -from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode -from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode +from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode +from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode +from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode +from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode +from metricflow.semantics.dataflow.nodes.join_to_base import JoinToBaseOutputNode +from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode +from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.semantics.dataflow.nodes.min_max import MinMaxNode +from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode +from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode +from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode +from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode +from metricflow.semantics.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index 7bff3af82a..c0a5fcde6a 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -6,14 +6,14 @@ from dbt_semantic_interfaces.references import SemanticModelReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec diff --git a/tests/fixtures/dataflow_fixtures.py b/tests/fixtures/dataflow_fixtures.py index 6690c581c1..6498e0c941 100644 --- a/tests/fixtures/dataflow_fixtures.py +++ b/tests/fixtures/dataflow_fixtures.py @@ -4,10 +4,10 @@ import pytest -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index 00a963a558..35aaf56619 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -17,15 +17,15 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.dataflow.builder.source_node import SourceNodeBuilder, SourceNodeSet -from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.engine.metricflow_engine import MetricFlowEngine from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder, SourceNodeSet +from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup diff --git a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py index 7c651e34f9..80af323bf6 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, diff --git a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index 917a13aa07..c77d99b13e 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -5,10 +5,10 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.references import EntityReference -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index 8a7c886990..09d43b4f86 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -6,10 +6,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import TimeDimensionReference -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.semantics.specs.spec_classes import MetricFlowQuerySpec, MetricSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py index f025fd934f..d953c393ce 100644 --- a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py +++ b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py @@ -5,9 +5,9 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.instances import InstanceSet from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription +from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index ecc85a2fda..e807ee38f6 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -3,11 +3,11 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_execution import DataflowToExecutionPlanConverter from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index 634a19f8ee..5285421063 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -10,27 +10,27 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlan, ) -from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode -from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode -from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode -from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode -from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode -from metricflow.dataflow.nodes.where_filter import WhereConstraintNode -from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dag.mf_dag import DagId +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode +from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode +from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode +from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode +from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode +from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode +from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests/query_rendering/test_cumulative_metric_rendering.py index 5409b39e6e..3db6fc118d 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests/query_rendering/test_cumulative_metric_rendering.py @@ -11,10 +11,10 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index 4bb046cfef..fe8c0efb05 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -9,10 +9,10 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index 0a96abf39d..103a25ef9e 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -12,10 +12,10 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests/query_rendering/test_granularity_date_part_rendering.py index c5094748c8..f706a045af 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests/query_rendering/test_granularity_date_part_rendering.py @@ -11,9 +11,9 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, diff --git a/tests/query_rendering/test_metric_filter_rendering.py b/tests/query_rendering/test_metric_filter_rendering.py index 9d1a14581e..d8fc2b97cb 100644 --- a/tests/query_rendering/test_metric_filter_rendering.py +++ b/tests/query_rendering/test_metric_filter_rendering.py @@ -4,10 +4,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_metric_time_without_metrics.py b/tests/query_rendering/test_metric_time_without_metrics.py index 2a4db8d66d..03a3ea8dc8 100644 --- a/tests/query_rendering/test_metric_time_without_metrics.py +++ b/tests/query_rendering/test_metric_time_without_metrics.py @@ -7,9 +7,9 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index a640b27e87..271ff761d5 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -16,10 +16,10 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests/query_rendering/test_time_spine_join_rendering.py index dd35fe51e2..6afac297a2 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests/query_rendering/test_time_spine_join_rendering.py @@ -12,9 +12,9 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, From 4f282024a91dfca9c44f8b234cd4d9ae02f0b941 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 15:28:00 -0700 Subject: [PATCH 17/80] Move the rest of dataflow. --- metricflow/dataflow/__init__.py | 0 metricflow/dataflow/builder/__init__.py | 0 metricflow/dataflow/nodes/__init__.py | 0 metricflow/dataflow/optimizer/__init__.py | 0 metricflow/dataflow/optimizer/source_scan/__init__.py | 0 metricflow/engine/metricflow_engine.py | 2 +- metricflow/plan_conversion/dataflow_to_execution.py | 10 +++++----- metricflow/plan_conversion/dataflow_to_sql.py | 10 +++++----- metricflow/plan_conversion/node_processor.py | 6 +++--- .../dataflow/builder/dataflow_plan_builder.py | 10 +++++----- metricflow/semantics/dataflow/builder/node_data_set.py | 6 +++--- .../semantics/dataflow/builder/node_evaluator.py | 2 +- metricflow/semantics/dataflow/builder/source_node.py | 2 +- metricflow/{ => semantics}/dataflow/dataflow_plan.py | 0 .../semantics/dataflow/nodes/add_generated_uuid.py | 2 +- .../semantics/dataflow/nodes/aggregate_measures.py | 2 +- .../dataflow/nodes/combine_aggregated_outputs.py | 4 ++-- metricflow/semantics/dataflow/nodes/compute_metrics.py | 6 +++--- metricflow/semantics/dataflow/nodes/constrain_time.py | 2 +- metricflow/semantics/dataflow/nodes/filter_elements.py | 2 +- .../semantics/dataflow/nodes/join_conversion_events.py | 2 +- metricflow/semantics/dataflow/nodes/join_over_time.py | 2 +- metricflow/semantics/dataflow/nodes/join_to_base.py | 2 +- .../semantics/dataflow/nodes/join_to_time_spine.py | 2 +- .../semantics/dataflow/nodes/metric_time_transform.py | 2 +- metricflow/semantics/dataflow/nodes/min_max.py | 2 +- metricflow/semantics/dataflow/nodes/order_by_limit.py | 6 +++--- metricflow/semantics/dataflow/nodes/read_sql_source.py | 2 +- .../semantics/dataflow/nodes/semi_additive_join.py | 2 +- metricflow/semantics/dataflow/nodes/where_filter.py | 2 +- .../semantics/dataflow/nodes/write_to_dataframe.py | 4 ++-- metricflow/semantics/dataflow/nodes/write_to_table.py | 4 ++-- .../dataflow/optimizer/dataflow_plan_optimizer.py | 2 +- .../optimizer/source_scan/cm_branch_combiner.py | 2 +- .../optimizer/source_scan/source_scan_optimizer.py | 6 +++--- .../semantics/model/data_warehouse_model_validator.py | 2 +- .../optimizer/source_scan/test_cm_branch_combiner.py | 6 +++--- .../source_scan/test_source_scan_optimizer.py | 6 +++--- tests/plan_conversion/test_dataflow_to_sql_plan.py | 8 ++++---- tests/query_rendering/compare_rendered_query.py | 2 +- tests/snapshot_utils.py | 2 +- 41 files changed, 67 insertions(+), 67 deletions(-) delete mode 100644 metricflow/dataflow/__init__.py delete mode 100644 metricflow/dataflow/builder/__init__.py delete mode 100644 metricflow/dataflow/nodes/__init__.py delete mode 100644 metricflow/dataflow/optimizer/__init__.py delete mode 100644 metricflow/dataflow/optimizer/source_scan/__init__.py rename metricflow/{ => semantics}/dataflow/dataflow_plan.py (100%) diff --git a/metricflow/dataflow/__init__.py b/metricflow/dataflow/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/metricflow/dataflow/builder/__init__.py b/metricflow/dataflow/builder/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/metricflow/dataflow/nodes/__init__.py b/metricflow/dataflow/nodes/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/metricflow/dataflow/optimizer/__init__.py b/metricflow/dataflow/optimizer/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/metricflow/dataflow/optimizer/source_scan/__init__.py b/metricflow/dataflow/optimizer/source_scan/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 3168235749..be0fe13833 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -13,7 +13,6 @@ from dbt_semantic_interfaces.references import EntityReference, MeasureReference, MetricReference from dbt_semantic_interfaces.type_enums import DimensionType -from metricflow.dataflow.dataflow_plan import DataflowPlan from metricflow.engine.models import Dimension, Entity, Measure, Metric, SavedQuery from metricflow.engine.time_source import ServerTimeSource from metricflow.errors.error_classes import ExecutionException @@ -36,6 +35,7 @@ from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder +from metricflow.semantics.dataflow.dataflow_plan import DataflowPlan from metricflow.semantics.dataflow.optimizer.source_scan.source_scan_optimizer import ( SourceScanOptimizer, ) diff --git a/metricflow/plan_conversion/dataflow_to_execution.py b/metricflow/plan_conversion/dataflow_to_execution.py index 1bb14f5ab5..d0593d0601 100644 --- a/metricflow/plan_conversion/dataflow_to_execution.py +++ b/metricflow/plan_conversion/dataflow_to_execution.py @@ -4,11 +4,6 @@ from typing_extensions import override -from metricflow.dataflow.dataflow_plan import ( - DataflowPlan, - DataflowPlanNode, - SinkNodeVisitor, -) from metricflow.execution.execution_plan import ( ExecutionPlan, SelectSqlQueryToDataFrameTask, @@ -18,6 +13,11 @@ from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dataflow.dataflow_plan import ( + DataflowPlan, + DataflowPlanNode, + SinkNodeVisitor, +) from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult, SqlQueryPlanRenderer diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index a3ed7716e0..eed25284e2 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -13,11 +13,6 @@ from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords from metricflow.aggregation_properties import AggregationState -from metricflow.dataflow.dataflow_plan import ( - BaseOutput, - DataflowPlanNode, - DataflowPlanNodeVisitor, -) from metricflow.instances import ( GroupByMetricInstance, InstanceSet, @@ -65,6 +60,11 @@ from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dag.sequential_id import SequentialIdGenerator +from metricflow.semantics.dataflow.dataflow_plan import ( + BaseOutput, + DataflowPlanNode, + DataflowPlanNodeVisitor, +) from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index b7279e76b7..5775c91627 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -6,12 +6,12 @@ from dbt_semantic_interfaces.references import EntityReference, TimeDimensionReference -from metricflow.dataflow.dataflow_plan import ( - BaseOutput, -) from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.partitions import PartitionJoinResolver +from metricflow.semantics.dataflow.dataflow_plan import ( + BaseOutput, +) from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode diff --git a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py index 3d585eacbb..6b6f6c4a7d 100644 --- a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py @@ -22,11 +22,6 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.dataflow.dataflow_plan import ( - BaseOutput, - DataflowPlan, - SinkOutput, -) from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat @@ -43,6 +38,11 @@ NodeEvaluatorForLinkableInstances, ) from metricflow.semantics.dataflow.builder.source_node import SourceNodeSet +from metricflow.semantics.dataflow.dataflow_plan import ( + BaseOutput, + DataflowPlan, + SinkOutput, +) from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode diff --git a/metricflow/semantics/dataflow/builder/node_data_set.py b/metricflow/semantics/dataflow/builder/node_data_set.py index 8cc4723045..3f5bb3e57b 100644 --- a/metricflow/semantics/dataflow/builder/node_data_set.py +++ b/metricflow/semantics/dataflow/builder/node_data_set.py @@ -2,11 +2,11 @@ from typing import TYPE_CHECKING, Dict, Optional, Sequence -from metricflow.dataflow.dataflow_plan import ( - DataflowPlanNode, -) from metricflow.mf_logging.runtime import log_block_runtime from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.dataflow.dataflow_plan import ( + DataflowPlanNode, +) from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/semantics/dataflow/builder/node_evaluator.py b/metricflow/semantics/dataflow/builder/node_evaluator.py index b8f71d7eca..f4abc098fa 100644 --- a/metricflow/semantics/dataflow/builder/node_evaluator.py +++ b/metricflow/semantics/dataflow/builder/node_evaluator.py @@ -23,7 +23,6 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.dataflow.dataflow_plan import BaseOutput from metricflow.instances import InstanceSet from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription @@ -33,6 +32,7 @@ PartitionJoinResolver, PartitionTimeDimensionJoinDescription, ) +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, ValidityWindowJoinDescription diff --git a/metricflow/semantics/dataflow/builder/source_node.py b/metricflow/semantics/dataflow/builder/source_node.py index 506e99f5d7..ef97d65484 100644 --- a/metricflow/semantics/dataflow/builder/source_node.py +++ b/metricflow/semantics/dataflow/builder/source_node.py @@ -5,7 +5,7 @@ from dbt_semantic_interfaces.references import TimeDimensionReference -from metricflow.dataflow.dataflow_plan import ( +from metricflow.semantics.dataflow.dataflow_plan import ( BaseOutput, ) from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode diff --git a/metricflow/dataflow/dataflow_plan.py b/metricflow/semantics/dataflow/dataflow_plan.py similarity index 100% rename from metricflow/dataflow/dataflow_plan.py rename to metricflow/semantics/dataflow/dataflow_plan.py diff --git a/metricflow/semantics/dataflow/nodes/add_generated_uuid.py b/metricflow/semantics/dataflow/nodes/add_generated_uuid.py index cce4ae5e09..beb914c4e0 100644 --- a/metricflow/semantics/dataflow/nodes/add_generated_uuid.py +++ b/metricflow/semantics/dataflow/nodes/add_generated_uuid.py @@ -2,9 +2,9 @@ from typing import Sequence -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/aggregate_measures.py b/metricflow/semantics/dataflow/nodes/aggregate_measures.py index fa64809fe3..29b7ac0882 100644 --- a/metricflow/semantics/dataflow/nodes/aggregate_measures.py +++ b/metricflow/semantics/dataflow/nodes/aggregate_measures.py @@ -3,8 +3,8 @@ from abc import ABC from typing import Sequence, Tuple -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import MetricInputMeasureSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py b/metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py index 0e0ce0932c..545e4584c4 100644 --- a/metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py +++ b/metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py @@ -2,13 +2,13 @@ from typing import Sequence, Union -from metricflow.dataflow.dataflow_plan import ( +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dataflow.dataflow_plan import ( BaseOutput, ComputedMetricsOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/compute_metrics.py b/metricflow/semantics/dataflow/nodes/compute_metrics.py index ea68066a66..6476f20bd0 100644 --- a/metricflow/semantics/dataflow/nodes/compute_metrics.py +++ b/metricflow/semantics/dataflow/nodes/compute_metrics.py @@ -2,14 +2,14 @@ from typing import Sequence -from metricflow.dataflow.dataflow_plan import ( +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.dataflow_plan import ( BaseOutput, ComputedMetricsOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.specs.spec_classes import MetricSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/constrain_time.py b/metricflow/semantics/dataflow/nodes/constrain_time.py index 8c3f7b65bd..de875e62e5 100644 --- a/metricflow/semantics/dataflow/nodes/constrain_time.py +++ b/metricflow/semantics/dataflow/nodes/constrain_time.py @@ -2,9 +2,9 @@ from typing import Sequence -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/filter_elements.py b/metricflow/semantics/dataflow/nodes/filter_elements.py index 8d269caf05..c7b04480a6 100644 --- a/metricflow/semantics/dataflow/nodes/filter_elements.py +++ b/metricflow/semantics/dataflow/nodes/filter_elements.py @@ -2,10 +2,10 @@ from typing import Optional, Sequence, Tuple -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import InstanceSpecSet from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/join_conversion_events.py b/metricflow/semantics/dataflow/nodes/join_conversion_events.py index 5ed58bbcdd..09ff93e6ff 100644 --- a/metricflow/semantics/dataflow/nodes/join_conversion_events.py +++ b/metricflow/semantics/dataflow/nodes/join_conversion_events.py @@ -4,9 +4,9 @@ from dbt_semantic_interfaces.protocols import MetricTimeWindow -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import ( ConstantPropertySpec, EntitySpec, diff --git a/metricflow/semantics/dataflow/nodes/join_over_time.py b/metricflow/semantics/dataflow/nodes/join_over_time.py index 9a38c42ebc..0143efcf2a 100644 --- a/metricflow/semantics/dataflow/nodes/join_over_time.py +++ b/metricflow/semantics/dataflow/nodes/join_over_time.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.protocols import MetricTimeWindow from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty, NodeId +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/join_to_base.py b/metricflow/semantics/dataflow/nodes/join_to_base.py index 571c237af4..48a628376b 100644 --- a/metricflow/semantics/dataflow/nodes/join_to_base.py +++ b/metricflow/semantics/dataflow/nodes/join_to_base.py @@ -3,13 +3,13 @@ from dataclasses import dataclass from typing import List, Optional, Sequence, Tuple -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty, NodeId from metricflow.semantics.dataflow.builder.partitions import ( PartitionDimensionJoinDescription, PartitionTimeDimensionJoinDescription, ) +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec from metricflow.sql.sql_plan import SqlJoinType from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/join_to_time_spine.py b/metricflow/semantics/dataflow/nodes/join_to_time_spine.py index f294a519f6..d04314aaad 100644 --- a/metricflow/semantics/dataflow/nodes/join_to_time_spine.py +++ b/metricflow/semantics/dataflow/nodes/join_to_time_spine.py @@ -6,9 +6,9 @@ from dbt_semantic_interfaces.protocols import MetricTimeWindow from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from metricflow.sql.sql_plan import SqlJoinType diff --git a/metricflow/semantics/dataflow/nodes/metric_time_transform.py b/metricflow/semantics/dataflow/nodes/metric_time_transform.py index 85aea74880..2e70227174 100644 --- a/metricflow/semantics/dataflow/nodes/metric_time_transform.py +++ b/metricflow/semantics/dataflow/nodes/metric_time_transform.py @@ -4,9 +4,9 @@ from dbt_semantic_interfaces.references import TimeDimensionReference -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/min_max.py b/metricflow/semantics/dataflow/nodes/min_max.py index bb8dc8105c..e58c4098a7 100644 --- a/metricflow/semantics/dataflow/nodes/min_max.py +++ b/metricflow/semantics/dataflow/nodes/min_max.py @@ -2,8 +2,8 @@ from typing import Sequence -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/order_by_limit.py b/metricflow/semantics/dataflow/nodes/order_by_limit.py index bd4c407d92..cf4954d849 100644 --- a/metricflow/semantics/dataflow/nodes/order_by_limit.py +++ b/metricflow/semantics/dataflow/nodes/order_by_limit.py @@ -2,14 +2,14 @@ from typing import Optional, Sequence, Union -from metricflow.dataflow.dataflow_plan import ( +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.dataflow_plan import ( BaseOutput, ComputedMetricsOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.specs.spec_classes import OrderBySpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/read_sql_source.py b/metricflow/semantics/dataflow/nodes/read_sql_source.py index 301bd22d09..b49fd11078 100644 --- a/metricflow/semantics/dataflow/nodes/read_sql_source.py +++ b/metricflow/semantics/dataflow/nodes/read_sql_source.py @@ -5,9 +5,9 @@ import jinja2 -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/semi_additive_join.py b/metricflow/semantics/dataflow/nodes/semi_additive_join.py index 720ef9bc4f..000b33ff40 100644 --- a/metricflow/semantics/dataflow/nodes/semi_additive_join.py +++ b/metricflow/semantics/dataflow/nodes/semi_additive_join.py @@ -4,9 +4,9 @@ from dbt_semantic_interfaces.type_enums import AggregationType -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/where_filter.py b/metricflow/semantics/dataflow/nodes/where_filter.py index 5c9d105efa..fa1deaaadb 100644 --- a/metricflow/semantics/dataflow/nodes/where_filter.py +++ b/metricflow/semantics/dataflow/nodes/where_filter.py @@ -2,9 +2,9 @@ from typing import Sequence -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput from metricflow.semantics.specs.spec_classes import WhereFilterSpec from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/write_to_dataframe.py b/metricflow/semantics/dataflow/nodes/write_to_dataframe.py index bab11f8a22..75d60cc100 100644 --- a/metricflow/semantics/dataflow/nodes/write_to_dataframe.py +++ b/metricflow/semantics/dataflow/nodes/write_to_dataframe.py @@ -2,14 +2,14 @@ from typing import Sequence -from metricflow.dataflow.dataflow_plan import ( +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dataflow.dataflow_plan import ( BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor, SinkNodeVisitor, SinkOutput, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/write_to_table.py b/metricflow/semantics/dataflow/nodes/write_to_table.py index 76319eebb4..374eb91195 100644 --- a/metricflow/semantics/dataflow/nodes/write_to_table.py +++ b/metricflow/semantics/dataflow/nodes/write_to_table.py @@ -2,14 +2,14 @@ from typing import Sequence -from metricflow.dataflow.dataflow_plan import ( +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dataflow.dataflow_plan import ( BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor, SinkNodeVisitor, SinkOutput, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.sql.sql_table import SqlTable from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/optimizer/dataflow_plan_optimizer.py b/metricflow/semantics/dataflow/optimizer/dataflow_plan_optimizer.py index a43488c27c..78eca94472 100644 --- a/metricflow/semantics/dataflow/optimizer/dataflow_plan_optimizer.py +++ b/metricflow/semantics/dataflow/optimizer/dataflow_plan_optimizer.py @@ -2,7 +2,7 @@ from abc import ABC, abstractmethod -from metricflow.dataflow.dataflow_plan import DataflowPlan +from metricflow.semantics.dataflow.dataflow_plan import DataflowPlan class DataflowPlanOptimizer(ABC): diff --git a/metricflow/semantics/dataflow/optimizer/source_scan/cm_branch_combiner.py b/metricflow/semantics/dataflow/optimizer/source_scan/cm_branch_combiner.py index 10cbba3c3f..88e3f8bbaa 100644 --- a/metricflow/semantics/dataflow/optimizer/source_scan/cm_branch_combiner.py +++ b/metricflow/semantics/dataflow/optimizer/source_scan/cm_branch_combiner.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from typing import List, Optional, Sequence -from metricflow.dataflow.dataflow_plan import ( +from metricflow.semantics.dataflow.dataflow_plan import ( BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor, diff --git a/metricflow/semantics/dataflow/optimizer/source_scan/source_scan_optimizer.py b/metricflow/semantics/dataflow/optimizer/source_scan/source_scan_optimizer.py index 638ec45d90..293b6d8591 100644 --- a/metricflow/semantics/dataflow/optimizer/source_scan/source_scan_optimizer.py +++ b/metricflow/semantics/dataflow/optimizer/source_scan/source_scan_optimizer.py @@ -4,15 +4,15 @@ from dataclasses import dataclass from typing import List, Optional, Sequence -from metricflow.dataflow.dataflow_plan import ( +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId +from metricflow.semantics.dataflow.dataflow_plan import ( BaseOutput, DataflowPlan, DataflowPlanNode, DataflowPlanNodeVisitor, SinkOutput, ) -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode diff --git a/metricflow/semantics/model/data_warehouse_model_validator.py b/metricflow/semantics/model/data_warehouse_model_validator.py index 7d7a201cc7..5751260fbe 100644 --- a/metricflow/semantics/model/data_warehouse_model_validator.py +++ b/metricflow/semantics/model/data_warehouse_model_validator.py @@ -29,7 +29,6 @@ ValidationWarning, ) -from metricflow.dataflow.dataflow_plan import BaseOutput from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter @@ -37,6 +36,7 @@ from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.dataset.dataset_classes import DataSet diff --git a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py index 2d9f7f8b41..d76010ed26 100644 --- a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py +++ b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py @@ -5,12 +5,12 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.dataflow.dataflow_plan import ( +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId +from metricflow.semantics.dataflow.dataflow_plan import ( BaseOutput, DataflowPlan, ) -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.semantics.dataflow.optimizer.source_scan.cm_branch_combiner import ( diff --git a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index 20466f7599..04cc79e73d 100644 --- a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -7,13 +7,13 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.dataflow_plan import ( +from metricflow.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.semantics.dataflow.dataflow_plan import ( DataflowPlan, DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index 5285421063..72b5764f88 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -10,15 +10,15 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataflow.dataflow_plan import ( - BaseOutput, - DataflowPlan, -) from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.semantics.dataflow.dataflow_plan import ( + BaseOutput, + DataflowPlan, +) from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode diff --git a/tests/query_rendering/compare_rendered_query.py b/tests/query_rendering/compare_rendered_query.py index ee6ecad8fc..03b2e5e377 100644 --- a/tests/query_rendering/compare_rendered_query.py +++ b/tests/query_rendering/compare_rendered_query.py @@ -4,10 +4,10 @@ from _pytest.fixtures import FixtureRequest -from metricflow.dataflow.dataflow_plan import BaseOutput from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.mf_dag import DagId +from metricflow.semantics.dataflow.dataflow_plan import BaseOutput from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index de7d4d943f..6056ba4ce7 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -7,11 +7,11 @@ import tabulate from _pytest.fixtures import FixtureRequest -from metricflow.dataflow.dataflow_plan import DataflowPlan from metricflow.execution.execution_plan import ExecutionPlan from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.dag.mf_dag import MetricFlowDag +from metricflow.semantics.dataflow.dataflow_plan import DataflowPlan from metricflow.semantics.model.semantics.linkable_spec_resolver import LinkableElementSet from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet From 64cad8255c7b8bf77875b1d24af808bbdad83431 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 15:30:31 -0700 Subject: [PATCH 18/80] Move some files out of plan_conversion. --- metricflow/engine/metricflow_engine.py | 8 ++++---- .../convert_to_execution_plan.py | 0 .../dataflow_to_execution.py | 2 +- tests/plan_conversion/test_dataflow_to_execution.py | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename metricflow/{plan_conversion => execution}/convert_to_execution_plan.py (100%) rename metricflow/{plan_conversion => execution}/dataflow_to_execution.py (97%) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index be0fe13833..73ba03f728 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -16,15 +16,15 @@ from metricflow.engine.models import Dimension, Entity, Measure, Metric, SavedQuery from metricflow.engine.time_source import ServerTimeSource from metricflow.errors.error_classes import ExecutionException +from metricflow.execution.convert_to_execution_plan import ConvertToExecutionPlanResult +from metricflow.execution.dataflow_to_execution import ( + DataflowToExecutionPlanConverter, +) from metricflow.execution.execution_plan import ExecutionPlan, SqlQuery from metricflow.execution.executor import SequentialPlanExecutor from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.convert_to_execution_plan import ConvertToExecutionPlanResult -from metricflow.plan_conversion.dataflow_to_execution import ( - DataflowToExecutionPlanConverter, -) from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter from metricflow.protocols.sql_client import SqlClient diff --git a/metricflow/plan_conversion/convert_to_execution_plan.py b/metricflow/execution/convert_to_execution_plan.py similarity index 100% rename from metricflow/plan_conversion/convert_to_execution_plan.py rename to metricflow/execution/convert_to_execution_plan.py diff --git a/metricflow/plan_conversion/dataflow_to_execution.py b/metricflow/execution/dataflow_to_execution.py similarity index 97% rename from metricflow/plan_conversion/dataflow_to_execution.py rename to metricflow/execution/dataflow_to_execution.py index d0593d0601..1590157d17 100644 --- a/metricflow/plan_conversion/dataflow_to_execution.py +++ b/metricflow/execution/dataflow_to_execution.py @@ -4,12 +4,12 @@ from typing_extensions import override +from metricflow.execution.convert_to_execution_plan import ConvertToExecutionPlanResult from metricflow.execution.execution_plan import ( ExecutionPlan, SelectSqlQueryToDataFrameTask, SelectSqlQueryToTableTask, ) -from metricflow.plan_conversion.convert_to_execution_plan import ConvertToExecutionPlanResult from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index e807ee38f6..7c8c8e801f 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -3,8 +3,8 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow.execution.dataflow_to_execution import DataflowToExecutionPlanConverter from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.dataflow_to_execution import DataflowToExecutionPlanConverter from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder From fb53b89590785a109132f22ce1fe71055e5b3dec Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 15:37:21 -0700 Subject: [PATCH 19/80] Move plan_conversion. --- CONTRIBUTING.md | 2 +- metricflow/engine/metricflow_engine.py | 4 +- .../execution/convert_to_execution_plan.py | 2 +- metricflow/execution/dataflow_to_execution.py | 4 +- .../dataflow/builder/dataflow_plan_builder.py | 2 +- .../dataflow/builder/node_data_set.py | 2 +- .../dataflow/builder/node_evaluator.py | 2 +- .../dataset/convert_semantic_model.py | 2 +- .../model/data_warehouse_model_validator.py | 6 +- .../model/semantic_manifest_lookup.py | 2 +- .../plan_conversion/__init__.py | 0 .../plan_conversion/column_resolver.py | 0 .../plan_conversion/convert_to_sql_plan.py | 0 .../plan_conversion/dataflow_to_sql.py | 70 +++++++++---------- .../plan_conversion/instance_converters.py | 2 +- .../plan_conversion/node_processor.py | 0 .../plan_conversion/select_column_gen.py | 0 .../plan_conversion/spec_transforms.py | 4 +- .../sql_expression_builders.py | 0 .../plan_conversion/sql_join_builder.py | 2 +- .../plan_conversion/time_spine.py | 0 tests/dataflow/builder/test_node_data_set.py | 4 +- tests/dataflow/builder/test_node_evaluator.py | 4 +- tests/examples/test_node_sql.py | 4 +- tests/fixtures/cli_fixtures.py | 2 +- tests/fixtures/dataflow_fixtures.py | 2 +- tests/fixtures/manifest_fixtures.py | 4 +- tests/fixtures/sql_fixtures.py | 2 +- tests/integration/conftest.py | 4 +- tests/integration/test_configured_cases.py | 6 +- tests/integration/test_rendered_query.py | 2 +- .../test_conversion_metrics_to_sql.py | 2 +- .../test_distinct_values_to_sql.py | 2 +- .../test_metric_time_dimension_to_sql.py | 2 +- ...select_columns_with_measures_aggregated.py | 8 +-- ...create_validity_window_join_description.py | 2 +- .../test_dataflow_to_execution.py | 4 +- .../test_dataflow_to_sql_plan.py | 2 +- tests/query/test_suggestions.py | 2 +- .../query_rendering/compare_rendered_query.py | 2 +- .../test_cumulative_metric_rendering.py | 2 +- .../test_derived_metric_rendering.py | 2 +- .../test_fill_nulls_with_rendering.py | 2 +- .../test_granularity_date_part_rendering.py | 2 +- .../test_metric_filter_rendering.py | 2 +- .../test_metric_time_without_metrics.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- .../test_time_spine_join_rendering.py | 2 +- 48 files changed, 91 insertions(+), 91 deletions(-) rename metricflow/{ => semantics}/plan_conversion/__init__.py (100%) rename metricflow/{ => semantics}/plan_conversion/column_resolver.py (100%) rename metricflow/{ => semantics}/plan_conversion/convert_to_sql_plan.py (100%) rename metricflow/{ => semantics}/plan_conversion/dataflow_to_sql.py (99%) rename metricflow/{ => semantics}/plan_conversion/instance_converters.py (99%) rename metricflow/{ => semantics}/plan_conversion/node_processor.py (100%) rename metricflow/{ => semantics}/plan_conversion/select_column_gen.py (100%) rename metricflow/{ => semantics}/plan_conversion/spec_transforms.py (95%) rename metricflow/{ => semantics}/plan_conversion/sql_expression_builders.py (100%) rename metricflow/{ => semantics}/plan_conversion/sql_join_builder.py (99%) rename metricflow/{ => semantics}/plan_conversion/time_spine.py (100%) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f58ab62caa..1cca6aa3e1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,7 +48,7 @@ When running any one of the hatch commands, the environment is automatically set - These are generally laid out in a similar hierarchy to the main package. - Let's try them out: - Run the [dataflow plan to sql plan conversion tests](tests/plan_conversion/test_dataflow_to_sql_plan.py): `hatch run dev-env:pytest tests/plan_conversion/test_dataflow_to_sql_plan.py`. - - Modify something in the [dataflow to sql plan converter logic](metricflow/plan_conversion/dataflow_to_sql.py). I like to throw exceptions just to make sure things blow up. + - Modify something in the [dataflow to sql plan converter logic](metricflow/semantics/plan_conversion/dataflow_to_sql.py). I like to throw exceptions just to make sure things blow up. - Run the test again. Did anything break? - Remember to clean up when you're done playing with the tests! 3. Make changes to the codebase and verify them through further testing, including test runs against other warehouse engines. diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 73ba03f728..0650c88495 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -24,8 +24,6 @@ from metricflow.execution.executor import SequentialPlanExecutor from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_exceptions import InvalidQueryException @@ -50,6 +48,8 @@ ) from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName +from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.query_param_implementations import SavedQueryParameter from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec diff --git a/metricflow/execution/convert_to_execution_plan.py b/metricflow/execution/convert_to_execution_plan.py index c67c11c2ee..39de7e3054 100644 --- a/metricflow/execution/convert_to_execution_plan.py +++ b/metricflow/execution/convert_to_execution_plan.py @@ -3,7 +3,7 @@ from dataclasses import dataclass from metricflow.execution.execution_plan import ExecutionPlan -from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult +from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult diff --git a/metricflow/execution/dataflow_to_execution.py b/metricflow/execution/dataflow_to_execution.py index 1590157d17..fcc5a2ac2f 100644 --- a/metricflow/execution/dataflow_to_execution.py +++ b/metricflow/execution/dataflow_to_execution.py @@ -10,8 +10,6 @@ SelectSqlQueryToDataFrameTask, SelectSqlQueryToTableTask, ) -from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.dataflow_plan import ( DataflowPlan, @@ -20,6 +18,8 @@ ) from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode +from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult, SqlQueryPlanRenderer logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py index 6b6f6c4a7d..9bd3bf6a47 100644 --- a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py @@ -26,7 +26,6 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime -from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp from metricflow.semantics.dag.id_prefix import StaticIdPrefix @@ -63,6 +62,7 @@ from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( ConstantPropertySpec, diff --git a/metricflow/semantics/dataflow/builder/node_data_set.py b/metricflow/semantics/dataflow/builder/node_data_set.py index 3f5bb3e57b..345a738b28 100644 --- a/metricflow/semantics/dataflow/builder/node_data_set.py +++ b/metricflow/semantics/dataflow/builder/node_data_set.py @@ -3,11 +3,11 @@ from typing import TYPE_CHECKING, Dict, Optional, Sequence from metricflow.mf_logging.runtime import log_block_runtime -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.dataflow.dataflow_plan import ( DataflowPlanNode, ) from metricflow.semantics.dataset.sql_dataset import SqlDataSet +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver if TYPE_CHECKING: diff --git a/metricflow/semantics/dataflow/builder/node_evaluator.py b/metricflow/semantics/dataflow/builder/node_evaluator.py index f4abc098fa..f635f4c6e9 100644 --- a/metricflow/semantics/dataflow/builder/node_evaluator.py +++ b/metricflow/semantics/dataflow/builder/node_evaluator.py @@ -25,7 +25,6 @@ from metricflow.instances import InstanceSet from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.partitions import ( PartitionDimensionJoinDescription, @@ -41,6 +40,7 @@ from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow.semantics.plan_conversion.instance_converters import CreateValidityWindowJoinDescription from metricflow.semantics.specs.spec_classes import ( InstanceSpecSet, LinkableInstanceSpec, diff --git a/metricflow/semantics/dataset/convert_semantic_model.py b/metricflow/semantics/dataset/convert_semantic_model.py index 470aedd0fd..bd80d53ca2 100644 --- a/metricflow/semantics/dataset/convert_semantic_model.py +++ b/metricflow/semantics/dataset/convert_semantic_model.py @@ -24,13 +24,13 @@ MeasureInstance, TimeDimensionInstance, ) -from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.semantics.dag.id_prefix import DynamicIdPrefix, StaticIdPrefix from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.model.spec_converters import MeasureConverter +from metricflow.semantics.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DEFAULT_TIME_GRANULARITY, diff --git a/metricflow/semantics/model/data_warehouse_model_validator.py b/metricflow/semantics/model/data_warehouse_model_validator.py index 5751260fbe..a441f24bf9 100644 --- a/metricflow/semantics/model/data_warehouse_model_validator.py +++ b/metricflow/semantics/model/data_warehouse_model_validator.py @@ -30,9 +30,6 @@ ) from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder @@ -41,6 +38,9 @@ from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec from metricflow.sql.sql_bind_parameters import SqlBindParameters diff --git a/metricflow/semantics/model/semantic_manifest_lookup.py b/metricflow/semantics/model/semantic_manifest_lookup.py index bf0619297b..32076d009f 100644 --- a/metricflow/semantics/model/semantic_manifest_lookup.py +++ b/metricflow/semantics/model/semantic_manifest_lookup.py @@ -6,9 +6,9 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.model.semantics.metric_lookup import MetricLookup from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/plan_conversion/__init__.py b/metricflow/semantics/plan_conversion/__init__.py similarity index 100% rename from metricflow/plan_conversion/__init__.py rename to metricflow/semantics/plan_conversion/__init__.py diff --git a/metricflow/plan_conversion/column_resolver.py b/metricflow/semantics/plan_conversion/column_resolver.py similarity index 100% rename from metricflow/plan_conversion/column_resolver.py rename to metricflow/semantics/plan_conversion/column_resolver.py diff --git a/metricflow/plan_conversion/convert_to_sql_plan.py b/metricflow/semantics/plan_conversion/convert_to_sql_plan.py similarity index 100% rename from metricflow/plan_conversion/convert_to_sql_plan.py rename to metricflow/semantics/plan_conversion/convert_to_sql_plan.py diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/semantics/plan_conversion/dataflow_to_sql.py similarity index 99% rename from metricflow/plan_conversion/dataflow_to_sql.py rename to metricflow/semantics/plan_conversion/dataflow_to_sql.py index eed25284e2..b4a58f814b 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/semantics/plan_conversion/dataflow_to_sql.py @@ -21,41 +21,6 @@ TimeDimensionInstance, ) from metricflow.mf_logging.formatting import indent -from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult -from metricflow.plan_conversion.instance_converters import ( - AddGroupByMetrics, - AddLinkToLinkableElements, - AddMetadata, - AddMetrics, - AliasAggregatedMeasures, - ChangeAssociatedColumns, - ChangeMeasureAggregationState, - ConvertToMetadata, - CreateSelectColumnForCombineOutputNode, - CreateSelectColumnsForInstances, - CreateSelectColumnsWithMeasuresAggregated, - CreateSqlColumnReferencesForInstances, - FilterElements, - FilterLinkableInstancesWithLeadingLink, - RemoveMeasures, - RemoveMetrics, - UpdateMeasureFillNullsWith, - create_select_columns_for_instance_sets, -) -from metricflow.plan_conversion.select_column_gen import ( - SelectColumnSet, -) -from metricflow.plan_conversion.spec_transforms import ( - CreateColumnAssociations, - CreateSelectCoalescedColumnsForLinkableSpecs, - SelectOnlyLinkableSpecs, -) -from metricflow.plan_conversion.sql_join_builder import ( - AnnotatedSqlDataSet, - ColumnEqualityDescription, - SqlQueryPlanJoinBuilder, -) -from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.protocols.sql_client import SqlEngine from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId @@ -87,6 +52,41 @@ from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult +from metricflow.semantics.plan_conversion.instance_converters import ( + AddGroupByMetrics, + AddLinkToLinkableElements, + AddMetadata, + AddMetrics, + AliasAggregatedMeasures, + ChangeAssociatedColumns, + ChangeMeasureAggregationState, + ConvertToMetadata, + CreateSelectColumnForCombineOutputNode, + CreateSelectColumnsForInstances, + CreateSelectColumnsWithMeasuresAggregated, + CreateSqlColumnReferencesForInstances, + FilterElements, + FilterLinkableInstancesWithLeadingLink, + RemoveMeasures, + RemoveMetrics, + UpdateMeasureFillNullsWith, + create_select_columns_for_instance_sets, +) +from metricflow.semantics.plan_conversion.select_column_gen import ( + SelectColumnSet, +) +from metricflow.semantics.plan_conversion.spec_transforms import ( + CreateColumnAssociations, + CreateSelectCoalescedColumnsForLinkableSpecs, + SelectOnlyLinkableSpecs, +) +from metricflow.semantics.plan_conversion.sql_join_builder import ( + AnnotatedSqlDataSet, + ColumnEqualityDescription, + SqlQueryPlanJoinBuilder, +) +from metricflow.semantics.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.semantics.specs.column_assoc import ( ColumnAssociation, ColumnAssociationResolver, diff --git a/metricflow/plan_conversion/instance_converters.py b/metricflow/semantics/plan_conversion/instance_converters.py similarity index 99% rename from metricflow/plan_conversion/instance_converters.py rename to metricflow/semantics/plan_conversion/instance_converters.py index 10b9108b2a..ceba8731b0 100644 --- a/metricflow/plan_conversion/instance_converters.py +++ b/metricflow/semantics/plan_conversion/instance_converters.py @@ -28,10 +28,10 @@ MetricInstance, TimeDimensionInstance, ) -from metricflow.plan_conversion.select_column_gen import SelectColumnSet from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.model.semantics.metric_lookup import MetricLookup from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow.semantics.plan_conversion.select_column_gen import SelectColumnSet from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/semantics/plan_conversion/node_processor.py similarity index 100% rename from metricflow/plan_conversion/node_processor.py rename to metricflow/semantics/plan_conversion/node_processor.py diff --git a/metricflow/plan_conversion/select_column_gen.py b/metricflow/semantics/plan_conversion/select_column_gen.py similarity index 100% rename from metricflow/plan_conversion/select_column_gen.py rename to metricflow/semantics/plan_conversion/select_column_gen.py diff --git a/metricflow/plan_conversion/spec_transforms.py b/metricflow/semantics/plan_conversion/spec_transforms.py similarity index 95% rename from metricflow/plan_conversion/spec_transforms.py rename to metricflow/semantics/plan_conversion/spec_transforms.py index 7acb630e39..c2bb602989 100644 --- a/metricflow/plan_conversion/spec_transforms.py +++ b/metricflow/semantics/plan_conversion/spec_transforms.py @@ -2,8 +2,8 @@ from typing import List, Sequence -from metricflow.plan_conversion.select_column_gen import SelectColumnSet -from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr +from metricflow.semantics.plan_conversion.select_column_gen import SelectColumnSet +from metricflow.semantics.plan_conversion.sql_expression_builders import make_coalesced_expr from metricflow.semantics.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( InstanceSpecSet, diff --git a/metricflow/plan_conversion/sql_expression_builders.py b/metricflow/semantics/plan_conversion/sql_expression_builders.py similarity index 100% rename from metricflow/plan_conversion/sql_expression_builders.py rename to metricflow/semantics/plan_conversion/sql_expression_builders.py diff --git a/metricflow/plan_conversion/sql_join_builder.py b/metricflow/semantics/plan_conversion/sql_join_builder.py similarity index 99% rename from metricflow/plan_conversion/sql_join_builder.py rename to metricflow/semantics/plan_conversion/sql_join_builder.py index 5d1e20dfab..61d73a7731 100644 --- a/metricflow/plan_conversion/sql_join_builder.py +++ b/metricflow/semantics/plan_conversion/sql_join_builder.py @@ -7,12 +7,12 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.assert_one_arg import assert_exactly_one_arg_set -from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode from metricflow.semantics.dataset.sql_dataset import SqlDataSet +from metricflow.semantics.plan_conversion.sql_expression_builders import make_coalesced_expr from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, diff --git a/metricflow/plan_conversion/time_spine.py b/metricflow/semantics/plan_conversion/time_spine.py similarity index 100% rename from metricflow/plan_conversion/time_spine.py rename to metricflow/semantics/plan_conversion/time_spine.py diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index 5c7388919d..43041e4d71 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -11,13 +11,13 @@ InstanceSet, MeasureInstance, ) -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey from metricflow.semantics.specs.spec_classes import ( LinklessEntitySpec, diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index 42e45388d3..c993a1cad7 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -6,8 +6,6 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.node_evaluator import ( JoinLinkableInstancesRecipe, @@ -19,6 +17,8 @@ from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.semantics.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index c0a5fcde6a..78f7f17b03 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -7,8 +7,6 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode @@ -16,6 +14,8 @@ from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer diff --git a/tests/fixtures/cli_fixtures.py b/tests/fixtures/cli_fixtures.py index 6047ecd15a..77b71f50ef 100644 --- a/tests/fixtures/cli_fixtures.py +++ b/tests/fixtures/cli_fixtures.py @@ -15,9 +15,9 @@ from dbt_metricflow.cli.cli_context import CLIContext from dbt_metricflow.cli.dbt_connectors.dbt_config_accessor import dbtArtifacts, dbtProjectMetadata from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import dbt_project_dir diff --git a/tests/fixtures/dataflow_fixtures.py b/tests/fixtures/dataflow_fixtures.py index 6498e0c941..54a2812eff 100644 --- a/tests/fixtures/dataflow_fixtures.py +++ b/tests/fixtures/dataflow_fixtures.py @@ -4,10 +4,10 @@ import pytest -from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index 35aaf56619..1610f7a4dc 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -18,8 +18,6 @@ from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder @@ -29,6 +27,8 @@ from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.id_fixtures import IdNumberSpace, patch_id_generators_helper diff --git a/tests/fixtures/sql_fixtures.py b/tests/fixtures/sql_fixtures.py index c14a5fd78e..91f2d4c1be 100644 --- a/tests/fixtures/sql_fixtures.py +++ b/tests/fixtures/sql_fixtures.py @@ -4,7 +4,7 @@ import pytest -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index c1a530800d..e3643c3e76 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -6,10 +6,10 @@ from dbt_semantic_interfaces.test_utils import as_datetime from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/integration/test_configured_cases.py b/tests/integration/test_configured_cases.py index 1495ce5095..1e36a83bd8 100644 --- a/tests/integration/test_configured_cases.py +++ b/tests/integration/test_configured_cases.py @@ -15,12 +15,12 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest -from metricflow.plan_conversion.column_resolver import ( - DunderColumnAssociationResolver, -) from metricflow.protocols.query_parameter import DimensionOrEntityQueryParameter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.column_resolver import ( + DunderColumnAssociationResolver, +) from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, diff --git a/tests/integration/test_rendered_query.py b/tests/integration/test_rendered_query.py index 3713c0073b..fca71fbd61 100644 --- a/tests/integration/test_rendered_query.py +++ b/tests/integration/test_rendered_query.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.test_utils import as_datetime from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers diff --git a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py index 80af323bf6..a871d0d51a 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, diff --git a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index c77d99b13e..d328dd3781 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -5,10 +5,10 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.references import EntityReference -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index 09d43b4f86..98e2d264c6 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -6,10 +6,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import TimeDimensionReference -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import MetricFlowQuerySpec, MetricSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py index 9490350cdf..15d0c8f19f 100644 --- a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py +++ b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py @@ -3,13 +3,13 @@ from typing import Mapping from metricflow.instances import InstanceSet -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.instance_converters import ( +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.semantics.plan_conversion.instance_converters import ( CreateSelectColumnsWithMeasuresAggregated, FilterElements, ) -from metricflow.plan_conversion.select_column_gen import SelectColumnSet -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.select_column_gen import SelectColumnSet from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec, MetricInputMeasureSpec from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, diff --git a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py index d953c393ce..1bff816a2d 100644 --- a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py +++ b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py @@ -6,9 +6,9 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.instances import InstanceSet -from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.instance_converters import CreateValidityWindowJoinDescription from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index 7c8c8e801f..771a85efad 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -4,11 +4,11 @@ from _pytest.fixtures import FixtureRequest from metricflow.execution.dataflow_to_execution import DataflowToExecutionPlanConverter -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index 72b5764f88..69a6ea52e5 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -10,7 +10,6 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dag.mf_dag import DagId @@ -32,6 +31,7 @@ from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/query/test_suggestions.py b/tests/query/test_suggestions.py index 0260c741b5..ac0e894b2b 100644 --- a/tests/query/test_suggestions.py +++ b/tests/query/test_suggestions.py @@ -12,10 +12,10 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.model.modify.modify_manifest import modify_manifest from tests.model.modify.modify_metric_filter import ModifyMetricFilterTransform diff --git a/tests/query_rendering/compare_rendered_query.py b/tests/query_rendering/compare_rendered_query.py index 03b2e5e377..1dc18d4583 100644 --- a/tests/query_rendering/compare_rendered_query.py +++ b/tests/query_rendering/compare_rendered_query.py @@ -4,10 +4,10 @@ from _pytest.fixtures import FixtureRequest -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.dataflow_plan import BaseOutput +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests/query_rendering/test_cumulative_metric_rendering.py index 3db6fc118d..02b81fd173 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests/query_rendering/test_cumulative_metric_rendering.py @@ -11,11 +11,11 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index fe8c0efb05..6b89b2462d 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -9,12 +9,12 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index 103a25ef9e..a3616adee3 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -12,11 +12,11 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests/query_rendering/test_granularity_date_part_rendering.py index f706a045af..2a8956976e 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests/query_rendering/test_granularity_date_part_rendering.py @@ -11,10 +11,10 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, diff --git a/tests/query_rendering/test_metric_filter_rendering.py b/tests/query_rendering/test_metric_filter_rendering.py index d8fc2b97cb..6a1f7d4719 100644 --- a/tests/query_rendering/test_metric_filter_rendering.py +++ b/tests/query_rendering/test_metric_filter_rendering.py @@ -4,10 +4,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_metric_time_without_metrics.py b/tests/query_rendering/test_metric_time_without_metrics.py index 03a3ea8dc8..95d40f0fb5 100644 --- a/tests/query_rendering/test_metric_time_without_metrics.py +++ b/tests/query_rendering/test_metric_time_without_metrics.py @@ -7,10 +7,10 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index 271ff761d5..d9a53eb5be 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -16,12 +16,12 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests/query_rendering/test_time_spine_join_rendering.py index 6afac297a2..628404ab5e 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests/query_rendering/test_time_spine_join_rendering.py @@ -12,10 +12,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, From d6cbc727c1083bdedd1934d6936a567195cfdaea Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 15:39:16 -0700 Subject: [PATCH 20/80] Move errors. --- .../dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py | 2 +- .../dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py | 2 +- metricflow/engine/metricflow_engine.py | 2 +- metricflow/semantics/dataflow/builder/dataflow_plan_builder.py | 2 +- metricflow/{ => semantics}/errors/__init__.py | 0 metricflow/{ => semantics}/errors/error_classes.py | 0 metricflow/semantics/model/semantics/linkable_spec_resolver.py | 2 +- metricflow/semantics/model/semantics/metric_lookup.py | 2 +- metricflow/semantics/model/semantics/semantic_model_lookup.py | 2 +- metricflow/semantics/specs/where_filter_dimension.py | 2 +- metricflow/semantics/specs/where_filter_entity.py | 2 +- metricflow/semantics/specs/where_filter_metric.py | 2 +- metricflow/semantics/specs/where_filter_time_dimension.py | 2 +- metricflow/sql/render/big_query.py | 2 +- metricflow/sql/render/databricks.py | 2 +- metricflow/sql/render/postgres.py | 2 +- metricflow/sql/render/redshift.py | 2 +- metricflow/sql/render/snowflake.py | 2 +- tests/dataflow/builder/test_dataflow_plan_builder.py | 2 +- tests/specs/test_where_filter_entity.py | 2 +- 20 files changed, 18 insertions(+), 18 deletions(-) rename metricflow/{ => semantics}/errors/__init__.py (100%) rename metricflow/{ => semantics}/errors/error_classes.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py index 3a79b3e455..2339d2a7b2 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py @@ -9,11 +9,11 @@ from dbt.exceptions import DbtDatabaseError from dbt_semantic_interfaces.enum_extension import assert_values_exhausted -from metricflow.errors.error_classes import SqlBindParametersNotSupportedError from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.protocols.sql_client import SqlEngine from metricflow.random_id import random_id +from metricflow.semantics.errors.error_classes import SqlBindParametersNotSupportedError from metricflow.sql.render.big_query import BigQuerySqlQueryPlanRenderer from metricflow.sql.render.databricks import DatabricksSqlQueryPlanRenderer from metricflow.sql.render.duckdb_renderer import DuckDbSqlQueryPlanRenderer diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py index 724d442de2..67ec5a20a2 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py @@ -14,8 +14,8 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from typing_extensions import Self -from metricflow.errors.error_classes import ModelCreationException from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.errors.error_classes import ModelCreationException from metricflow.semantics.model.dbt_manifest_parser import parse_manifest_from_dbt_generated_manifest logger = logging.getLogger(__name__) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 0650c88495..ed38be39b8 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -15,7 +15,6 @@ from metricflow.engine.models import Dimension, Entity, Measure, Metric, SavedQuery from metricflow.engine.time_source import ServerTimeSource -from metricflow.errors.error_classes import ExecutionException from metricflow.execution.convert_to_execution_plan import ConvertToExecutionPlanResult from metricflow.execution.dataflow_to_execution import ( DataflowToExecutionPlanConverter, @@ -40,6 +39,7 @@ from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet +from metricflow.semantics.errors.error_classes import ExecutionException from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.model.semantics.linkable_element import ( diff --git a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py index 9bd3bf6a47..f57cc12320 100644 --- a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py @@ -22,7 +22,6 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime @@ -60,6 +59,7 @@ from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.semantics.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.semantics.errors.error_classes import UnableToSatisfyQueryError from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.node_processor import PreJoinNodeProcessor diff --git a/metricflow/errors/__init__.py b/metricflow/semantics/errors/__init__.py similarity index 100% rename from metricflow/errors/__init__.py rename to metricflow/semantics/errors/__init__.py diff --git a/metricflow/errors/error_classes.py b/metricflow/semantics/errors/error_classes.py similarity index 100% rename from metricflow/errors/error_classes.py rename to metricflow/semantics/errors/error_classes.py diff --git a/metricflow/semantics/model/semantics/linkable_spec_resolver.py b/metricflow/semantics/model/semantics/linkable_spec_resolver.py index c2138c60d6..b6af7df012 100644 --- a/metricflow/semantics/model/semantics/linkable_spec_resolver.py +++ b/metricflow/semantics/model/semantics/linkable_spec_resolver.py @@ -19,9 +19,9 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.errors.error_classes import UnknownMetricLinkingError from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.semantics.errors.error_classes import UnknownMetricLinkingError from metricflow.semantics.model.semantics.linkable_element import ( ElementPathKey, LinkableDimension, diff --git a/metricflow/semantics/model/semantics/metric_lookup.py b/metricflow/semantics/model/semantics/metric_lookup.py index 2cb29b9efe..c47417cc68 100644 --- a/metricflow/semantics/model/semantics/metric_lookup.py +++ b/metricflow/semantics/model/semantics/metric_lookup.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.references import MeasureReference, MetricReference -from metricflow.errors.error_classes import DuplicateMetricError, MetricNotFoundError, NonExistentMeasureError +from metricflow.semantics.errors.error_classes import DuplicateMetricError, MetricNotFoundError, NonExistentMeasureError from metricflow.semantics.model.semantics.linkable_element import LinkableElementProperty from metricflow.semantics.model.semantics.linkable_element_set import LinkableElementSet from metricflow.semantics.model.semantics.linkable_spec_resolver import ( diff --git a/metricflow/semantics/model/semantics/semantic_model_lookup.py b/metricflow/semantics/model/semantics/semantic_model_lookup.py index d307bed6d1..646c86eae1 100644 --- a/metricflow/semantics/model/semantics/semantic_model_lookup.py +++ b/metricflow/semantics/model/semantics/semantic_model_lookup.py @@ -21,8 +21,8 @@ from dbt_semantic_interfaces.type_enums import DimensionType, EntityType from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType -from metricflow.errors.error_classes import InvalidSemanticModelError from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.errors.error_classes import InvalidSemanticModelError from metricflow.semantics.model.semantics.element_group import ElementGrouper from metricflow.semantics.model.spec_converters import MeasureConverter from metricflow.semantics.specs.spec_classes import ( diff --git a/metricflow/semantics/specs/where_filter_dimension.py b/metricflow/semantics/specs/where_filter_dimension.py index 92b47f2613..388dba9297 100644 --- a/metricflow/semantics/specs/where_filter_dimension.py +++ b/metricflow/semantics/specs/where_filter_dimension.py @@ -18,12 +18,12 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.errors.error_classes import InvalidQuerySyntax from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) +from metricflow.semantics.errors.error_classes import InvalidQuerySyntax from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker diff --git a/metricflow/semantics/specs/where_filter_entity.py b/metricflow/semantics/specs/where_filter_entity.py index cad81510f9..caf8d49747 100644 --- a/metricflow/semantics/specs/where_filter_entity.py +++ b/metricflow/semantics/specs/where_filter_entity.py @@ -13,12 +13,12 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.errors.error_classes import InvalidQuerySyntax from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) +from metricflow.semantics.errors.error_classes import InvalidQuerySyntax from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker diff --git a/metricflow/semantics/specs/where_filter_metric.py b/metricflow/semantics/specs/where_filter_metric.py index 9bd0e9cf8e..bd6f64bc48 100644 --- a/metricflow/semantics/specs/where_filter_metric.py +++ b/metricflow/semantics/specs/where_filter_metric.py @@ -10,12 +10,12 @@ from dbt_semantic_interfaces.references import EntityReference, LinkableElementReference, MetricReference from typing_extensions import override -from metricflow.errors.error_classes import InvalidQuerySyntax from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) +from metricflow.semantics.errors.error_classes import InvalidQuerySyntax from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker diff --git a/metricflow/semantics/specs/where_filter_time_dimension.py b/metricflow/semantics/specs/where_filter_time_dimension.py index acc97e3d5e..52ea1c5cc0 100644 --- a/metricflow/semantics/specs/where_filter_time_dimension.py +++ b/metricflow/semantics/specs/where_filter_time_dimension.py @@ -15,12 +15,12 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.errors.error_classes import InvalidQuerySyntax from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) +from metricflow.semantics.errors.error_classes import InvalidQuerySyntax from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker from metricflow.semantics.specs.where_filter_dimension import WhereFilterDimension diff --git a/metricflow/sql/render/big_query.py b/metricflow/sql/render/big_query.py index 0e4b68a739..58d8e76c13 100644 --- a/metricflow/sql/render/big_query.py +++ b/metricflow/sql/render/big_query.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.errors.error_classes import UnsupportedEngineFeatureError +from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/databricks.py b/metricflow/sql/render/databricks.py index f45105beba..5a44de1e8b 100644 --- a/metricflow/sql/render/databricks.py +++ b/metricflow/sql/render/databricks.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.errors.error_classes import UnsupportedEngineFeatureError +from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/postgres.py b/metricflow/sql/render/postgres.py index c4fd31179a..cce02295b4 100644 --- a/metricflow/sql/render/postgres.py +++ b/metricflow/sql/render/postgres.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.errors.error_classes import UnsupportedEngineFeatureError +from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/redshift.py b/metricflow/sql/render/redshift.py index 76f82d0964..e971bc2b1f 100644 --- a/metricflow/sql/render/redshift.py +++ b/metricflow/sql/render/redshift.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.errors.error_classes import UnsupportedEngineFeatureError +from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/snowflake.py b/metricflow/sql/render/snowflake.py index 84c01df237..e0cf08c93e 100644 --- a/metricflow/sql/render/snowflake.py +++ b/metricflow/sql/render/snowflake.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.errors.error_classes import UnsupportedEngineFeatureError +from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index 537fdd3722..f4f18473cd 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -9,10 +9,10 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.errors.error_classes import UnableToSatisfyQueryError from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.semantics.errors.error_classes import UnableToSatisfyQueryError from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/specs/test_where_filter_entity.py b/tests/specs/test_where_filter_entity.py index 8e10e797ec..2c052a14d7 100644 --- a/tests/specs/test_where_filter_entity.py +++ b/tests/specs/test_where_filter_entity.py @@ -2,8 +2,8 @@ import pytest -from metricflow.errors.error_classes import InvalidQuerySyntax from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp +from metricflow.semantics.errors.error_classes import InvalidQuerySyntax from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker from metricflow.semantics.specs.where_filter_entity import WhereFilterEntity From 02eda1b523b670bbcb63fa8e03932e90df9a2bcb Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 15:45:34 -0700 Subject: [PATCH 21/80] Move protocols. --- dbt-metricflow/dbt_metricflow/cli/cli_context.py | 2 +- .../cli/dbt_connectors/adapter_backed_client.py | 2 +- metricflow/engine/metricflow_engine.py | 4 ++-- metricflow/execution/dataflow_to_execution.py | 2 +- metricflow/execution/execution_plan.py | 2 +- metricflow/inference/context/data_warehouse.py | 2 +- metricflow/query/query_parser.py | 12 ++++++------ .../query/resolver_inputs/query_resolver_inputs.py | 2 +- .../model/data_warehouse_model_validator.py | 2 +- .../semantics/plan_conversion/dataflow_to_sql.py | 2 +- metricflow/{ => semantics}/protocols/__init__.py | 0 .../{ => semantics}/protocols/query_parameter.py | 0 metricflow/{ => semantics}/protocols/sql_client.py | 0 metricflow/semantics/specs/python_object.py | 2 +- .../semantics/specs/query_param_implementations.py | 12 ++++++------ tests/cli/test_cli.py | 2 +- tests/dataset/test_convert_semantic_model.py | 2 +- tests/examples/test_node_sql.py | 2 +- tests/execution/test_tasks.py | 2 +- tests/fixtures/cli_fixtures.py | 2 +- tests/fixtures/dataflow_fixtures.py | 2 +- tests/fixtures/manifest_fixtures.py | 2 +- tests/fixtures/sql_client_fixtures.py | 2 +- .../sql_clients/adapter_backed_ddl_client.py | 2 +- .../sql_clients/base_sql_client_implementation.py | 4 ++-- tests/fixtures/sql_clients/ddl_sql_client.py | 2 +- tests/generate_snapshots.py | 2 +- tests/integration/conftest.py | 2 +- .../query_output/test_cumulative_metrics.py | 2 +- .../query_output/test_fill_nulls_with_0.py | 2 +- .../query_output/test_metric_filter_output.py | 2 +- .../integration/query_output/test_offset_metrics.py | 2 +- tests/integration/test_configured_cases.py | 4 ++-- tests/integration/test_rendered_query.py | 2 +- tests/model/test_data_warehouse_tasks.py | 2 +- .../test_conversion_metrics_to_sql.py | 2 +- .../dataflow_to_sql/test_distinct_values_to_sql.py | 2 +- .../test_metric_time_dimension_to_sql.py | 2 +- tests/plan_conversion/test_dataflow_to_execution.py | 2 +- tests/plan_conversion/test_dataflow_to_sql_plan.py | 2 +- tests/plan_conversion/test_time_spine.py | 2 +- tests/populate_persistent_source_schemas.py | 2 +- tests/query_rendering/compare_rendered_query.py | 2 +- .../test_cumulative_metric_rendering.py | 2 +- .../query_rendering/test_derived_metric_rendering.py | 2 +- .../test_fill_nulls_with_rendering.py | 2 +- .../test_granularity_date_part_rendering.py | 2 +- .../query_rendering/test_metric_filter_rendering.py | 2 +- .../test_metric_time_without_metrics.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- .../test_time_spine_join_rendering.py | 2 +- tests/snapshot_utils.py | 2 +- tests/source_schema_tools.py | 2 +- tests/sql/compare_sql_plan.py | 2 +- tests/sql/test_engine_specific_rendering.py | 2 +- tests/sql/test_sql_plan_render.py | 2 +- tests/sql_clients/test_date_time_operations.py | 2 +- tests/sql_clients/test_sql_client.py | 2 +- tests/table_snapshot/test_source_schema.py | 2 +- tests/table_snapshot/test_table_snapshots.py | 2 +- 60 files changed, 70 insertions(+), 70 deletions(-) rename metricflow/{ => semantics}/protocols/__init__.py (100%) rename metricflow/{ => semantics}/protocols/query_parameter.py (100%) rename metricflow/{ => semantics}/protocols/sql_client.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/cli_context.py b/dbt-metricflow/dbt_metricflow/cli/cli_context.py index 129d9915e3..7d96a95702 100644 --- a/dbt-metricflow/dbt_metricflow/cli/cli_context.py +++ b/dbt-metricflow/dbt_metricflow/cli/cli_context.py @@ -10,8 +10,8 @@ from dbt_metricflow.cli.dbt_connectors.adapter_backed_client import AdapterBackedSqlClient from dbt_metricflow.cli.dbt_connectors.dbt_config_accessor import dbtArtifacts, dbtProjectMetadata from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.protocols.sql_client import SqlClient logger = logging.getLogger(__name__) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py index 2339d2a7b2..36dd026976 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py @@ -11,9 +11,9 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.protocols.sql_client import SqlEngine from metricflow.random_id import random_id from metricflow.semantics.errors.error_classes import SqlBindParametersNotSupportedError +from metricflow.semantics.protocols.sql_client import SqlEngine from metricflow.sql.render.big_query import BigQuerySqlQueryPlanRenderer from metricflow.sql.render.databricks import DatabricksSqlQueryPlanRenderer from metricflow.sql.render.duckdb_renderer import DuckDbSqlQueryPlanRenderer diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index ed38be39b8..352f1b0f49 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -23,8 +23,6 @@ from metricflow.execution.executor import SequentialPlanExecutor from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter -from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_exceptions import InvalidQueryException from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.random_id import random_id @@ -50,6 +48,8 @@ from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.query_param_implementations import SavedQueryParameter from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec diff --git a/metricflow/execution/dataflow_to_execution.py b/metricflow/execution/dataflow_to_execution.py index fcc5a2ac2f..f8544be437 100644 --- a/metricflow/execution/dataflow_to_execution.py +++ b/metricflow/execution/dataflow_to_execution.py @@ -10,7 +10,6 @@ SelectSqlQueryToDataFrameTask, SelectSqlQueryToTableTask, ) -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.dataflow_plan import ( DataflowPlan, DataflowPlanNode, @@ -20,6 +19,7 @@ from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult, SqlQueryPlanRenderer logger = logging.getLogger(__name__) diff --git a/metricflow/execution/execution_plan.py b/metricflow/execution/execution_plan.py index 39e627262d..5553a1c7fd 100644 --- a/metricflow/execution/execution_plan.py +++ b/metricflow/execution/execution_plan.py @@ -8,9 +8,9 @@ import pandas as pd -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from metricflow.visitor import Visitable diff --git a/metricflow/inference/context/data_warehouse.py b/metricflow/inference/context/data_warehouse.py index 2e6a30d609..4ab841bc60 100644 --- a/metricflow/inference/context/data_warehouse.py +++ b/metricflow/inference/context/data_warehouse.py @@ -8,7 +8,7 @@ from typing import Callable, ContextManager, Dict, Generic, Iterator, List, Optional, TypeVar from metricflow.inference.context.base import InferenceContext, InferenceContextProvider -from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.sql_column import SqlColumn from metricflow.sql.sql_table import SqlTable diff --git a/metricflow/query/query_parser.py b/metricflow/query/query_parser.py index 2b46558a22..d8d00846c4 100644 --- a/metricflow/query/query_parser.py +++ b/metricflow/query/query_parser.py @@ -17,12 +17,6 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime -from metricflow.protocols.query_parameter import ( - GroupByParameter, - MetricQueryParameter, - OrderByQueryParameter, - SavedQueryParameter, -) from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( DefaultWhereFilterPatternFactory, WhereFilterPatternFactory, @@ -51,6 +45,12 @@ from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme from metricflow.semantics.naming.metric_scheme import MetricNamingScheme from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.protocols.query_parameter import ( + GroupByParameter, + MetricQueryParameter, + OrderByQueryParameter, + SavedQueryParameter, +) from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.metric_time_pattern import MetricTimePattern from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern diff --git a/metricflow/query/resolver_inputs/query_resolver_inputs.py b/metricflow/query/resolver_inputs/query_resolver_inputs.py index 5f60534c2f..4855f4c7f3 100644 --- a/metricflow/query/resolver_inputs/query_resolver_inputs.py +++ b/metricflow/query/resolver_inputs/query_resolver_inputs.py @@ -13,11 +13,11 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.query.resolver_inputs.base_resolver_inputs import InputPatternDescription, MetricFlowQueryResolverInput from metricflow.semantics.naming.metric_scheme import MetricNamingScheme from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow.semantics.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter from metricflow.semantics.specs.patterns.metric_pattern import MetricSpecPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern diff --git a/metricflow/semantics/model/data_warehouse_model_validator.py b/metricflow/semantics/model/data_warehouse_model_validator.py index a441f24bf9..3fbf38b8f6 100644 --- a/metricflow/semantics/model/data_warehouse_model_validator.py +++ b/metricflow/semantics/model/data_warehouse_model_validator.py @@ -30,7 +30,6 @@ ) from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder from metricflow.semantics.dataflow.dataflow_plan import BaseOutput @@ -41,6 +40,7 @@ from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec from metricflow.sql.sql_bind_parameters import SqlBindParameters diff --git a/metricflow/semantics/plan_conversion/dataflow_to_sql.py b/metricflow/semantics/plan_conversion/dataflow_to_sql.py index b4a58f814b..4c16a7150e 100644 --- a/metricflow/semantics/plan_conversion/dataflow_to_sql.py +++ b/metricflow/semantics/plan_conversion/dataflow_to_sql.py @@ -21,7 +21,6 @@ TimeDimensionInstance, ) from metricflow.mf_logging.formatting import indent -from metricflow.protocols.sql_client import SqlEngine from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dag.sequential_id import SequentialIdGenerator @@ -87,6 +86,7 @@ SqlQueryPlanJoinBuilder, ) from metricflow.semantics.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource +from metricflow.semantics.protocols.sql_client import SqlEngine from metricflow.semantics.specs.column_assoc import ( ColumnAssociation, ColumnAssociationResolver, diff --git a/metricflow/protocols/__init__.py b/metricflow/semantics/protocols/__init__.py similarity index 100% rename from metricflow/protocols/__init__.py rename to metricflow/semantics/protocols/__init__.py diff --git a/metricflow/protocols/query_parameter.py b/metricflow/semantics/protocols/query_parameter.py similarity index 100% rename from metricflow/protocols/query_parameter.py rename to metricflow/semantics/protocols/query_parameter.py diff --git a/metricflow/protocols/sql_client.py b/metricflow/semantics/protocols/sql_client.py similarity index 100% rename from metricflow/protocols/sql_client.py rename to metricflow/semantics/protocols/sql_client.py diff --git a/metricflow/semantics/specs/python_object.py b/metricflow/semantics/specs/python_object.py index 939b401f19..0f66a412bf 100644 --- a/metricflow/semantics/specs/python_object.py +++ b/metricflow/semantics/specs/python_object.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.call_parameter_sets import ParseWhereFilterException from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter -from metricflow.protocols.query_parameter import GroupByParameter from metricflow.query.query_exceptions import InvalidQueryException from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName +from metricflow.semantics.protocols.query_parameter import GroupByParameter from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter diff --git a/metricflow/semantics/specs/query_param_implementations.py b/metricflow/semantics/specs/query_param_implementations.py index fce452e73d..70ceedd213 100644 --- a/metricflow/semantics/specs/query_param_implementations.py +++ b/metricflow/semantics/specs/query_param_implementations.py @@ -9,12 +9,6 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.protocols.query_parameter import ( - DimensionOrEntityQueryParameter, - InputOrderByParameter, - TimeDimensionQueryParameter, -) -from metricflow.protocols.query_parameter import SavedQueryParameter as SavedQueryParameterProtocol from metricflow.query.resolver_inputs.query_resolver_inputs import ( ResolverInputForGroupByItem, ResolverInputForMetric, @@ -23,6 +17,12 @@ from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.semantics.naming.metric_scheme import MetricNamingScheme from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.protocols.query_parameter import ( + DimensionOrEntityQueryParameter, + InputOrderByParameter, + TimeDimensionQueryParameter, +) +from metricflow.semantics.protocols.query_parameter import SavedQueryParameter as SavedQueryParameterProtocol from metricflow.semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, diff --git a/tests/cli/test_cli.py b/tests/cli/test_cli.py index f39cf9154a..9fe500d1ac 100644 --- a/tests/cli/test_cli.py +++ b/tests/cli/test_cli.py @@ -26,7 +26,7 @@ tutorial, validate_configs, ) -from metricflow.protocols.sql_client import SqlClient, SqlEngine +from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine from tests.fixtures.cli_fixtures import MetricFlowCliRunner from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.model.example_project_configuration import EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE diff --git a/tests/dataset/test_convert_semantic_model.py b/tests/dataset/test_convert_semantic_model.py index ee7ac80d25..08b2ba84a0 100644 --- a/tests/dataset/test_convert_semantic_model.py +++ b/tests/dataset/test_convert_semantic_model.py @@ -7,7 +7,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelReference -from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.protocols.sql_client import SqlClient from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_spec_set_snapshot_equal diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index 78f7f17b03..d9f9ed2afd 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -7,7 +7,6 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode @@ -16,6 +15,7 @@ from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer diff --git a/tests/execution/test_tasks.py b/tests/execution/test_tasks.py index 49d3a99602..f4de0f199c 100644 --- a/tests/execution/test_tasks.py +++ b/tests/execution/test_tasks.py @@ -8,9 +8,9 @@ SelectSqlQueryToTableTask, ) from metricflow.execution.executor import SequentialPlanExecutor -from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.random_id import random_id from metricflow.semantics.dag.mf_dag import DagId +from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal diff --git a/tests/fixtures/cli_fixtures.py b/tests/fixtures/cli_fixtures.py index 77b71f50ef..b1f01ccc0a 100644 --- a/tests/fixtures/cli_fixtures.py +++ b/tests/fixtures/cli_fixtures.py @@ -15,9 +15,9 @@ from dbt_metricflow.cli.cli_context import CLIContext from dbt_metricflow.cli.dbt_connectors.dbt_config_accessor import dbtArtifacts, dbtProjectMetadata from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import dbt_project_dir diff --git a/tests/fixtures/dataflow_fixtures.py b/tests/fixtures/dataflow_fixtures.py index 54a2812eff..8470f4c2ec 100644 --- a/tests/fixtures/dataflow_fixtures.py +++ b/tests/fixtures/dataflow_fixtures.py @@ -4,10 +4,10 @@ import pytest -from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index 1610f7a4dc..e55f95ec4a 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -18,7 +18,6 @@ from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -29,6 +28,7 @@ from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.id_fixtures import IdNumberSpace, patch_id_generators_helper diff --git a/tests/fixtures/sql_client_fixtures.py b/tests/fixtures/sql_client_fixtures.py index 6a15a3c8c9..75585f3ea7 100644 --- a/tests/fixtures/sql_client_fixtures.py +++ b/tests/fixtures/sql_client_fixtures.py @@ -10,7 +10,7 @@ from dbt.adapters.factory import get_adapter_by_type from dbt.cli.main import dbtRunner -from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, dbt_project_dir, dialect_from_url from tests.fixtures.sql_clients.adapter_backed_ddl_client import AdapterBackedDDLSqlClient from tests.fixtures.sql_clients.common_client import SqlDialect diff --git a/tests/fixtures/sql_clients/adapter_backed_ddl_client.py b/tests/fixtures/sql_clients/adapter_backed_ddl_client.py index c2882f7e0d..9bf7e322c0 100644 --- a/tests/fixtures/sql_clients/adapter_backed_ddl_client.py +++ b/tests/fixtures/sql_clients/adapter_backed_ddl_client.py @@ -7,7 +7,7 @@ import pandas as pd from dbt_metricflow.cli.dbt_connectors.adapter_backed_client import AdapterBackedSqlClient -from metricflow.protocols.sql_client import SqlEngine +from metricflow.semantics.protocols.sql_client import SqlEngine from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/tests/fixtures/sql_clients/base_sql_client_implementation.py b/tests/fixtures/sql_clients/base_sql_client_implementation.py index eaa621b878..a173c3f839 100644 --- a/tests/fixtures/sql_clients/base_sql_client_implementation.py +++ b/tests/fixtures/sql_clients/base_sql_client_implementation.py @@ -9,10 +9,10 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.protocols.sql_client import ( +from metricflow.random_id import random_id +from metricflow.semantics.protocols.sql_client import ( SqlClient, ) -from metricflow.random_id import random_id from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from metricflow.sql_request.sql_request_attributes import SqlRequestId diff --git a/tests/fixtures/sql_clients/ddl_sql_client.py b/tests/fixtures/sql_clients/ddl_sql_client.py index f877a8c433..da3570bd06 100644 --- a/tests/fixtures/sql_clients/ddl_sql_client.py +++ b/tests/fixtures/sql_clients/ddl_sql_client.py @@ -5,7 +5,7 @@ from pandas import DataFrame -from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.sql_table import SqlTable diff --git a/tests/generate_snapshots.py b/tests/generate_snapshots.py index eac0b674e6..0b0d8a7430 100644 --- a/tests/generate_snapshots.py +++ b/tests/generate_snapshots.py @@ -47,7 +47,7 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.implementations.base import FrozenBaseModel -from metricflow.protocols.sql_client import SqlEngine +from metricflow.semantics.protocols.sql_client import SqlEngine from tests.fixtures.setup_fixtures import SQL_ENGINE_SNAPSHOT_MARKER_NAME logger = logging.getLogger(__name__) diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index e3643c3e76..2a7f10b70b 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -6,10 +6,10 @@ from dbt_semantic_interfaces.test_utils import as_datetime from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/integration/query_output/test_cumulative_metrics.py b/tests/integration/query_output/test_cumulative_metrics.py index f32b6d8270..82ceedde12 100644 --- a/tests/integration/query_output/test_cumulative_metrics.py +++ b/tests/integration/query_output/test_cumulative_metrics.py @@ -7,7 +7,7 @@ from dbt_semantic_interfaces.test_utils import as_datetime from metricflow.engine.metricflow_engine import MetricFlowQueryRequest -from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers from tests.snapshot_utils import assert_str_snapshot_equal diff --git a/tests/integration/query_output/test_fill_nulls_with_0.py b/tests/integration/query_output/test_fill_nulls_with_0.py index dd1acb1b0b..a4d07b11ab 100644 --- a/tests/integration/query_output/test_fill_nulls_with_0.py +++ b/tests/integration/query_output/test_fill_nulls_with_0.py @@ -6,7 +6,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.engine.metricflow_engine import MetricFlowQueryRequest -from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers from tests.snapshot_utils import assert_str_snapshot_equal diff --git a/tests/integration/query_output/test_metric_filter_output.py b/tests/integration/query_output/test_metric_filter_output.py index f0c383372e..3a507ae2d9 100644 --- a/tests/integration/query_output/test_metric_filter_output.py +++ b/tests/integration/query_output/test_metric_filter_output.py @@ -4,7 +4,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.engine.metricflow_engine import MetricFlowQueryRequest -from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers from tests.snapshot_utils import assert_str_snapshot_equal diff --git a/tests/integration/query_output/test_offset_metrics.py b/tests/integration/query_output/test_offset_metrics.py index 987f657d16..df781bc3c8 100644 --- a/tests/integration/query_output/test_offset_metrics.py +++ b/tests/integration/query_output/test_offset_metrics.py @@ -4,7 +4,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.engine.metricflow_engine import MetricFlowQueryRequest -from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers from tests.snapshot_utils import assert_str_snapshot_equal diff --git a/tests/integration/test_configured_cases.py b/tests/integration/test_configured_cases.py index 1e36a83bd8..b244b610ad 100644 --- a/tests/integration/test_configured_cases.py +++ b/tests/integration/test_configured_cases.py @@ -15,12 +15,12 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest -from metricflow.protocols.query_parameter import DimensionOrEntityQueryParameter -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import ( DunderColumnAssociationResolver, ) +from metricflow.semantics.protocols.query_parameter import DimensionOrEntityQueryParameter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, diff --git a/tests/integration/test_rendered_query.py b/tests/integration/test_rendered_query.py index fca71fbd61..f2c4bad905 100644 --- a/tests/integration/test_rendered_query.py +++ b/tests/integration/test_rendered_query.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.test_utils import as_datetime from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers diff --git a/tests/model/test_data_warehouse_tasks.py b/tests/model/test_data_warehouse_tasks.py index e900e3ba62..10cb0653ac 100644 --- a/tests/model/test_data_warehouse_tasks.py +++ b/tests/model/test_data_warehouse_tasks.py @@ -15,12 +15,12 @@ from dbt_semantic_interfaces.transformations.semantic_manifest_transformer import PydanticSemanticManifestTransformer from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.data_warehouse_model_validator import ( DataWarehouseModelValidator, DataWarehouseTaskBuilder, DataWarehouseValidationTask, ) +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.sql_bind_parameters import SqlBindParameters from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import ( diff --git a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py index a871d0d51a..1caaf59a68 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, diff --git a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index d328dd3781..7c88337062 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -5,10 +5,10 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.references import EntityReference -from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index 98e2d264c6..f5b625b10f 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -6,10 +6,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import TimeDimensionReference -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import MetricFlowQuerySpec, MetricSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index 771a85efad..4f1e3a9575 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -4,11 +4,11 @@ from _pytest.fixtures import FixtureRequest from metricflow.execution.dataflow_to_execution import DataflowToExecutionPlanConverter -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index 69a6ea52e5..52bae6000f 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -10,7 +10,6 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder @@ -32,6 +31,7 @@ from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/plan_conversion/test_time_spine.py b/tests/plan_conversion/test_time_spine.py index f8e00aa0dd..34e56faa96 100644 --- a/tests/plan_conversion/test_time_spine.py +++ b/tests/plan_conversion/test_time_spine.py @@ -2,9 +2,9 @@ from pandas import DataFrame -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.time.time_constants import ISO8601_PYTHON_TS_FORMAT diff --git a/tests/populate_persistent_source_schemas.py b/tests/populate_persistent_source_schemas.py index c4628d71db..14f2b0bfa6 100644 --- a/tests/populate_persistent_source_schemas.py +++ b/tests/populate_persistent_source_schemas.py @@ -7,7 +7,7 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted -from metricflow.protocols.sql_client import SqlEngine +from metricflow.semantics.protocols.sql_client import SqlEngine from tests.generate_snapshots import ( MetricFlowTestConfiguration, run_cli, diff --git a/tests/query_rendering/compare_rendered_query.py b/tests/query_rendering/compare_rendered_query.py index 1dc18d4583..e1fda8e07a 100644 --- a/tests/query_rendering/compare_rendered_query.py +++ b/tests/query_rendering/compare_rendered_query.py @@ -4,10 +4,10 @@ from _pytest.fixtures import FixtureRequest -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.dataflow_plan import BaseOutput from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests/query_rendering/test_cumulative_metric_rendering.py index 02b81fd173..c6cd7cac9b 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests/query_rendering/test_cumulative_metric_rendering.py @@ -11,11 +11,11 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index 6b89b2462d..d11edade52 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -9,12 +9,12 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index a3616adee3..ad29de22d3 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -12,11 +12,11 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests/query_rendering/test_granularity_date_part_rendering.py index 2a8956976e..b99ad4e48c 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests/query_rendering/test_granularity_date_part_rendering.py @@ -11,10 +11,10 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, diff --git a/tests/query_rendering/test_metric_filter_rendering.py b/tests/query_rendering/test_metric_filter_rendering.py index 6a1f7d4719..7cc32563c1 100644 --- a/tests/query_rendering/test_metric_filter_rendering.py +++ b/tests/query_rendering/test_metric_filter_rendering.py @@ -4,10 +4,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter -from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_metric_time_without_metrics.py b/tests/query_rendering/test_metric_time_without_metrics.py index 95d40f0fb5..91bbc75ee2 100644 --- a/tests/query_rendering/test_metric_time_without_metrics.py +++ b/tests/query_rendering/test_metric_time_without_metrics.py @@ -7,10 +7,10 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index d9a53eb5be..88bd97911b 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -16,12 +16,12 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.protocols.sql_client import SqlClient from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests/query_rendering/test_time_spine_join_rendering.py index 628404ab5e..080bef12db 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests/query_rendering/test_time_spine_join_rendering.py @@ -12,10 +12,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index 6056ba4ce7..98a3d291f0 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -9,11 +9,11 @@ from metricflow.execution.execution_plan import ExecutionPlan from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.dag.mf_dag import MetricFlowDag from metricflow.semantics.dataflow.dataflow_plan import DataflowPlan from metricflow.semantics.model.semantics.linkable_spec_resolver import LinkableElementSet from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet from metricflow.test_helpers import assert_snapshot_text_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker diff --git a/tests/source_schema_tools.py b/tests/source_schema_tools.py index a3cd78f558..eaa40c2130 100644 --- a/tests/source_schema_tools.py +++ b/tests/source_schema_tools.py @@ -2,7 +2,7 @@ import logging -from metricflow.protocols.sql_client import SqlEngine +from metricflow.semantics.protocols.sql_client import SqlEngine from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods from tests.table_snapshot.table_snapshots import ( diff --git a/tests/sql/compare_sql_plan.py b/tests/sql/compare_sql_plan.py index 79de37e733..a682945f08 100644 --- a/tests/sql/compare_sql_plan.py +++ b/tests/sql/compare_sql_plan.py @@ -2,8 +2,8 @@ from _pytest.fixtures import FixtureRequest -from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.mf_dag import DagId +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer from metricflow.sql.sql_plan import SqlQueryPlan, SqlQueryPlanNode from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker diff --git a/tests/sql/test_engine_specific_rendering.py b/tests/sql/test_engine_specific_rendering.py index 60a56fc758..246d0a09f8 100644 --- a/tests/sql/test_engine_specific_rendering.py +++ b/tests/sql/test_engine_specific_rendering.py @@ -5,7 +5,7 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlColumnReference, diff --git a/tests/sql/test_sql_plan_render.py b/tests/sql/test_sql_plan_render.py index 6e21dcfc82..52455b1219 100644 --- a/tests/sql/test_sql_plan_render.py +++ b/tests/sql/test_sql_plan_render.py @@ -6,7 +6,7 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, diff --git a/tests/sql_clients/test_date_time_operations.py b/tests/sql_clients/test_date_time_operations.py index 60d77f6bae..c56b20ec11 100644 --- a/tests/sql_clients/test_date_time_operations.py +++ b/tests/sql_clients/test_date_time_operations.py @@ -23,7 +23,7 @@ import pytest from dbt_semantic_interfaces.type_enums.date_part import DatePart -from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlDateTruncExpression, diff --git a/tests/sql_clients/test_sql_client.py b/tests/sql_clients/test_sql_client.py index f9ef577248..397cf0750c 100644 --- a/tests/sql_clients/test_sql_client.py +++ b/tests/sql_clients/test_sql_client.py @@ -6,8 +6,8 @@ import pandas as pd import pytest -from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.random_id import random_id +from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal diff --git a/tests/table_snapshot/test_source_schema.py b/tests/table_snapshot/test_source_schema.py index 1da5cb36e2..68f38c1d08 100644 --- a/tests/table_snapshot/test_source_schema.py +++ b/tests/table_snapshot/test_source_schema.py @@ -5,7 +5,7 @@ import pytest -from metricflow.protocols.sql_client import SqlClient, SqlEngine +from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine from metricflow.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/table_snapshot/test_table_snapshots.py b/tests/table_snapshot/test_table_snapshots.py index 4514e0cb15..2a585bbc0c 100644 --- a/tests/table_snapshot/test_table_snapshots.py +++ b/tests/table_snapshot/test_table_snapshots.py @@ -7,8 +7,8 @@ import pytest from dbt_semantic_interfaces.test_utils import as_datetime -from metricflow.protocols.sql_client import SqlEngine from metricflow.random_id import random_id +from metricflow.semantics.protocols.sql_client import SqlEngine from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods From e1160dddaa7ec15cc9a33ce795e01bee622c4e48 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 15:57:30 -0700 Subject: [PATCH 22/80] Move query. --- metricflow/engine/metricflow_engine.py | 4 +- .../dataflow/builder/dataflow_plan_builder.py | 6 ++- .../semantics/protocols/query_parameter.py | 2 +- metricflow/{ => semantics}/query/__init__.py | 0 .../query/group_by_item/__init__.py | 0 .../candidate_push_down/__init__.py | 0 .../group_by_item_candidate.py | 4 +- .../candidate_push_down/push_down_visitor.py | 36 ++++++++------- .../filter_spec_resolution/__init__.py | 0 .../filter_spec_resolution/filter_location.py | 0 .../filter_pattern_factory.py | 0 .../filter_spec_lookup.py | 8 ++-- .../filter_spec_resolver.py | 34 +++++++------- .../group_by_item/group_by_item_resolver.py | 16 +++---- .../query/group_by_item/path_prefixable.py | 2 +- .../group_by_item/resolution_dag/__init__.py | 0 .../query/group_by_item/resolution_dag/dag.py | 10 ++--- .../resolution_dag/dag_builder.py | 14 +++--- .../resolution_dag/input_metric_location.py | 0 .../resolution_nodes/__init__.py | 0 .../resolution_nodes/base_node.py | 8 ++-- .../resolution_nodes/measure_source_node.py | 6 +-- .../metric_resolution_node.py | 10 ++--- .../no_metrics_query_source_node.py | 6 +-- .../resolution_nodes/query_resolution_node.py | 10 ++--- .../query/group_by_item/resolution_path.py | 4 +- .../{ => semantics}/query/issues/__init__.py | 0 .../issues/filter_spec_resolver/__init__.py | 0 .../filter_spec_resolver/invalid_where.py | 6 +-- .../issues/group_by_item_resolver/__init__.py | 0 .../ambiguous_group_by_item.py | 10 ++--- .../invalid_use_of_date_part.py | 6 +-- .../multiple_join_paths.py | 10 ++--- .../group_by_item_resolver/no_common_items.py | 12 ++--- .../no_matching_items_for_measure.py | 6 +-- .../no_matching_items_for_no_metrics_query.py | 6 +-- .../no_parent_candidates.py | 6 +-- .../query/issues/issues_base.py | 6 +-- .../query/issues/parsing/__init__.py | 0 .../cumulative_metric_requires_metric_time.py | 6 +-- .../query/issues/parsing/duplicate_metric.py | 6 +-- .../query/issues/parsing/invalid_limit.py | 6 +-- .../query/issues/parsing/invalid_metric.py | 6 +-- .../issues/parsing/invalid_min_max_only.py | 6 +-- .../query/issues/parsing/invalid_order.py | 8 ++-- .../issues/parsing/no_metric_or_group_by.py | 8 ++-- .../offset_metric_requires_metric_time.py | 6 +-- .../parsing/string_input_parsing_issue.py | 6 +-- .../{ => semantics}/query/query_exceptions.py | 0 .../{ => semantics}/query/query_parser.py | 44 +++++++++---------- .../{ => semantics}/query/query_resolution.py | 10 +++-- .../{ => semantics}/query/query_resolver.py | 44 ++++++++++--------- .../query/resolver_inputs/__init__.py | 0 .../resolver_inputs/base_resolver_inputs.py | 0 .../resolver_inputs/query_resolver_inputs.py | 7 ++- .../{ => semantics}/query/similarity.py | 0 .../query/suggestion_generator.py | 2 +- .../query/validation_rules/__init__.py | 0 .../validation_rules/base_validation_rule.py | 6 +-- .../validation_rules/duplicate_metric.py | 10 ++--- .../metric_time_requirements.py | 16 ++++--- .../query/validation_rules/query_validator.py | 26 +++++------ metricflow/semantics/specs/python_object.py | 2 +- .../specs/query_param_implementations.py | 10 ++--- metricflow/semantics/specs/spec_classes.py | 4 +- .../semantics/specs/where_filter_dimension.py | 6 +-- .../semantics/specs/where_filter_entity.py | 6 +-- .../semantics/specs/where_filter_metric.py | 6 +-- .../specs/where_filter_time_dimension.py | 6 +-- .../semantics/specs/where_filter_transform.py | 6 ++- .../builder/test_dataflow_plan_builder.py | 2 +- .../source_scan/test_source_scan_optimizer.py | 2 +- tests/fixtures/dataflow_fixtures.py | 2 +- tests/fixtures/manifest_fixtures.py | 2 +- tests/model/test_where_filter_spec.py | 10 ++--- .../test_distinct_values_to_sql.py | 2 +- .../test_dataflow_to_sql_plan.py | 2 +- tests/query/group_by_item/conftest.py | 4 +- .../test_spec_lookup.py | 12 ++--- .../resolution_dag/test_resolution_dags.py | 2 +- .../test_available_group_by_items.py | 4 +- .../test_matching_item_for_filters.py | 4 +- .../test_matching_item_for_querying.py | 10 ++--- tests/query/test_ambiguous_entity_path.py | 8 ++-- tests/query/test_query_parser.py | 4 +- tests/query/test_suggestions.py | 4 +- .../test_cumulative_metric_rendering.py | 2 +- .../test_derived_metric_rendering.py | 2 +- .../test_fill_nulls_with_rendering.py | 2 +- .../test_metric_filter_rendering.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- tests/specs/conftest.py | 2 +- tests/specs/test_where_filter_entity.py | 4 +- 93 files changed, 316 insertions(+), 291 deletions(-) rename metricflow/{ => semantics}/query/__init__.py (100%) rename metricflow/{ => semantics}/query/group_by_item/__init__.py (100%) rename metricflow/{ => semantics}/query/group_by_item/candidate_push_down/__init__.py (100%) rename metricflow/{ => semantics}/query/group_by_item/candidate_push_down/group_by_item_candidate.py (95%) rename metricflow/{ => semantics}/query/group_by_item/candidate_push_down/push_down_visitor.py (93%) rename metricflow/{ => semantics}/query/group_by_item/filter_spec_resolution/__init__.py (100%) rename metricflow/{ => semantics}/query/group_by_item/filter_spec_resolution/filter_location.py (100%) rename metricflow/{ => semantics}/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py (100%) rename metricflow/{ => semantics}/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py (95%) rename metricflow/{ => semantics}/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py (92%) rename metricflow/{ => semantics}/query/group_by_item/group_by_item_resolver.py (93%) rename metricflow/{ => semantics}/query/group_by_item/path_prefixable.py (90%) rename metricflow/{ => semantics}/query/group_by_item/resolution_dag/__init__.py (100%) rename metricflow/{ => semantics}/query/group_by_item/resolution_dag/dag.py (82%) rename metricflow/{ => semantics}/query/group_by_item/resolution_dag/dag_builder.py (88%) rename metricflow/{ => semantics}/query/group_by_item/resolution_dag/input_metric_location.py (100%) rename metricflow/{ => semantics}/query/group_by_item/resolution_dag/resolution_nodes/__init__.py (100%) rename metricflow/{ => semantics}/query/group_by_item/resolution_dag/resolution_nodes/base_node.py (82%) rename metricflow/{ => semantics}/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py (96%) rename metricflow/{ => semantics}/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py (89%) rename metricflow/{ => semantics}/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py (85%) rename metricflow/{ => semantics}/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py (90%) rename metricflow/{ => semantics}/query/group_by_item/resolution_path.py (90%) rename metricflow/{ => semantics}/query/issues/__init__.py (100%) rename metricflow/{ => semantics}/query/issues/filter_spec_resolver/__init__.py (100%) rename metricflow/{ => semantics}/query/issues/filter_spec_resolver/invalid_where.py (87%) rename metricflow/{ => semantics}/query/issues/group_by_item_resolver/__init__.py (100%) rename metricflow/{ => semantics}/query/issues/group_by_item_resolver/ambiguous_group_by_item.py (85%) rename metricflow/{ => semantics}/query/issues/group_by_item_resolver/invalid_use_of_date_part.py (90%) rename metricflow/{ => semantics}/query/issues/group_by_item_resolver/multiple_join_paths.py (86%) rename metricflow/{ => semantics}/query/issues/group_by_item_resolver/no_common_items.py (89%) rename metricflow/{ => semantics}/query/issues/group_by_item_resolver/no_matching_items_for_measure.py (90%) rename metricflow/{ => semantics}/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py (86%) rename metricflow/{ => semantics}/query/issues/group_by_item_resolver/no_parent_candidates.py (88%) rename metricflow/{ => semantics}/query/issues/issues_base.py (92%) rename metricflow/{ => semantics}/query/issues/parsing/__init__.py (100%) rename metricflow/{ => semantics}/query/issues/parsing/cumulative_metric_requires_metric_time.py (87%) rename metricflow/{ => semantics}/query/issues/parsing/duplicate_metric.py (86%) rename metricflow/{ => semantics}/query/issues/parsing/invalid_limit.py (83%) rename metricflow/{ => semantics}/query/issues/parsing/invalid_metric.py (86%) rename metricflow/{ => semantics}/query/issues/parsing/invalid_min_max_only.py (84%) rename metricflow/{ => semantics}/query/issues/parsing/invalid_order.py (82%) rename metricflow/{ => semantics}/query/issues/parsing/no_metric_or_group_by.py (80%) rename metricflow/{ => semantics}/query/issues/parsing/offset_metric_requires_metric_time.py (89%) rename metricflow/{ => semantics}/query/issues/parsing/string_input_parsing_issue.py (83%) rename metricflow/{ => semantics}/query/query_exceptions.py (100%) rename metricflow/{ => semantics}/query/query_parser.py (95%) rename metricflow/{ => semantics}/query/query_resolution.py (88%) rename metricflow/{ => semantics}/query/query_resolver.py (92%) rename metricflow/{ => semantics}/query/resolver_inputs/__init__.py (100%) rename metricflow/{ => semantics}/query/resolver_inputs/base_resolver_inputs.py (100%) rename metricflow/{ => semantics}/query/resolver_inputs/query_resolver_inputs.py (96%) rename metricflow/{ => semantics}/query/similarity.py (100%) rename metricflow/{ => semantics}/query/suggestion_generator.py (97%) rename metricflow/{ => semantics}/query/validation_rules/__init__.py (100%) rename metricflow/{ => semantics}/query/validation_rules/base_validation_rule.py (85%) rename metricflow/{ => semantics}/query/validation_rules/duplicate_metric.py (80%) rename metricflow/{ => semantics}/query/validation_rules/metric_time_requirements.py (88%) rename metricflow/{ => semantics}/query/validation_rules/query_validator.py (77%) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 352f1b0f49..39a4e69e07 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -23,8 +23,6 @@ from metricflow.execution.executor import SequentialPlanExecutor from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.query.query_exceptions import InvalidQueryException -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.random_id import random_id from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder @@ -50,6 +48,8 @@ from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.semantics.query.query_exceptions import InvalidQueryException +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.query_param_implementations import SavedQueryParameter from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec diff --git a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py index f57cc12320..4331914f43 100644 --- a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py @@ -25,8 +25,6 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime -from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -63,6 +61,10 @@ from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.node_processor import PreJoinNodeProcessor +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( + FilterSpecResolutionLookUp, +) from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( ConstantPropertySpec, diff --git a/metricflow/semantics/protocols/query_parameter.py b/metricflow/semantics/protocols/query_parameter.py index 871f26223a..d3ef344823 100644 --- a/metricflow/semantics/protocols/query_parameter.py +++ b/metricflow/semantics/protocols/query_parameter.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart if TYPE_CHECKING: - from metricflow.query.resolver_inputs.query_resolver_inputs import ( + from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ( ResolverInputForGroupByItem, ResolverInputForMetric, ResolverInputForOrderByItem, diff --git a/metricflow/query/__init__.py b/metricflow/semantics/query/__init__.py similarity index 100% rename from metricflow/query/__init__.py rename to metricflow/semantics/query/__init__.py diff --git a/metricflow/query/group_by_item/__init__.py b/metricflow/semantics/query/group_by_item/__init__.py similarity index 100% rename from metricflow/query/group_by_item/__init__.py rename to metricflow/semantics/query/group_by_item/__init__.py diff --git a/metricflow/query/group_by_item/candidate_push_down/__init__.py b/metricflow/semantics/query/group_by_item/candidate_push_down/__init__.py similarity index 100% rename from metricflow/query/group_by_item/candidate_push_down/__init__.py rename to metricflow/semantics/query/group_by_item/candidate_push_down/__init__.py diff --git a/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py b/metricflow/semantics/query/group_by_item/candidate_push_down/group_by_item_candidate.py similarity index 95% rename from metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py rename to metricflow/semantics/query/group_by_item/candidate_push_down/group_by_item_candidate.py index aae5f98c0c..6fd4794750 100644 --- a/metricflow/query/group_by_item/candidate_push_down/group_by_item_candidate.py +++ b/metricflow/semantics/query/group_by_item/candidate_push_down/group_by_item_candidate.py @@ -6,8 +6,8 @@ from typing_extensions import override -from metricflow.query.group_by_item.path_prefixable import PathPrefixable -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinkableSpecSet diff --git a/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py b/metricflow/semantics/query/group_by_item/candidate_push_down/push_down_visitor.py similarity index 93% rename from metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py rename to metricflow/semantics/query/group_by_item/candidate_push_down/push_down_visitor.py index 3bc89feb9a..2b9a71b4b0 100644 --- a/metricflow/query/group_by_item/candidate_push_down/push_down_visitor.py +++ b/metricflow/semantics/query/group_by_item/candidate_push_down/push_down_visitor.py @@ -11,37 +11,41 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat, mf_pformat_many -from metricflow.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.model.semantics.linkable_element import LinkableElementProperty +from metricflow.semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.group_by_item_resolver.invalid_use_of_date_part import MetricExcludesDatePartIssue -from metricflow.query.issues.group_by_item_resolver.no_common_items import NoCommonItemsInParents -from metricflow.query.issues.group_by_item_resolver.no_matching_items_for_measure import NoMatchingItemsForMeasure -from metricflow.query.issues.group_by_item_resolver.no_matching_items_for_no_metrics_query import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.group_by_item_resolver.invalid_use_of_date_part import ( + MetricExcludesDatePartIssue, +) +from metricflow.semantics.query.issues.group_by_item_resolver.no_common_items import NoCommonItemsInParents +from metricflow.semantics.query.issues.group_by_item_resolver.no_matching_items_for_measure import ( + NoMatchingItemsForMeasure, +) +from metricflow.semantics.query.issues.group_by_item_resolver.no_matching_items_for_no_metrics_query import ( NoMatchingItemsForNoMetricsQuery, ) -from metricflow.query.issues.group_by_item_resolver.no_parent_candidates import NoParentCandidates -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.issues.group_by_item_resolver.no_parent_candidates import NoParentCandidates +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryResolutionIssueSet, ) -from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.model.semantics.linkable_element import LinkableElementProperty +from metricflow.semantics.query.suggestion_generator import QueryItemSuggestionGenerator from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern diff --git a/metricflow/query/group_by_item/filter_spec_resolution/__init__.py b/metricflow/semantics/query/group_by_item/filter_spec_resolution/__init__.py similarity index 100% rename from metricflow/query/group_by_item/filter_spec_resolution/__init__.py rename to metricflow/semantics/query/group_by_item/filter_spec_resolution/__init__.py diff --git a/metricflow/query/group_by_item/filter_spec_resolution/filter_location.py b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_location.py similarity index 100% rename from metricflow/query/group_by_item/filter_spec_resolution/filter_location.py rename to metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_location.py diff --git a/metricflow/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py similarity index 100% rename from metricflow/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py rename to metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py diff --git a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py similarity index 95% rename from metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py rename to metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py index 01ce5c8e9a..2579332d6d 100644 --- a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py +++ b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py @@ -17,10 +17,10 @@ from metricflow.collection_helpers.merger import Mergeable from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.query.group_by_item.path_prefixable import PathPrefixable -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern if TYPE_CHECKING: diff --git a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py similarity index 92% rename from metricflow/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py rename to metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py index baf9e17203..ee1ee8a789 100644 --- a/metricflow/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py +++ b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py @@ -11,40 +11,42 @@ from typing_extensions import override from metricflow.mf_logging.runtime import log_runtime -from metricflow.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker -from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import WhereFilterPatternFactory -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.naming.object_builder_str import ObjectBuilderNameConverter +from metricflow.semantics.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( + WhereFilterPatternFactory, +) +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolution, FilterSpecResolutionLookUp, NonParsableFilterResolution, PatternAssociationForWhereFilterGroupByItem, ResolvedSpecLookUpKey, ) -from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolver -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag, ResolutionDagSinkNode -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag, ResolutionDagSinkNode +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNodeVisitor, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.filter_spec_resolver.invalid_where import WhereFilterParsingIssue -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.filter_spec_resolver.invalid_where import WhereFilterParsingIssue +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryResolutionIssueSet, ) -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.object_builder_str import ObjectBuilderNameConverter logger = logging.getLogger(__name__) diff --git a/metricflow/query/group_by_item/group_by_item_resolver.py b/metricflow/semantics/query/group_by_item/group_by_item_resolver.py similarity index 93% rename from metricflow/query/group_by_item/group_by_item_resolver.py rename to metricflow/semantics/query/group_by_item/group_by_item_resolver.py index e16edacbbe..9eef75ea36 100644 --- a/metricflow/query/group_by_item/group_by_item_resolver.py +++ b/metricflow/semantics/query/group_by_item/group_by_item_resolver.py @@ -11,19 +11,19 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.query.group_by_item.candidate_push_down.push_down_visitor import ( +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.group_by_item.candidate_push_down.push_down_visitor import ( PushDownResult, _PushDownGroupByItemCandidatesVisitor, ) -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag, ResolutionDagSinkNode -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.group_by_item_resolver.ambiguous_group_by_item import AmbiguousGroupByItemIssue -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag, ResolutionDagSinkNode +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.group_by_item_resolver.ambiguous_group_by_item import AmbiguousGroupByItemIssue +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryResolutionIssueSet, ) -from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.suggestion_generator import QueryItemSuggestionGenerator from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern from metricflow.semantics.specs.patterns.typed_patterns import TimeDimensionPattern diff --git a/metricflow/query/group_by_item/path_prefixable.py b/metricflow/semantics/query/group_by_item/path_prefixable.py similarity index 90% rename from metricflow/query/group_by_item/path_prefixable.py rename to metricflow/semantics/query/group_by_item/path_prefixable.py index 154f5c51c3..9bfe0e0c21 100644 --- a/metricflow/query/group_by_item/path_prefixable.py +++ b/metricflow/semantics/query/group_by_item/path_prefixable.py @@ -5,7 +5,7 @@ from typing_extensions import TYPE_CHECKING, Self if TYPE_CHECKING: - from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath + from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath class PathPrefixable(ABC): diff --git a/metricflow/query/group_by_item/resolution_dag/__init__.py b/metricflow/semantics/query/group_by_item/resolution_dag/__init__.py similarity index 100% rename from metricflow/query/group_by_item/resolution_dag/__init__.py rename to metricflow/semantics/query/group_by_item/resolution_dag/__init__.py diff --git a/metricflow/query/group_by_item/resolution_dag/dag.py b/metricflow/semantics/query/group_by_item/resolution_dag/dag.py similarity index 82% rename from metricflow/query/group_by_item/resolution_dag/dag.py rename to metricflow/semantics/query/group_by_item/resolution_dag/dag.py index e4db458883..b428a9f690 100644 --- a/metricflow/query/group_by_item/resolution_dag/dag.py +++ b/metricflow/semantics/query/group_by_item/resolution_dag/dag.py @@ -2,15 +2,15 @@ from typing import Union -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId, MetricFlowDag +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId, MetricFlowDag ResolutionDagSinkNode = Union[QueryGroupByItemResolutionNode, MetricGroupByItemResolutionNode] diff --git a/metricflow/query/group_by_item/resolution_dag/dag_builder.py b/metricflow/semantics/query/group_by_item/resolution_dag/dag_builder.py similarity index 88% rename from metricflow/query/group_by_item/resolution_dag/dag_builder.py rename to metricflow/semantics/query/group_by_item/resolution_dag/dag_builder.py index b98c2f5215..49cf97f846 100644 --- a/metricflow/query/group_by_item/resolution_dag/dag_builder.py +++ b/metricflow/semantics/query/group_by_item/resolution_dag/dag_builder.py @@ -8,21 +8,21 @@ from dbt_semantic_interfaces.references import MeasureReference, MetricReference from dbt_semantic_interfaces.type_enums import MetricType -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.query.group_by_item.resolution_dag.input_metric_location import InputMetricDefinitionLocation -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.query.group_by_item.resolution_dag.input_metric_location import InputMetricDefinitionLocation +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup logger = logging.getLogger(__name__) diff --git a/metricflow/query/group_by_item/resolution_dag/input_metric_location.py b/metricflow/semantics/query/group_by_item/resolution_dag/input_metric_location.py similarity index 100% rename from metricflow/query/group_by_item/resolution_dag/input_metric_location.py rename to metricflow/semantics/query/group_by_item/resolution_dag/input_metric_location.py diff --git a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/__init__.py b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/__init__.py similarity index 100% rename from metricflow/query/group_by_item/resolution_dag/resolution_nodes/__init__.py rename to metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/__init__.py diff --git a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/base_node.py b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py similarity index 82% rename from metricflow/query/group_by_item/resolution_dag/resolution_nodes/base_node.py rename to metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py index f3ae67db0e..decb2b0d1c 100644 --- a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/base_node.py +++ b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py @@ -7,16 +7,16 @@ from metricflow.visitor import Visitable, VisitorOutputT if TYPE_CHECKING: - from metricflow.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( + from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) - from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( + from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) - from metricflow.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( + from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) - from metricflow.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( + from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) diff --git a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py similarity index 96% rename from metricflow/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py rename to metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py index 3813815220..5c9443bcd9 100644 --- a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py +++ b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py @@ -5,12 +5,12 @@ from dbt_semantic_interfaces.references import MeasureReference, MetricReference from typing_extensions import override -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.visitor import VisitorOutputT diff --git a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py similarity index 89% rename from metricflow/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py rename to metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py index f5c1fec130..3b896ac8e8 100644 --- a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py +++ b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py @@ -5,16 +5,16 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import Self, override -from metricflow.query.group_by_item.resolution_dag.input_metric_location import InputMetricDefinitionLocation -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.query.group_by_item.resolution_dag.input_metric_location import InputMetricDefinitionLocation +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.visitor import VisitorOutputT diff --git a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py similarity index 85% rename from metricflow/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py rename to metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py index 235d18de36..2020c8c7b2 100644 --- a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py +++ b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py @@ -4,14 +4,14 @@ from typing_extensions import override -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.visitor import VisitorOutputT diff --git a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py similarity index 90% rename from metricflow/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py rename to metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py index 3f59de14f8..769866d6fd 100644 --- a/metricflow/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py +++ b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py @@ -6,18 +6,18 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.visitor import VisitorOutputT diff --git a/metricflow/query/group_by_item/resolution_path.py b/metricflow/semantics/query/group_by_item/resolution_path.py similarity index 90% rename from metricflow/query/group_by_item/resolution_path.py rename to metricflow/semantics/query/group_by_item/resolution_path.py index 6967e0ec60..5ec46a329a 100644 --- a/metricflow/query/group_by_item/resolution_path.py +++ b/metricflow/semantics/query/group_by_item/resolution_path.py @@ -6,8 +6,8 @@ from typing_extensions import override from metricflow.mf_logging.formatting import indent -from metricflow.query.group_by_item.path_prefixable import PathPrefixable -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode +from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode @dataclass(frozen=True) diff --git a/metricflow/query/issues/__init__.py b/metricflow/semantics/query/issues/__init__.py similarity index 100% rename from metricflow/query/issues/__init__.py rename to metricflow/semantics/query/issues/__init__.py diff --git a/metricflow/query/issues/filter_spec_resolver/__init__.py b/metricflow/semantics/query/issues/filter_spec_resolver/__init__.py similarity index 100% rename from metricflow/query/issues/filter_spec_resolver/__init__.py rename to metricflow/semantics/query/issues/filter_spec_resolver/__init__.py diff --git a/metricflow/query/issues/filter_spec_resolver/invalid_where.py b/metricflow/semantics/query/issues/filter_spec_resolver/invalid_where.py similarity index 87% rename from metricflow/query/issues/filter_spec_resolver/invalid_where.py rename to metricflow/semantics/query/issues/filter_spec_resolver/invalid_where.py index dc088f07b9..51ddfc1bc3 100644 --- a/metricflow/query/issues/filter_spec_resolver/invalid_where.py +++ b/metricflow/semantics/query/issues/filter_spec_resolver/invalid_where.py @@ -7,12 +7,12 @@ from typing_extensions import override from metricflow.mf_logging.formatting import indent -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/issues/group_by_item_resolver/__init__.py b/metricflow/semantics/query/issues/group_by_item_resolver/__init__.py similarity index 100% rename from metricflow/query/issues/group_by_item_resolver/__init__.py rename to metricflow/semantics/query/issues/group_by_item_resolver/__init__.py diff --git a/metricflow/query/issues/group_by_item_resolver/ambiguous_group_by_item.py b/metricflow/semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py similarity index 85% rename from metricflow/query/issues/group_by_item_resolver/ambiguous_group_by_item.py rename to metricflow/semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py index d68e4c9ec5..2d7fb5f58a 100644 --- a/metricflow/query/issues/group_by_item_resolver/ambiguous_group_by_item.py +++ b/metricflow/semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py @@ -7,14 +7,14 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/issues/group_by_item_resolver/invalid_use_of_date_part.py b/metricflow/semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py similarity index 90% rename from metricflow/query/issues/group_by_item_resolver/invalid_use_of_date_part.py rename to metricflow/semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py index 477b4732a9..0281d65b69 100644 --- a/metricflow/query/issues/group_by_item_resolver/invalid_use_of_date_part.py +++ b/metricflow/semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py @@ -6,12 +6,12 @@ from typing_extensions import override from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput from metricflow.semantics.specs.spec_classes import LinkableInstanceSpec diff --git a/metricflow/query/issues/group_by_item_resolver/multiple_join_paths.py b/metricflow/semantics/query/issues/group_by_item_resolver/multiple_join_paths.py similarity index 86% rename from metricflow/query/issues/group_by_item_resolver/multiple_join_paths.py rename to metricflow/semantics/query/issues/group_by_item_resolver/multiple_join_paths.py index d00a64a568..70f4d63fdc 100644 --- a/metricflow/query/issues/group_by_item_resolver/multiple_join_paths.py +++ b/metricflow/semantics/query/issues/group_by_item_resolver/multiple_join_paths.py @@ -7,14 +7,14 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/issues/group_by_item_resolver/no_common_items.py b/metricflow/semantics/query/issues/group_by_item_resolver/no_common_items.py similarity index 89% rename from metricflow/query/issues/group_by_item_resolver/no_common_items.py rename to metricflow/semantics/query/issues/group_by_item_resolver/no_common_items.py index 5a35b2e954..517de87df1 100644 --- a/metricflow/query/issues/group_by_item_resolver/no_common_items.py +++ b/metricflow/semantics/query/issues/group_by_item_resolver/no_common_items.py @@ -7,15 +7,15 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/issues/group_by_item_resolver/no_matching_items_for_measure.py b/metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py similarity index 90% rename from metricflow/query/issues/group_by_item_resolver/no_matching_items_for_measure.py rename to metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py index 9513cb0d55..75b5fe446d 100644 --- a/metricflow/query/issues/group_by_item_resolver/no_matching_items_for_measure.py +++ b/metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py @@ -8,12 +8,12 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput logger = logging.getLogger(__name__) diff --git a/metricflow/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py b/metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py similarity index 86% rename from metricflow/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py rename to metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py index 1a03d17b8e..863e5ef059 100644 --- a/metricflow/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py +++ b/metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py @@ -5,12 +5,12 @@ from typing_extensions import override -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/issues/group_by_item_resolver/no_parent_candidates.py b/metricflow/semantics/query/issues/group_by_item_resolver/no_parent_candidates.py similarity index 88% rename from metricflow/query/issues/group_by_item_resolver/no_parent_candidates.py rename to metricflow/semantics/query/issues/group_by_item_resolver/no_parent_candidates.py index 641a378a23..7808423aca 100644 --- a/metricflow/query/issues/group_by_item_resolver/no_parent_candidates.py +++ b/metricflow/semantics/query/issues/group_by_item_resolver/no_parent_candidates.py @@ -4,12 +4,12 @@ from typing_extensions import override -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/issues/issues_base.py b/metricflow/semantics/query/issues/issues_base.py similarity index 92% rename from metricflow/query/issues/issues_base.py rename to metricflow/semantics/query/issues/issues_base.py index 34276057bb..1ae1653fc3 100644 --- a/metricflow/query/issues/issues_base.py +++ b/metricflow/semantics/query/issues/issues_base.py @@ -8,9 +8,9 @@ from typing_extensions import override from metricflow.collection_helpers.merger import Mergeable -from metricflow.query.group_by_item.path_prefixable import PathPrefixable -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput class MetricFlowQueryIssueType(Enum): diff --git a/metricflow/query/issues/parsing/__init__.py b/metricflow/semantics/query/issues/parsing/__init__.py similarity index 100% rename from metricflow/query/issues/parsing/__init__.py rename to metricflow/semantics/query/issues/parsing/__init__.py diff --git a/metricflow/query/issues/parsing/cumulative_metric_requires_metric_time.py b/metricflow/semantics/query/issues/parsing/cumulative_metric_requires_metric_time.py similarity index 87% rename from metricflow/query/issues/parsing/cumulative_metric_requires_metric_time.py rename to metricflow/semantics/query/issues/parsing/cumulative_metric_requires_metric_time.py index 183977fed2..1552e8c922 100644 --- a/metricflow/query/issues/parsing/cumulative_metric_requires_metric_time.py +++ b/metricflow/semantics/query/issues/parsing/cumulative_metric_requires_metric_time.py @@ -6,12 +6,12 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/issues/parsing/duplicate_metric.py b/metricflow/semantics/query/issues/parsing/duplicate_metric.py similarity index 86% rename from metricflow/query/issues/parsing/duplicate_metric.py rename to metricflow/semantics/query/issues/parsing/duplicate_metric.py index 62b1c0b008..beb4e73ca9 100644 --- a/metricflow/query/issues/parsing/duplicate_metric.py +++ b/metricflow/semantics/query/issues/parsing/duplicate_metric.py @@ -6,12 +6,12 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/issues/parsing/invalid_limit.py b/metricflow/semantics/query/issues/parsing/invalid_limit.py similarity index 83% rename from metricflow/query/issues/parsing/invalid_limit.py rename to metricflow/semantics/query/issues/parsing/invalid_limit.py index 60f876290c..884927ca76 100644 --- a/metricflow/query/issues/parsing/invalid_limit.py +++ b/metricflow/semantics/query/issues/parsing/invalid_limit.py @@ -4,12 +4,12 @@ from typing_extensions import override -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/issues/parsing/invalid_metric.py b/metricflow/semantics/query/issues/parsing/invalid_metric.py similarity index 86% rename from metricflow/query/issues/parsing/invalid_metric.py rename to metricflow/semantics/query/issues/parsing/invalid_metric.py index c3c6e13ffc..3ee5905c96 100644 --- a/metricflow/query/issues/parsing/invalid_metric.py +++ b/metricflow/semantics/query/issues/parsing/invalid_metric.py @@ -7,12 +7,12 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/issues/parsing/invalid_min_max_only.py b/metricflow/semantics/query/issues/parsing/invalid_min_max_only.py similarity index 84% rename from metricflow/query/issues/parsing/invalid_min_max_only.py rename to metricflow/semantics/query/issues/parsing/invalid_min_max_only.py index 2b9665570f..4aadb72ab3 100644 --- a/metricflow/query/issues/parsing/invalid_min_max_only.py +++ b/metricflow/semantics/query/issues/parsing/invalid_min_max_only.py @@ -4,12 +4,12 @@ from typing_extensions import override -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/issues/parsing/invalid_order.py b/metricflow/semantics/query/issues/parsing/invalid_order.py similarity index 82% rename from metricflow/query/issues/parsing/invalid_order.py rename to metricflow/semantics/query/issues/parsing/invalid_order.py index 28483e49c5..2418563fee 100644 --- a/metricflow/query/issues/parsing/invalid_order.py +++ b/metricflow/semantics/query/issues/parsing/invalid_order.py @@ -4,13 +4,13 @@ from typing_extensions import override -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.query.resolver_inputs.query_resolver_inputs import ( +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ( ResolverInputForOrderByItem, ) diff --git a/metricflow/query/issues/parsing/no_metric_or_group_by.py b/metricflow/semantics/query/issues/parsing/no_metric_or_group_by.py similarity index 80% rename from metricflow/query/issues/parsing/no_metric_or_group_by.py rename to metricflow/semantics/query/issues/parsing/no_metric_or_group_by.py index d7655a8b1d..6174772313 100644 --- a/metricflow/query/issues/parsing/no_metric_or_group_by.py +++ b/metricflow/semantics/query/issues/parsing/no_metric_or_group_by.py @@ -4,13 +4,13 @@ from typing_extensions import override -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery @dataclass(frozen=True) diff --git a/metricflow/query/issues/parsing/offset_metric_requires_metric_time.py b/metricflow/semantics/query/issues/parsing/offset_metric_requires_metric_time.py similarity index 89% rename from metricflow/query/issues/parsing/offset_metric_requires_metric_time.py rename to metricflow/semantics/query/issues/parsing/offset_metric_requires_metric_time.py index f5db96a349..52c2fd53cd 100644 --- a/metricflow/query/issues/parsing/offset_metric_requires_metric_time.py +++ b/metricflow/semantics/query/issues/parsing/offset_metric_requires_metric_time.py @@ -8,12 +8,12 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/issues/parsing/string_input_parsing_issue.py b/metricflow/semantics/query/issues/parsing/string_input_parsing_issue.py similarity index 83% rename from metricflow/query/issues/parsing/string_input_parsing_issue.py rename to metricflow/semantics/query/issues/parsing/string_input_parsing_issue.py index 9a1a4c65b3..e8f5ac552c 100644 --- a/metricflow/query/issues/parsing/string_input_parsing_issue.py +++ b/metricflow/semantics/query/issues/parsing/string_input_parsing_issue.py @@ -4,12 +4,12 @@ from typing_extensions import override -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/query/query_exceptions.py b/metricflow/semantics/query/query_exceptions.py similarity index 100% rename from metricflow/query/query_exceptions.py rename to metricflow/semantics/query/query_exceptions.py diff --git a/metricflow/query/query_parser.py b/metricflow/semantics/query/query_parser.py similarity index 95% rename from metricflow/query/query_parser.py rename to metricflow/semantics/query/query_parser.py index d8d00846c4..2483f63805 100644 --- a/metricflow/query/query_parser.py +++ b/metricflow/semantics/query/query_parser.py @@ -17,28 +17,6 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime -from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( - DefaultWhereFilterPatternFactory, - WhereFilterPatternFactory, -) -from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolver -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.query.issues.parsing.string_input_parsing_issue import StringInputParsingIssue -from metricflow.query.query_exceptions import InvalidQueryException -from metricflow.query.query_resolution import InputToIssueSetMapping, InputToIssueSetMappingItem -from metricflow.query.query_resolver import MetricFlowQueryResolver -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.query.resolver_inputs.query_resolver_inputs import ( - InvalidStringInput, - ResolverInputForGroupByItem, - ResolverInputForLimit, - ResolverInputForMetric, - ResolverInputForMinMaxOnly, - ResolverInputForOrderByItem, - ResolverInputForQuery, - ResolverInputForQueryLevelWhereFilterIntersection, -) from metricflow.semantics.filters.merge_where import merge_to_single_where_filter from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup @@ -51,6 +29,28 @@ OrderByQueryParameter, SavedQueryParameter, ) +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( + DefaultWhereFilterPatternFactory, + WhereFilterPatternFactory, +) +from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow.semantics.query.issues.parsing.string_input_parsing_issue import StringInputParsingIssue +from metricflow.semantics.query.query_exceptions import InvalidQueryException +from metricflow.semantics.query.query_resolution import InputToIssueSetMapping, InputToIssueSetMappingItem +from metricflow.semantics.query.query_resolver import MetricFlowQueryResolver +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ( + InvalidStringInput, + ResolverInputForGroupByItem, + ResolverInputForLimit, + ResolverInputForMetric, + ResolverInputForMinMaxOnly, + ResolverInputForOrderByItem, + ResolverInputForQuery, + ResolverInputForQueryLevelWhereFilterIntersection, +) from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.metric_time_pattern import MetricTimePattern from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern diff --git a/metricflow/query/query_resolution.py b/metricflow/semantics/query/query_resolution.py similarity index 88% rename from metricflow/query/query_resolution.py rename to metricflow/semantics/query/query_resolution.py index 2db8bea1eb..c756c063c4 100644 --- a/metricflow/query/query_resolution.py +++ b/metricflow/semantics/query/query_resolution.py @@ -7,10 +7,12 @@ from metricflow.collection_helpers.merger import Mergeable from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( + FilterSpecResolutionLookUp, +) +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput from metricflow.semantics.specs.spec_classes import MetricFlowQuerySpec diff --git a/metricflow/query/query_resolver.py b/metricflow/semantics/query/query_resolver.py similarity index 92% rename from metricflow/query/query_resolver.py rename to metricflow/semantics/query/query_resolver.py index 898812e25b..bb66d1ae94 100644 --- a/metricflow/query/query_resolver.py +++ b/metricflow/semantics/query/query_resolver.py @@ -8,32 +8,38 @@ from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime -from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import WhereFilterPatternFactory -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_resolver import ( +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.naming.metric_scheme import MetricNamingScheme +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( + WhereFilterPatternFactory, +) +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( + FilterSpecResolutionLookUp, +) +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_resolver import ( WhereFilterSpecResolver, ) -from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolution, GroupByItemResolver -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( +from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolution, GroupByItemResolver +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import ( +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryResolutionIssueSet, ) -from metricflow.query.issues.parsing.invalid_limit import InvalidLimitIssue -from metricflow.query.issues.parsing.invalid_metric import InvalidMetricIssue -from metricflow.query.issues.parsing.invalid_min_max_only import InvalidMinMaxOnlyIssue -from metricflow.query.issues.parsing.invalid_order import InvalidOrderByItemIssue -from metricflow.query.issues.parsing.no_metric_or_group_by import NoMetricOrGroupByIssue -from metricflow.query.query_resolution import ( +from metricflow.semantics.query.issues.parsing.invalid_limit import InvalidLimitIssue +from metricflow.semantics.query.issues.parsing.invalid_metric import InvalidMetricIssue +from metricflow.semantics.query.issues.parsing.invalid_min_max_only import InvalidMinMaxOnlyIssue +from metricflow.semantics.query.issues.parsing.invalid_order import InvalidOrderByItemIssue +from metricflow.semantics.query.issues.parsing.no_metric_or_group_by import NoMetricOrGroupByIssue +from metricflow.semantics.query.query_resolution import ( InputToIssueSetMapping, InputToIssueSetMappingItem, MetricFlowQueryResolution, ) -from metricflow.query.resolver_inputs.query_resolver_inputs import ( +from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ( ResolverInputForGroupByItem, ResolverInputForLimit, ResolverInputForMetric, @@ -43,10 +49,8 @@ ResolverInputForQueryLevelWhereFilterIntersection, ResolverInputForWhereFilterIntersection, ) -from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator -from metricflow.query.validation_rules.query_validator import PostResolutionQueryValidator -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.metric_scheme import MetricNamingScheme +from metricflow.semantics.query.suggestion_generator import QueryItemSuggestionGenerator +from metricflow.semantics.query.validation_rules.query_validator import PostResolutionQueryValidator from metricflow.semantics.specs.patterns.match_list_pattern import MatchListSpecPattern from metricflow.semantics.specs.spec_classes import ( InstanceSpec, diff --git a/metricflow/query/resolver_inputs/__init__.py b/metricflow/semantics/query/resolver_inputs/__init__.py similarity index 100% rename from metricflow/query/resolver_inputs/__init__.py rename to metricflow/semantics/query/resolver_inputs/__init__.py diff --git a/metricflow/query/resolver_inputs/base_resolver_inputs.py b/metricflow/semantics/query/resolver_inputs/base_resolver_inputs.py similarity index 100% rename from metricflow/query/resolver_inputs/base_resolver_inputs.py rename to metricflow/semantics/query/resolver_inputs/base_resolver_inputs.py diff --git a/metricflow/query/resolver_inputs/query_resolver_inputs.py b/metricflow/semantics/query/resolver_inputs/query_resolver_inputs.py similarity index 96% rename from metricflow/query/resolver_inputs/query_resolver_inputs.py rename to metricflow/semantics/query/resolver_inputs/query_resolver_inputs.py index 4855f4c7f3..a53dafa84b 100644 --- a/metricflow/query/resolver_inputs/query_resolver_inputs.py +++ b/metricflow/semantics/query/resolver_inputs/query_resolver_inputs.py @@ -13,11 +13,14 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.resolver_inputs.base_resolver_inputs import InputPatternDescription, MetricFlowQueryResolverInput from metricflow.semantics.naming.metric_scheme import MetricNamingScheme from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import ( + InputPatternDescription, + MetricFlowQueryResolverInput, +) from metricflow.semantics.specs.patterns.metric_pattern import MetricSpecPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern diff --git a/metricflow/query/similarity.py b/metricflow/semantics/query/similarity.py similarity index 100% rename from metricflow/query/similarity.py rename to metricflow/semantics/query/similarity.py diff --git a/metricflow/query/suggestion_generator.py b/metricflow/semantics/query/suggestion_generator.py similarity index 97% rename from metricflow/query/suggestion_generator.py rename to metricflow/semantics/query/suggestion_generator.py index 71bdbd3fb5..dc0574fd0c 100644 --- a/metricflow/query/suggestion_generator.py +++ b/metricflow/semantics/query/suggestion_generator.py @@ -3,8 +3,8 @@ import logging from typing import Sequence, Tuple -from metricflow.query.similarity import top_fuzzy_matches from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow.semantics.query.similarity import top_fuzzy_matches from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern diff --git a/metricflow/query/validation_rules/__init__.py b/metricflow/semantics/query/validation_rules/__init__.py similarity index 100% rename from metricflow/query/validation_rules/__init__.py rename to metricflow/semantics/query/validation_rules/__init__.py diff --git a/metricflow/query/validation_rules/base_validation_rule.py b/metricflow/semantics/query/validation_rules/base_validation_rule.py similarity index 85% rename from metricflow/query/validation_rules/base_validation_rule.py rename to metricflow/semantics/query/validation_rules/base_validation_rule.py index ccdffc04e6..737909dd9a 100644 --- a/metricflow/query/validation_rules/base_validation_rule.py +++ b/metricflow/semantics/query/validation_rules/base_validation_rule.py @@ -6,10 +6,10 @@ from dbt_semantic_interfaces.protocols import Metric, WhereFilterIntersection from dbt_semantic_interfaces.references import MetricReference -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery class PostResolutionQueryValidationRule(ABC): diff --git a/metricflow/query/validation_rules/duplicate_metric.py b/metricflow/semantics/query/validation_rules/duplicate_metric.py similarity index 80% rename from metricflow/query/validation_rules/duplicate_metric.py rename to metricflow/semantics/query/validation_rules/duplicate_metric.py index d1888fdc1d..b86352b42d 100644 --- a/metricflow/query/validation_rules/duplicate_metric.py +++ b/metricflow/semantics/query/validation_rules/duplicate_metric.py @@ -7,12 +7,12 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.query.issues.parsing.duplicate_metric import DuplicateMetricIssue -from metricflow.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery -from metricflow.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow.semantics.query.issues.parsing.duplicate_metric import DuplicateMetricIssue +from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery +from metricflow.semantics.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule logger = logging.getLogger(__name__) diff --git a/metricflow/query/validation_rules/metric_time_requirements.py b/metricflow/semantics/query/validation_rules/metric_time_requirements.py similarity index 88% rename from metricflow/query/validation_rules/metric_time_requirements.py rename to metricflow/semantics/query/validation_rules/metric_time_requirements.py index a046c61afe..2021524872 100644 --- a/metricflow/query/validation_rules/metric_time_requirements.py +++ b/metricflow/semantics/query/validation_rules/metric_time_requirements.py @@ -9,15 +9,17 @@ from dbt_semantic_interfaces.type_enums import MetricType from typing_extensions import override -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.query.issues.parsing.cumulative_metric_requires_metric_time import ( +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow.semantics.query.issues.parsing.cumulative_metric_requires_metric_time import ( CumulativeMetricRequiresMetricTimeIssue, ) -from metricflow.query.issues.parsing.offset_metric_requires_metric_time import OffsetMetricRequiresMetricTimeIssue -from metricflow.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery -from metricflow.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.query.issues.parsing.offset_metric_requires_metric_time import ( + OffsetMetricRequiresMetricTimeIssue, +) +from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery +from metricflow.semantics.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule from metricflow.semantics.specs.spec_classes import TimeDimensionSpec diff --git a/metricflow/query/validation_rules/query_validator.py b/metricflow/semantics/query/validation_rules/query_validator.py similarity index 77% rename from metricflow/query/validation_rules/query_validator.py rename to metricflow/semantics/query/validation_rules/query_validator.py index 28c3c4da1b..e3385af766 100644 --- a/metricflow/query/validation_rules/query_validator.py +++ b/metricflow/semantics/query/validation_rules/query_validator.py @@ -4,30 +4,30 @@ from typing_extensions import override -from metricflow.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) -from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery -from metricflow.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule -from metricflow.query.validation_rules.duplicate_metric import DuplicateMetricValidationRule -from metricflow.query.validation_rules.metric_time_requirements import MetricTimeQueryValidationRule -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery +from metricflow.semantics.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule +from metricflow.semantics.query.validation_rules.duplicate_metric import DuplicateMetricValidationRule +from metricflow.semantics.query.validation_rules.metric_time_requirements import MetricTimeQueryValidationRule class PostResolutionQueryValidator: diff --git a/metricflow/semantics/specs/python_object.py b/metricflow/semantics/specs/python_object.py index 0f66a412bf..97066ee655 100644 --- a/metricflow/semantics/specs/python_object.py +++ b/metricflow/semantics/specs/python_object.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.call_parameter_sets import ParseWhereFilterException from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter -from metricflow.query.query_exceptions import InvalidQueryException from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.semantics.protocols.query_parameter import GroupByParameter +from metricflow.semantics.query.query_exceptions import InvalidQueryException from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter diff --git a/metricflow/semantics/specs/query_param_implementations.py b/metricflow/semantics/specs/query_param_implementations.py index 70ceedd213..98c3cb7c11 100644 --- a/metricflow/semantics/specs/query_param_implementations.py +++ b/metricflow/semantics/specs/query_param_implementations.py @@ -9,11 +9,6 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.query.resolver_inputs.query_resolver_inputs import ( - ResolverInputForGroupByItem, - ResolverInputForMetric, - ResolverInputForOrderByItem, -) from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.semantics.naming.metric_scheme import MetricNamingScheme from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme @@ -23,6 +18,11 @@ TimeDimensionQueryParameter, ) from metricflow.semantics.protocols.query_parameter import SavedQueryParameter as SavedQueryParameterProtocol +from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ( + ResolverInputForGroupByItem, + ResolverInputForMetric, + ResolverInputForOrderByItem, +) from metricflow.semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, diff --git a/metricflow/semantics/specs/spec_classes.py b/metricflow/semantics/specs/spec_classes.py index bffb7a5c6e..e918b8c1d4 100644 --- a/metricflow/semantics/specs/spec_classes.py +++ b/metricflow/semantics/specs/spec_classes.py @@ -37,9 +37,11 @@ from metricflow.aggregation_properties import AggregationState from metricflow.collection_helpers.merger import Mergeable -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( + FilterSpecResolutionLookUp, +) from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_column_type import SqlColumnType from metricflow.sql.sql_plan import SqlJoinType diff --git a/metricflow/semantics/specs/where_filter_dimension.py b/metricflow/semantics/specs/where_filter_dimension.py index 388dba9297..5db7f0e41f 100644 --- a/metricflow/semantics/specs/where_filter_dimension.py +++ b/metricflow/semantics/specs/where_filter_dimension.py @@ -18,12 +18,12 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow.semantics.errors.error_classes import InvalidQuerySyntax +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.semantics.errors.error_classes import InvalidQuerySyntax from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker diff --git a/metricflow/semantics/specs/where_filter_entity.py b/metricflow/semantics/specs/where_filter_entity.py index caf8d49747..88e2471be0 100644 --- a/metricflow/semantics/specs/where_filter_entity.py +++ b/metricflow/semantics/specs/where_filter_entity.py @@ -13,12 +13,12 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow.semantics.errors.error_classes import InvalidQuerySyntax +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.semantics.errors.error_classes import InvalidQuerySyntax from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker diff --git a/metricflow/semantics/specs/where_filter_metric.py b/metricflow/semantics/specs/where_filter_metric.py index bd6f64bc48..43b032ec33 100644 --- a/metricflow/semantics/specs/where_filter_metric.py +++ b/metricflow/semantics/specs/where_filter_metric.py @@ -10,12 +10,12 @@ from dbt_semantic_interfaces.references import EntityReference, LinkableElementReference, MetricReference from typing_extensions import override -from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow.semantics.errors.error_classes import InvalidQuerySyntax +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.semantics.errors.error_classes import InvalidQuerySyntax from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker diff --git a/metricflow/semantics/specs/where_filter_time_dimension.py b/metricflow/semantics/specs/where_filter_time_dimension.py index 52ea1c5cc0..fb5a09973b 100644 --- a/metricflow/semantics/specs/where_filter_time_dimension.py +++ b/metricflow/semantics/specs/where_filter_time_dimension.py @@ -15,12 +15,12 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow.semantics.errors.error_classes import InvalidQuerySyntax +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.semantics.errors.error_classes import InvalidQuerySyntax from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker from metricflow.semantics.specs.where_filter_dimension import WhereFilterDimension diff --git a/metricflow/semantics/specs/where_filter_transform.py b/metricflow/semantics/specs/where_filter_transform.py index b83ecbaa6c..5b18d35882 100644 --- a/metricflow/semantics/specs/where_filter_transform.py +++ b/metricflow/semantics/specs/where_filter_transform.py @@ -7,8 +7,10 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilterIntersection from dbt_semantic_interfaces.protocols import WhereFilter, WhereFilterIntersection -from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( + FilterSpecResolutionLookUp, +) from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker from metricflow.semantics.specs.spec_classes import LinkableSpecSet, WhereFilterSpec diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index f4f18473cd..04114a1bca 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -9,11 +9,11 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.errors.error_classes import UnableToSatisfyQueryError from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index 04cc79e73d..32a886332f 100644 --- a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -7,7 +7,6 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.dataflow_plan import ( DataflowPlan, @@ -34,6 +33,7 @@ from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.semantics.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/fixtures/dataflow_fixtures.py b/tests/fixtures/dataflow_fixtures.py index 8470f4c2ec..6202295784 100644 --- a/tests/fixtures/dataflow_fixtures.py +++ b/tests/fixtures/dataflow_fixtures.py @@ -4,10 +4,10 @@ import pytest -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index e55f95ec4a..f8dcccea82 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -18,7 +18,6 @@ from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder, SourceNodeSet @@ -29,6 +28,7 @@ from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.test_helpers import ConfigurableTimeSource from tests.fixtures.id_fixtures import IdNumberSpace, patch_id_generators_helper diff --git a/tests/model/test_where_filter_spec.py b/tests/model/test_where_filter_spec.py index 0c4a2eeca5..a43487c0d2 100644 --- a/tests/model/test_where_filter_spec.py +++ b/tests/model/test_where_filter_spec.py @@ -24,16 +24,16 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( CallParameterSet, FilterSpecResolution, FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index 7c88337062..ae1b6fc5a4 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -5,10 +5,10 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.references import EntityReference -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index 52bae6000f..09bd155aa0 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -10,7 +10,6 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.dataflow_plan import ( @@ -32,6 +31,7 @@ from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/query/group_by_item/conftest.py b/tests/query/group_by_item/conftest.py index e3e0402824..e5bd062ca7 100644 --- a/tests/query/group_by_item/conftest.py +++ b/tests/query/group_by_item/conftest.py @@ -11,11 +11,11 @@ from dbt_semantic_interfaces.protocols import WhereFilterIntersection from dbt_semantic_interfaces.references import MetricReference -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId diff --git a/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py b/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py index 1dbf9bd1dd..0776a2a74b 100644 --- a/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py +++ b/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py @@ -21,16 +21,16 @@ from dbt_semantic_interfaces.transformations.transform_rule import SemanticManifestTransformRule from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( DefaultWhereFilterPatternFactory, ) -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ) -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_resolver import WhereFilterSpecResolver -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_resolver import WhereFilterSpecResolver +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform from tests.model.modify.modify_manifest import modify_manifest diff --git a/tests/query/group_by_item/resolution_dag/test_resolution_dags.py b/tests/query/group_by_item/resolution_dag/test_resolution_dags.py index 4f8587f40b..e467bcadbb 100644 --- a/tests/query/group_by_item/resolution_dag/test_resolution_dags.py +++ b/tests/query/group_by_item/resolution_dag/test_resolution_dags.py @@ -6,8 +6,8 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests/query/group_by_item/test_available_group_by_items.py b/tests/query/group_by_item/test_available_group_by_items.py index a288ad5e21..c1fb9be12e 100644 --- a/tests/query/group_by_item/test_available_group_by_items.py +++ b/tests/query/group_by_item/test_available_group_by_items.py @@ -6,9 +6,9 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolver -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.semantics.specs.spec_classes import LinkableSpecSet from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query.group_by_item.conftest import AmbiguousResolutionQueryId diff --git a/tests/query/group_by_item/test_matching_item_for_filters.py b/tests/query/group_by_item/test_matching_item_for_filters.py index 4c96c77ad9..938cdb0a9f 100644 --- a/tests/query/group_by_item/test_matching_item_for_filters.py +++ b/tests/query/group_by_item/test_matching_item_for_filters.py @@ -7,11 +7,11 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolver -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_object_snapshot_equal diff --git a/tests/query/group_by_item/test_matching_item_for_querying.py b/tests/query/group_by_item/test_matching_item_for_querying.py index bd3f0b6694..829cf04147 100644 --- a/tests/query/group_by_item/test_matching_item_for_querying.py +++ b/tests/query/group_by_item/test_matching_item_for_querying.py @@ -9,14 +9,14 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference -from metricflow.query.group_by_item.group_by_item_resolver import GroupByItemResolver -from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( - MetricGroupByItemResolutionNode, -) from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver +from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( + MetricGroupByItemResolutionNode, +) from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_object_snapshot_equal diff --git a/tests/query/test_ambiguous_entity_path.py b/tests/query/test_ambiguous_entity_path.py index fb60543e7f..dab5fc4d07 100644 --- a/tests/query/test_ambiguous_entity_path.py +++ b/tests/query/test_ambiguous_entity_path.py @@ -5,12 +5,12 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( DefaultWhereFilterPatternFactory, ) -from metricflow.query.query_exceptions import InvalidQueryException -from metricflow.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.query.query_exceptions import InvalidQueryException +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_object_snapshot_equal, assert_str_snapshot_equal diff --git a/tests/query/test_query_parser.py b/tests/query/test_query_parser.py index e9141fc5fb..5fbfc5c480 100644 --- a/tests/query/test_query_parser.py +++ b/tests/query/test_query_parser.py @@ -14,10 +14,10 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator -from metricflow.query.query_exceptions import InvalidQueryException -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow.semantics.query.query_exceptions import InvalidQueryException +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.query_param_implementations import ( DimensionOrEntityParameter, MetricParameter, diff --git a/tests/query/test_suggestions.py b/tests/query/test_suggestions.py index ac0e894b2b..76dcd96446 100644 --- a/tests/query/test_suggestions.py +++ b/tests/query/test_suggestions.py @@ -12,10 +12,10 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference -from metricflow.query.query_exceptions import InvalidQueryException -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.semantics.query.query_exceptions import InvalidQueryException +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.model.modify.modify_manifest import modify_manifest from tests.model.modify.modify_metric_filter import ModifyMetricFilterTransform diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests/query_rendering/test_cumulative_metric_rendering.py index c6cd7cac9b..1788db330c 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests/query_rendering/test_cumulative_metric_rendering.py @@ -11,11 +11,11 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index d11edade52..5d4b187bf9 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -9,12 +9,12 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index ad29de22d3..fcf3fd87a1 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -12,11 +12,11 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, diff --git a/tests/query_rendering/test_metric_filter_rendering.py b/tests/query_rendering/test_metric_filter_rendering.py index 7cc32563c1..077b7dd87e 100644 --- a/tests/query_rendering/test_metric_filter_rendering.py +++ b/tests/query_rendering/test_metric_filter_rendering.py @@ -4,10 +4,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index 88bd97911b..07b4325462 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -16,12 +16,12 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.query.query_parser import MetricFlowQueryParser from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/specs/conftest.py b/tests/specs/conftest.py index 41d99423ce..061ab20d1b 100644 --- a/tests/specs/conftest.py +++ b/tests/specs/conftest.py @@ -2,6 +2,6 @@ from dbt_semantic_interfaces.references import MetricReference -from metricflow.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation EXAMPLE_FILTER_LOCATION = WhereFilterLocation.for_metric(MetricReference("example_metric")) diff --git a/tests/specs/test_where_filter_entity.py b/tests/specs/test_where_filter_entity.py index 2c052a14d7..efdcbbc61e 100644 --- a/tests/specs/test_where_filter_entity.py +++ b/tests/specs/test_where_filter_entity.py @@ -2,8 +2,10 @@ import pytest -from metricflow.query.group_by_item.filter_spec_resolution.filter_spec_lookup import FilterSpecResolutionLookUp from metricflow.semantics.errors.error_classes import InvalidQuerySyntax +from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( + FilterSpecResolutionLookUp, +) from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker from metricflow.semantics.specs.where_filter_entity import WhereFilterEntity From d80ebc3972e140127e42026473c9c2c512f2578b Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 16:01:52 -0700 Subject: [PATCH 23/80] Move sql. --- .../dbt_connectors/adapter_backed_client.py | 18 +++++++++--------- metricflow/engine/metricflow_engine.py | 4 ++-- .../execution/convert_to_execution_plan.py | 2 +- metricflow/execution/dataflow_to_execution.py | 2 +- metricflow/execution/execution_plan.py | 4 ++-- metricflow/inference/context/data_warehouse.py | 4 ++-- metricflow/inference/context/snowflake.py | 4 ++-- metricflow/inference/models.py | 2 +- metricflow/inference/renderer/config_file.py | 2 +- metricflow/inference/renderer/stream.py | 2 +- metricflow/inference/runner.py | 2 +- metricflow/inference/solver/base.py | 2 +- metricflow/inference/solver/weighted_tree.py | 2 +- .../dataflow/builder/dataflow_plan_builder.py | 4 ++-- .../dataflow/builder/node_evaluator.py | 2 +- .../semantics/dataflow/nodes/join_to_base.py | 2 +- .../dataflow/nodes/join_to_time_spine.py | 2 +- .../semantics/dataflow/nodes/write_to_table.py | 2 +- .../dataset/convert_semantic_model.py | 6 +++--- .../dataset/semantic_model_adapter.py | 2 +- metricflow/semantics/dataset/sql_dataset.py | 2 +- .../model/data_warehouse_model_validator.py | 2 +- .../model/semantic_manifest_lookup.py | 2 +- .../plan_conversion/convert_to_sql_plan.py | 2 +- .../plan_conversion/dataflow_to_sql.py | 6 +++--- .../plan_conversion/instance_converters.py | 4 ++-- .../plan_conversion/node_processor.py | 2 +- .../plan_conversion/select_column_gen.py | 2 +- .../plan_conversion/spec_transforms.py | 2 +- .../plan_conversion/sql_expression_builders.py | 2 +- .../plan_conversion/sql_join_builder.py | 4 ++-- .../semantics/plan_conversion/time_spine.py | 2 +- metricflow/semantics/protocols/sql_client.py | 4 ++-- metricflow/semantics/specs/spec_classes.py | 6 +++--- .../semantics/specs/where_filter_transform.py | 2 +- metricflow/{ => semantics}/sql/__init__.py | 0 .../{ => semantics}/sql/optimizer/__init__.py | 0 .../sql/optimizer/column_pruner.py | 6 +++--- .../sql/optimizer/optimization_levels.py | 10 +++++----- .../optimizer/rewriting_sub_query_reducer.py | 6 +++--- .../sql/optimizer/sql_query_plan_optimizer.py | 2 +- .../sql/optimizer/sub_query_reducer.py | 6 +++--- .../sql/optimizer/table_alias_simplifier.py | 4 ++-- .../{ => semantics}/sql/render/__init__.py | 0 .../{ => semantics}/sql/render/big_query.py | 10 +++++----- .../{ => semantics}/sql/render/databricks.py | 6 +++--- .../sql/render/duckdb_renderer.py | 8 ++++---- .../sql/render/expr_renderer.py | 8 ++++---- .../{ => semantics}/sql/render/postgres.py | 8 ++++---- .../{ => semantics}/sql/render/redshift.py | 8 ++++---- .../sql/render/rendering_constants.py | 0 .../{ => semantics}/sql/render/snowflake.py | 12 ++++++++---- .../sql/render/sql_plan_renderer.py | 8 ++++---- metricflow/{ => semantics}/sql/render/trino.py | 8 ++++---- .../{ => semantics}/sql/sql_bind_parameters.py | 2 +- metricflow/{ => semantics}/sql/sql_column.py | 2 +- .../{ => semantics}/sql/sql_column_type.py | 0 metricflow/{ => semantics}/sql/sql_exprs.py | 2 +- metricflow/{ => semantics}/sql/sql_plan.py | 4 ++-- metricflow/{ => semantics}/sql/sql_table.py | 0 tests/dataflow/builder/test_node_data_set.py | 11 ++++++++--- tests/dataflow/builder/test_node_evaluator.py | 2 +- tests/dataflow/test_sql_column.py | 4 ++-- tests/dataflow/test_sql_table.py | 2 +- tests/examples/test_node_sql.py | 4 ++-- tests/execution/test_tasks.py | 4 ++-- .../sql_clients/adapter_backed_ddl_client.py | 2 +- .../base_sql_client_implementation.py | 4 ++-- tests/fixtures/sql_clients/ddl_sql_client.py | 2 +- .../fixtures/sql_clients/sqlalchemy_dialect.py | 4 ++-- tests/fixtures/sql_fixtures.py | 2 +- tests/inference/context/test_data_warehouse.py | 4 ++-- tests/inference/context/test_snowflake.py | 4 ++-- tests/inference/renderer/test_config_file.py | 2 +- tests/inference/rule/conftest.py | 4 ++-- tests/inference/rule/test_defaults.py | 4 ++-- tests/inference/rule/test_rules.py | 4 ++-- tests/inference/solver/test_weighted_tree.py | 2 +- tests/integration/test_configured_cases.py | 2 +- tests/mf_logging/test_dag_to_text.py | 11 ++++++++--- tests/model/test_data_warehouse_tasks.py | 2 +- ..._select_columns_with_measures_aggregated.py | 2 +- .../test_dataflow_to_execution.py | 2 +- .../test_dataflow_to_sql_plan.py | 6 +++--- .../query_rendering/compare_rendered_query.py | 2 +- tests/sql/compare_sql_plan.py | 4 ++-- tests/sql/optimizer/test_column_pruner.py | 10 +++++----- .../test_rewriting_sub_query_reducer.py | 8 ++++---- tests/sql/optimizer/test_sub_query_reducer.py | 8 ++++---- .../optimizer/test_table_alias_simplifier.py | 10 +++++----- tests/sql/test_bind_parameter_serialization.py | 2 +- tests/sql/test_engine_specific_rendering.py | 6 +++--- tests/sql/test_sql_expr_render.py | 4 ++-- tests/sql/test_sql_plan_render.py | 6 +++--- tests/sql_clients/test_date_time_operations.py | 2 +- tests/sql_clients/test_sql_client.py | 4 ++-- tests/table_snapshot/table_snapshots.py | 2 +- tests/table_snapshot/test_source_schema.py | 2 +- 98 files changed, 204 insertions(+), 190 deletions(-) rename metricflow/{ => semantics}/sql/__init__.py (100%) rename metricflow/{ => semantics}/sql/optimizer/__init__.py (100%) rename metricflow/{ => semantics}/sql/optimizer/column_pruner.py (98%) rename metricflow/{ => semantics}/sql/optimizer/optimization_levels.py (75%) rename metricflow/{ => semantics}/sql/optimizer/rewriting_sub_query_reducer.py (99%) rename metricflow/{ => semantics}/sql/optimizer/sql_query_plan_optimizer.py (85%) rename metricflow/{ => semantics}/sql/optimizer/sub_query_reducer.py (97%) rename metricflow/{ => semantics}/sql/optimizer/table_alias_simplifier.py (96%) rename metricflow/{ => semantics}/sql/render/__init__.py (100%) rename metricflow/{ => semantics}/sql/render/big_query.py (95%) rename metricflow/{ => semantics}/sql/render/databricks.py (92%) rename metricflow/{ => semantics}/sql/render/duckdb_renderer.py (92%) rename metricflow/{ => semantics}/sql/render/expr_renderer.py (98%) rename metricflow/{ => semantics}/sql/render/postgres.py (93%) rename metricflow/{ => semantics}/sql/render/redshift.py (94%) rename metricflow/{ => semantics}/sql/render/rendering_constants.py (100%) rename metricflow/{ => semantics}/sql/render/snowflake.py (89%) rename metricflow/{ => semantics}/sql/render/sql_plan_renderer.py (97%) rename metricflow/{ => semantics}/sql/render/trino.py (94%) rename metricflow/{ => semantics}/sql/sql_bind_parameters.py (98%) rename metricflow/{ => semantics}/sql/sql_column.py (96%) rename metricflow/{ => semantics}/sql/sql_column_type.py (100%) rename metricflow/{ => semantics}/sql/sql_exprs.py (99%) rename metricflow/{ => semantics}/sql/sql_plan.py (98%) rename metricflow/{ => semantics}/sql/sql_table.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py index 36dd026976..51bd6bc735 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py @@ -14,15 +14,15 @@ from metricflow.random_id import random_id from metricflow.semantics.errors.error_classes import SqlBindParametersNotSupportedError from metricflow.semantics.protocols.sql_client import SqlEngine -from metricflow.sql.render.big_query import BigQuerySqlQueryPlanRenderer -from metricflow.sql.render.databricks import DatabricksSqlQueryPlanRenderer -from metricflow.sql.render.duckdb_renderer import DuckDbSqlQueryPlanRenderer -from metricflow.sql.render.postgres import PostgresSQLSqlQueryPlanRenderer -from metricflow.sql.render.redshift import RedshiftSqlQueryPlanRenderer -from metricflow.sql.render.snowflake import SnowflakeSqlQueryPlanRenderer -from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer -from metricflow.sql.render.trino import TrinoSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.render.big_query import BigQuerySqlQueryPlanRenderer +from metricflow.semantics.sql.render.databricks import DatabricksSqlQueryPlanRenderer +from metricflow.semantics.sql.render.duckdb_renderer import DuckDbSqlQueryPlanRenderer +from metricflow.semantics.sql.render.postgres import PostgresSQLSqlQueryPlanRenderer +from metricflow.semantics.sql.render.redshift import RedshiftSqlQueryPlanRenderer +from metricflow.semantics.sql.render.snowflake import SnowflakeSqlQueryPlanRenderer +from metricflow.semantics.sql.render.sql_plan_renderer import SqlQueryPlanRenderer +from metricflow.semantics.sql.render.trino import TrinoSqlQueryPlanRenderer +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql_request.sql_request_attributes import SqlRequestId logger = logging.getLogger(__name__) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 39a4e69e07..d05f818f1e 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -53,8 +53,8 @@ from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.query_param_implementations import SavedQueryParameter from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec -from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel +from metricflow.semantics.sql.sql_table import SqlTable from metricflow.telemetry.models import TelemetryLevel from metricflow.telemetry.reporter import TelemetryReporter, log_call from metricflow.time.time_source import TimeSource diff --git a/metricflow/execution/convert_to_execution_plan.py b/metricflow/execution/convert_to_execution_plan.py index 39de7e3054..8099c9d277 100644 --- a/metricflow/execution/convert_to_execution_plan.py +++ b/metricflow/execution/convert_to_execution_plan.py @@ -4,7 +4,7 @@ from metricflow.execution.execution_plan import ExecutionPlan from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult -from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult +from metricflow.semantics.sql.render.sql_plan_renderer import SqlPlanRenderResult @dataclass(frozen=True) diff --git a/metricflow/execution/dataflow_to_execution.py b/metricflow/execution/dataflow_to_execution.py index f8544be437..921300f180 100644 --- a/metricflow/execution/dataflow_to_execution.py +++ b/metricflow/execution/dataflow_to_execution.py @@ -20,7 +20,7 @@ from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult, SqlQueryPlanRenderer +from metricflow.semantics.sql.render.sql_plan_renderer import SqlPlanRenderResult, SqlQueryPlanRenderer logger = logging.getLogger(__name__) diff --git a/metricflow/execution/execution_plan.py b/metricflow/execution/execution_plan.py index 5553a1c7fd..4f988be499 100644 --- a/metricflow/execution/execution_plan.py +++ b/metricflow/execution/execution_plan.py @@ -11,8 +11,8 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_table import SqlTable from metricflow.visitor import Visitable logger = logging.getLogger(__name__) diff --git a/metricflow/inference/context/data_warehouse.py b/metricflow/inference/context/data_warehouse.py index 4ab841bc60..840b4452c8 100644 --- a/metricflow/inference/context/data_warehouse.py +++ b/metricflow/inference/context/data_warehouse.py @@ -9,8 +9,8 @@ from metricflow.inference.context.base import InferenceContext, InferenceContextProvider from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.sql.sql_column import SqlColumn -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_table import SqlTable T = TypeVar("T", str, int, float, date, datetime) diff --git a/metricflow/inference/context/snowflake.py b/metricflow/inference/context/snowflake.py index 97c3684b71..f9b1985895 100644 --- a/metricflow/inference/context/snowflake.py +++ b/metricflow/inference/context/snowflake.py @@ -8,8 +8,8 @@ InferenceColumnType, TableProperties, ) -from metricflow.sql.sql_column import SqlColumn -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_table import SqlTable class SnowflakeInferenceContextProvider(DataWarehouseInferenceContextProvider): diff --git a/metricflow/inference/models.py b/metricflow/inference/models.py index 4d1e11870a..d4f7319f9c 100644 --- a/metricflow/inference/models.py +++ b/metricflow/inference/models.py @@ -7,7 +7,7 @@ from enum import Enum from typing import List, Optional -from metricflow.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_column import SqlColumn class InferenceSignalConfidence(Enum): diff --git a/metricflow/inference/renderer/config_file.py b/metricflow/inference/renderer/config_file.py index d4d5461349..c550bc4aa6 100644 --- a/metricflow/inference/renderer/config_file.py +++ b/metricflow/inference/renderer/config_file.py @@ -11,7 +11,7 @@ from metricflow.inference.models import InferenceResult, InferenceSignalType from metricflow.inference.renderer.base import InferenceRenderer -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable yaml = YAML() diff --git a/metricflow/inference/renderer/stream.py b/metricflow/inference/renderer/stream.py index 41b26e5f74..34211167f4 100644 --- a/metricflow/inference/renderer/stream.py +++ b/metricflow/inference/renderer/stream.py @@ -6,7 +6,7 @@ from metricflow.inference.models import InferenceResult from metricflow.inference.renderer.base import InferenceRenderer -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable class StreamInferenceRenderer(InferenceRenderer): diff --git a/metricflow/inference/runner.py b/metricflow/inference/runner.py index ed03ee90af..3655ab19b3 100644 --- a/metricflow/inference/runner.py +++ b/metricflow/inference/runner.py @@ -13,7 +13,7 @@ from metricflow.inference.renderer.base import InferenceRenderer from metricflow.inference.rule.base import InferenceRule from metricflow.inference.solver.base import InferenceSolver -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable logger = logging.getLogger(__file__) diff --git a/metricflow/inference/solver/base.py b/metricflow/inference/solver/base.py index ddb122caac..ffe34cfc11 100644 --- a/metricflow/inference/solver/base.py +++ b/metricflow/inference/solver/base.py @@ -4,7 +4,7 @@ from typing import List from metricflow.inference.models import InferenceResult, InferenceSignal -from metricflow.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_column import SqlColumn class InferenceSolver(ABC): diff --git a/metricflow/inference/solver/weighted_tree.py b/metricflow/inference/solver/weighted_tree.py index 7b637e2ecc..633fd1e9d5 100644 --- a/metricflow/inference/solver/weighted_tree.py +++ b/metricflow/inference/solver/weighted_tree.py @@ -11,7 +11,7 @@ InferenceSignalType, ) from metricflow.inference.solver.base import InferenceSolver -from metricflow.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_column import SqlColumn NodeWeighterFunction = Callable[[InferenceSignalConfidence], int] diff --git a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py index 4331914f43..f574ad281b 100644 --- a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py @@ -86,8 +86,8 @@ WhereFilterSpec, ) from metricflow.semantics.specs.where_filter_transform import WhereSpecFactory -from metricflow.sql.sql_plan import SqlJoinType -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_plan import SqlJoinType +from metricflow.semantics.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dataflow/builder/node_evaluator.py b/metricflow/semantics/dataflow/builder/node_evaluator.py index f635f4c6e9..4197b69766 100644 --- a/metricflow/semantics/dataflow/builder/node_evaluator.py +++ b/metricflow/semantics/dataflow/builder/node_evaluator.py @@ -47,7 +47,7 @@ LinkableSpecSet, LinklessEntitySpec, ) -from metricflow.sql.sql_plan import SqlJoinType +from metricflow.semantics.sql.sql_plan import SqlJoinType logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dataflow/nodes/join_to_base.py b/metricflow/semantics/dataflow/nodes/join_to_base.py index 48a628376b..213ae94794 100644 --- a/metricflow/semantics/dataflow/nodes/join_to_base.py +++ b/metricflow/semantics/dataflow/nodes/join_to_base.py @@ -11,7 +11,7 @@ ) from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec -from metricflow.sql.sql_plan import SqlJoinType +from metricflow.semantics.sql.sql_plan import SqlJoinType from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/join_to_time_spine.py b/metricflow/semantics/dataflow/nodes/join_to_time_spine.py index d04314aaad..4553dd3612 100644 --- a/metricflow/semantics/dataflow/nodes/join_to_time_spine.py +++ b/metricflow/semantics/dataflow/nodes/join_to_time_spine.py @@ -11,7 +11,7 @@ from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec -from metricflow.sql.sql_plan import SqlJoinType +from metricflow.semantics.sql.sql_plan import SqlJoinType from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/write_to_table.py b/metricflow/semantics/dataflow/nodes/write_to_table.py index 374eb91195..4b4a3ae7a0 100644 --- a/metricflow/semantics/dataflow/nodes/write_to_table.py +++ b/metricflow/semantics/dataflow/nodes/write_to_table.py @@ -10,7 +10,7 @@ SinkNodeVisitor, SinkOutput, ) -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable from metricflow.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataset/convert_semantic_model.py b/metricflow/semantics/dataset/convert_semantic_model.py index bd80d53ca2..1607da5fd0 100644 --- a/metricflow/semantics/dataset/convert_semantic_model.py +++ b/metricflow/semantics/dataset/convert_semantic_model.py @@ -39,7 +39,7 @@ EntitySpec, TimeDimensionSpec, ) -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, SqlDateTruncExpression, @@ -47,12 +47,12 @@ SqlExtractExpression, SqlStringExpression, ) -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.sql_plan import ( SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dataset/semantic_model_adapter.py b/metricflow/semantics/dataset/semantic_model_adapter.py index c3cb37d51a..1e28f7c7c7 100644 --- a/metricflow/semantics/dataset/semantic_model_adapter.py +++ b/metricflow/semantics/dataset/semantic_model_adapter.py @@ -5,7 +5,7 @@ from metricflow.instances import InstanceSet from metricflow.semantics.dataset.sql_dataset import SqlDataSet -from metricflow.sql.sql_plan import SqlSelectStatementNode +from metricflow.semantics.sql.sql_plan import SqlSelectStatementNode class SemanticModelDataSet(SqlDataSet): diff --git a/metricflow/semantics/dataset/sql_dataset.py b/metricflow/semantics/dataset/sql_dataset.py index bd841db5fe..dfa0015bf3 100644 --- a/metricflow/semantics/dataset/sql_dataset.py +++ b/metricflow/semantics/dataset/sql_dataset.py @@ -12,7 +12,7 @@ from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.column_assoc import ColumnAssociation from metricflow.semantics.specs.spec_classes import DimensionSpec, EntitySpec, TimeDimensionSpec -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.sql_plan import ( SqlQueryPlanNode, SqlSelectStatementNode, ) diff --git a/metricflow/semantics/model/data_warehouse_model_validator.py b/metricflow/semantics/model/data_warehouse_model_validator.py index 3fbf38b8f6..ba5e7c337f 100644 --- a/metricflow/semantics/model/data_warehouse_model_validator.py +++ b/metricflow/semantics/model/data_warehouse_model_validator.py @@ -42,7 +42,7 @@ from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters @dataclass diff --git a/metricflow/semantics/model/semantic_manifest_lookup.py b/metricflow/semantics/model/semantic_manifest_lookup.py index 32076d009f..2b52c85a58 100644 --- a/metricflow/semantics/model/semantic_manifest_lookup.py +++ b/metricflow/semantics/model/semantic_manifest_lookup.py @@ -9,7 +9,7 @@ from metricflow.semantics.model.semantics.metric_lookup import MetricLookup from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/plan_conversion/convert_to_sql_plan.py b/metricflow/semantics/plan_conversion/convert_to_sql_plan.py index ae36364572..e7d9873b72 100644 --- a/metricflow/semantics/plan_conversion/convert_to_sql_plan.py +++ b/metricflow/semantics/plan_conversion/convert_to_sql_plan.py @@ -3,7 +3,7 @@ from dataclasses import dataclass from metricflow.instances import InstanceSet -from metricflow.sql.sql_plan import SqlQueryPlan +from metricflow.semantics.sql.sql_plan import SqlQueryPlan @dataclass(frozen=True) diff --git a/metricflow/semantics/plan_conversion/dataflow_to_sql.py b/metricflow/semantics/plan_conversion/dataflow_to_sql.py index 4c16a7150e..deb07945ee 100644 --- a/metricflow/semantics/plan_conversion/dataflow_to_sql.py +++ b/metricflow/semantics/plan_conversion/dataflow_to_sql.py @@ -100,11 +100,11 @@ MetricSpec, TimeDimensionSpec, ) -from metricflow.sql.optimizer.optimization_levels import ( +from metricflow.semantics.sql.optimizer.optimization_levels import ( SqlQueryOptimizationLevel, SqlQueryOptimizerConfiguration, ) -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlBetweenExpression, SqlColumnReference, @@ -126,7 +126,7 @@ SqlWindowFunctionExpression, SqlWindowOrderByArgument, ) -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlJoinType, diff --git a/metricflow/semantics/plan_conversion/instance_converters.py b/metricflow/semantics/plan_conversion/instance_converters.py index ceba8731b0..e932abeab1 100644 --- a/metricflow/semantics/plan_conversion/instance_converters.py +++ b/metricflow/semantics/plan_conversion/instance_converters.py @@ -46,7 +46,7 @@ MetricInputMeasureSpec, TimeDimensionSpec, ) -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, SqlColumnReferenceExpression, @@ -55,7 +55,7 @@ SqlFunctionExpression, SqlStringExpression, ) -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.sql_plan import ( SqlSelectColumn, ) diff --git a/metricflow/semantics/plan_conversion/node_processor.py b/metricflow/semantics/plan_conversion/node_processor.py index 5775c91627..ce042ad93f 100644 --- a/metricflow/semantics/plan_conversion/node_processor.py +++ b/metricflow/semantics/plan_conversion/node_processor.py @@ -21,7 +21,7 @@ from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec from metricflow.semantics.specs.spec_set_transforms import ToElementNameSet -from metricflow.sql.sql_plan import SqlJoinType +from metricflow.semantics.sql.sql_plan import SqlJoinType logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/plan_conversion/select_column_gen.py b/metricflow/semantics/plan_conversion/select_column_gen.py index 3d7be3fd68..c920187e61 100644 --- a/metricflow/semantics/plan_conversion/select_column_gen.py +++ b/metricflow/semantics/plan_conversion/select_column_gen.py @@ -4,7 +4,7 @@ from dataclasses import dataclass, field from typing import List, Tuple -from metricflow.sql.sql_plan import SqlSelectColumn +from metricflow.semantics.sql.sql_plan import SqlSelectColumn logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/plan_conversion/spec_transforms.py b/metricflow/semantics/plan_conversion/spec_transforms.py index c2bb602989..11eeea8c83 100644 --- a/metricflow/semantics/plan_conversion/spec_transforms.py +++ b/metricflow/semantics/plan_conversion/spec_transforms.py @@ -9,7 +9,7 @@ InstanceSpecSet, InstanceSpecSetTransform, ) -from metricflow.sql.sql_plan import SqlSelectColumn +from metricflow.semantics.sql.sql_plan import SqlSelectColumn class CreateSelectCoalescedColumnsForLinkableSpecs(InstanceSpecSetTransform[SelectColumnSet]): diff --git a/metricflow/semantics/plan_conversion/sql_expression_builders.py b/metricflow/semantics/plan_conversion/sql_expression_builders.py index c3567ab163..b6ab50a036 100644 --- a/metricflow/semantics/plan_conversion/sql_expression_builders.py +++ b/metricflow/semantics/plan_conversion/sql_expression_builders.py @@ -3,7 +3,7 @@ from typing import List, Sequence -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, SqlColumnReferenceExpression, diff --git a/metricflow/semantics/plan_conversion/sql_join_builder.py b/metricflow/semantics/plan_conversion/sql_join_builder.py index 61d73a7731..7f521d81ba 100644 --- a/metricflow/semantics/plan_conversion/sql_join_builder.py +++ b/metricflow/semantics/plan_conversion/sql_join_builder.py @@ -13,7 +13,7 @@ from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.plan_conversion.sql_expression_builders import make_coalesced_expr -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, SqlComparison, @@ -24,7 +24,7 @@ SqlLogicalOperator, SqlSubtractTimeIntervalExpression, ) -from metricflow.sql.sql_plan import SqlExpressionNode, SqlJoinDescription, SqlJoinType, SqlSelectStatementNode +from metricflow.semantics.sql.sql_plan import SqlExpressionNode, SqlJoinDescription, SqlJoinType, SqlSelectStatementNode @dataclass(frozen=True) diff --git a/metricflow/semantics/plan_conversion/time_spine.py b/metricflow/semantics/plan_conversion/time_spine.py index 927753a058..0dec6469da 100644 --- a/metricflow/semantics/plan_conversion/time_spine.py +++ b/metricflow/semantics/plan_conversion/time_spine.py @@ -5,7 +5,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/protocols/sql_client.py b/metricflow/semantics/protocols/sql_client.py index 6f026eff21..aab61744aa 100644 --- a/metricflow/semantics/protocols/sql_client.py +++ b/metricflow/semantics/protocols/sql_client.py @@ -6,8 +6,8 @@ from pandas import DataFrame -from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.render.sql_plan_renderer import SqlQueryPlanRenderer +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters class SqlEngine(Enum): diff --git a/metricflow/semantics/specs/spec_classes.py b/metricflow/semantics/specs/spec_classes.py index e918b8c1d4..f114e8d123 100644 --- a/metricflow/semantics/specs/spec_classes.py +++ b/metricflow/semantics/specs/spec_classes.py @@ -42,9 +42,9 @@ from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ) -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_column_type import SqlColumnType -from metricflow.sql.sql_plan import SqlJoinType +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_column_type import SqlColumnType +from metricflow.semantics.sql.sql_plan import SqlJoinType from metricflow.visitor import VisitorOutputT if TYPE_CHECKING: diff --git a/metricflow/semantics/specs/where_filter_transform.py b/metricflow/semantics/specs/where_filter_transform.py index 5b18d35882..ef27c5cc36 100644 --- a/metricflow/semantics/specs/where_filter_transform.py +++ b/metricflow/semantics/specs/where_filter_transform.py @@ -18,7 +18,7 @@ from metricflow.semantics.specs.where_filter_entity import WhereFilterEntityFactory from metricflow.semantics.specs.where_filter_metric import WhereFilterMetricFactory from metricflow.semantics.specs.where_filter_time_dimension import WhereFilterTimeDimensionFactory -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters logger = logging.getLogger(__name__) diff --git a/metricflow/sql/__init__.py b/metricflow/semantics/sql/__init__.py similarity index 100% rename from metricflow/sql/__init__.py rename to metricflow/semantics/sql/__init__.py diff --git a/metricflow/sql/optimizer/__init__.py b/metricflow/semantics/sql/optimizer/__init__.py similarity index 100% rename from metricflow/sql/optimizer/__init__.py rename to metricflow/semantics/sql/optimizer/__init__.py diff --git a/metricflow/sql/optimizer/column_pruner.py b/metricflow/semantics/sql/optimizer/column_pruner.py similarity index 98% rename from metricflow/sql/optimizer/column_pruner.py rename to metricflow/semantics/sql/optimizer/column_pruner.py index 75c62ca7b8..7892a50e67 100644 --- a/metricflow/sql/optimizer/column_pruner.py +++ b/metricflow/semantics/sql/optimizer/column_pruner.py @@ -4,11 +4,11 @@ from collections import defaultdict from typing import Dict, List, Set, Tuple -from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer +from metricflow.semantics.sql.sql_exprs import ( SqlExpressionTreeLineage, ) -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlQueryPlanNode, diff --git a/metricflow/sql/optimizer/optimization_levels.py b/metricflow/semantics/sql/optimizer/optimization_levels.py similarity index 75% rename from metricflow/sql/optimizer/optimization_levels.py rename to metricflow/semantics/sql/optimizer/optimization_levels.py index 2355ca53ff..5ded812861 100644 --- a/metricflow/sql/optimizer/optimization_levels.py +++ b/metricflow/semantics/sql/optimizer/optimization_levels.py @@ -3,11 +3,11 @@ from enum import Enum from typing import Sequence -from metricflow.sql.optimizer.column_pruner import SqlColumnPrunerOptimizer -from metricflow.sql.optimizer.rewriting_sub_query_reducer import SqlRewritingSubQueryReducer -from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer -from metricflow.sql.optimizer.sub_query_reducer import SqlSubQueryReducer -from metricflow.sql.optimizer.table_alias_simplifier import SqlTableAliasSimplifier +from metricflow.semantics.sql.optimizer.column_pruner import SqlColumnPrunerOptimizer +from metricflow.semantics.sql.optimizer.rewriting_sub_query_reducer import SqlRewritingSubQueryReducer +from metricflow.semantics.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer +from metricflow.semantics.sql.optimizer.sub_query_reducer import SqlSubQueryReducer +from metricflow.semantics.sql.optimizer.table_alias_simplifier import SqlTableAliasSimplifier class SqlQueryOptimizationLevel(Enum): diff --git a/metricflow/sql/optimizer/rewriting_sub_query_reducer.py b/metricflow/semantics/sql/optimizer/rewriting_sub_query_reducer.py similarity index 99% rename from metricflow/sql/optimizer/rewriting_sub_query_reducer.py rename to metricflow/semantics/sql/optimizer/rewriting_sub_query_reducer.py index 5e2056820b..4af2a94def 100644 --- a/metricflow/sql/optimizer/rewriting_sub_query_reducer.py +++ b/metricflow/semantics/sql/optimizer/rewriting_sub_query_reducer.py @@ -5,8 +5,8 @@ from typing import List, Optional, Sequence, Tuple from metricflow.mf_logging.formatting import indent -from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer +from metricflow.semantics.sql.sql_exprs import ( SqlColumnAliasReferenceExpression, SqlColumnReference, SqlColumnReplacements, @@ -15,7 +15,7 @@ SqlLogicalExpression, SqlLogicalOperator, ) -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlOrderByDescription, diff --git a/metricflow/sql/optimizer/sql_query_plan_optimizer.py b/metricflow/semantics/sql/optimizer/sql_query_plan_optimizer.py similarity index 85% rename from metricflow/sql/optimizer/sql_query_plan_optimizer.py rename to metricflow/semantics/sql/optimizer/sql_query_plan_optimizer.py index d3140c94a9..bc07f3a8f1 100644 --- a/metricflow/sql/optimizer/sql_query_plan_optimizer.py +++ b/metricflow/semantics/sql/optimizer/sql_query_plan_optimizer.py @@ -2,7 +2,7 @@ from abc import ABC, abstractmethod -from metricflow.sql.sql_plan import SqlQueryPlanNode +from metricflow.semantics.sql.sql_plan import SqlQueryPlanNode class SqlQueryPlanOptimizer(ABC): diff --git a/metricflow/sql/optimizer/sub_query_reducer.py b/metricflow/semantics/sql/optimizer/sub_query_reducer.py similarity index 97% rename from metricflow/sql/optimizer/sub_query_reducer.py rename to metricflow/semantics/sql/optimizer/sub_query_reducer.py index be649142ff..70ec4e2b15 100644 --- a/metricflow/sql/optimizer/sub_query_reducer.py +++ b/metricflow/semantics/sql/optimizer/sub_query_reducer.py @@ -3,9 +3,9 @@ import logging from typing import List, Optional -from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer -from metricflow.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer +from metricflow.semantics.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression +from metricflow.semantics.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlOrderByDescription, diff --git a/metricflow/sql/optimizer/table_alias_simplifier.py b/metricflow/semantics/sql/optimizer/table_alias_simplifier.py similarity index 96% rename from metricflow/sql/optimizer/table_alias_simplifier.py rename to metricflow/semantics/sql/optimizer/table_alias_simplifier.py index cc83cd9b81..51191e66fc 100644 --- a/metricflow/sql/optimizer/table_alias_simplifier.py +++ b/metricflow/semantics/sql/optimizer/table_alias_simplifier.py @@ -2,8 +2,8 @@ import logging -from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer +from metricflow.semantics.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlOrderByDescription, diff --git a/metricflow/sql/render/__init__.py b/metricflow/semantics/sql/render/__init__.py similarity index 100% rename from metricflow/sql/render/__init__.py rename to metricflow/semantics/sql/render/__init__.py diff --git a/metricflow/sql/render/big_query.py b/metricflow/semantics/sql/render/big_query.py similarity index 95% rename from metricflow/sql/render/big_query.py rename to metricflow/semantics/sql/render/big_query.py index 58d8e76c13..6becf38d49 100644 --- a/metricflow/sql/render/big_query.py +++ b/metricflow/semantics/sql/render/big_query.py @@ -9,14 +9,14 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.sql.render.expr_renderer import ( +from metricflow.semantics.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlDateTruncExpression, SqlExtractExpression, @@ -25,7 +25,7 @@ SqlPercentileFunctionType, SqlSubtractTimeIntervalExpression, ) -from metricflow.sql.sql_plan import SqlSelectColumn +from metricflow.semantics.sql.sql_plan import SqlSelectColumn class BigQuerySqlExpressionRenderer(DefaultSqlExpressionRenderer): diff --git a/metricflow/sql/render/databricks.py b/metricflow/semantics/sql/render/databricks.py similarity index 92% rename from metricflow/sql/render/databricks.py rename to metricflow/semantics/sql/render/databricks.py index 5a44de1e8b..eab27a51ee 100644 --- a/metricflow/sql/render/databricks.py +++ b/metricflow/semantics/sql/render/databricks.py @@ -7,13 +7,13 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.sql.render.expr_renderer import ( +from metricflow.semantics.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_exprs import SqlPercentileExpression, SqlPercentileFunctionType +from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.semantics.sql.sql_exprs import SqlPercentileExpression, SqlPercentileFunctionType class DatabricksSqlExpressionRenderer(DefaultSqlExpressionRenderer): diff --git a/metricflow/sql/render/duckdb_renderer.py b/metricflow/semantics/sql/render/duckdb_renderer.py similarity index 92% rename from metricflow/sql/render/duckdb_renderer.py rename to metricflow/semantics/sql/render/duckdb_renderer.py index 451fb05398..0ba1d9bbb0 100644 --- a/metricflow/sql/render/duckdb_renderer.py +++ b/metricflow/semantics/sql/render/duckdb_renderer.py @@ -6,14 +6,14 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.sql.render.expr_renderer import ( +from metricflow.semantics.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_exprs import ( SqlGenerateUuidExpression, SqlPercentileExpression, SqlPercentileFunctionType, diff --git a/metricflow/sql/render/expr_renderer.py b/metricflow/semantics/sql/render/expr_renderer.py similarity index 98% rename from metricflow/sql/render/expr_renderer.py rename to metricflow/semantics/sql/render/expr_renderer.py index 96661841ac..1236d2100b 100644 --- a/metricflow/sql/render/expr_renderer.py +++ b/metricflow/semantics/sql/render/expr_renderer.py @@ -13,9 +13,9 @@ from typing_extensions import override from metricflow.mf_logging.formatting import indent -from metricflow.sql.render.rendering_constants import SqlRenderingConstants -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.render.rendering_constants import SqlRenderingConstants +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlBetweenExpression, SqlCastToTimestampExpression, @@ -39,7 +39,7 @@ SqlSubtractTimeIntervalExpression, SqlWindowFunctionExpression, ) -from metricflow.sql.sql_plan import SqlSelectColumn +from metricflow.semantics.sql.sql_plan import SqlSelectColumn logger = logging.getLogger(__name__) diff --git a/metricflow/sql/render/postgres.py b/metricflow/semantics/sql/render/postgres.py similarity index 93% rename from metricflow/sql/render/postgres.py rename to metricflow/semantics/sql/render/postgres.py index cce02295b4..31ba8c02d2 100644 --- a/metricflow/sql/render/postgres.py +++ b/metricflow/semantics/sql/render/postgres.py @@ -7,14 +7,14 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.sql.render.expr_renderer import ( +from metricflow.semantics.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_exprs import ( SqlGenerateUuidExpression, SqlPercentileExpression, SqlPercentileFunctionType, diff --git a/metricflow/sql/render/redshift.py b/metricflow/semantics/sql/render/redshift.py similarity index 94% rename from metricflow/sql/render/redshift.py rename to metricflow/semantics/sql/render/redshift.py index e971bc2b1f..ebbb63bbd0 100644 --- a/metricflow/sql/render/redshift.py +++ b/metricflow/semantics/sql/render/redshift.py @@ -7,14 +7,14 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.sql.render.expr_renderer import ( +from metricflow.semantics.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_exprs import ( SqlExtractExpression, SqlGenerateUuidExpression, SqlPercentileExpression, diff --git a/metricflow/sql/render/rendering_constants.py b/metricflow/semantics/sql/render/rendering_constants.py similarity index 100% rename from metricflow/sql/render/rendering_constants.py rename to metricflow/semantics/sql/render/rendering_constants.py diff --git a/metricflow/sql/render/snowflake.py b/metricflow/semantics/sql/render/snowflake.py similarity index 89% rename from metricflow/sql/render/snowflake.py rename to metricflow/semantics/sql/render/snowflake.py index e0cf08c93e..9dfba14be4 100644 --- a/metricflow/sql/render/snowflake.py +++ b/metricflow/semantics/sql/render/snowflake.py @@ -7,14 +7,18 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.sql.render.expr_renderer import ( +from metricflow.semantics.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_exprs import SqlGenerateUuidExpression, SqlPercentileExpression, SqlPercentileFunctionType +from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_exprs import ( + SqlGenerateUuidExpression, + SqlPercentileExpression, + SqlPercentileFunctionType, +) class SnowflakeSqlExpressionRenderer(DefaultSqlExpressionRenderer): diff --git a/metricflow/sql/render/sql_plan_renderer.py b/metricflow/semantics/sql/render/sql_plan_renderer.py similarity index 97% rename from metricflow/sql/render/sql_plan_renderer.py rename to metricflow/semantics/sql/render/sql_plan_renderer.py index fcfbfe40b3..1e80922b7e 100644 --- a/metricflow/sql/render/sql_plan_renderer.py +++ b/metricflow/semantics/sql/render/sql_plan_renderer.py @@ -8,14 +8,14 @@ from typing import List, Optional, Sequence, Tuple from metricflow.mf_logging.formatting import indent -from metricflow.sql.render.expr_renderer import ( +from metricflow.semantics.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.sql.render.rendering_constants import SqlRenderingConstants -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.render.rendering_constants import SqlRenderingConstants +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlQueryPlan, diff --git a/metricflow/sql/render/trino.py b/metricflow/semantics/sql/render/trino.py similarity index 94% rename from metricflow/sql/render/trino.py rename to metricflow/semantics/sql/render/trino.py index b767240f21..1876084ec7 100644 --- a/metricflow/sql/render/trino.py +++ b/metricflow/semantics/sql/render/trino.py @@ -8,14 +8,14 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.sql.render.expr_renderer import ( +from metricflow.semantics.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_exprs import ( SqlBetweenExpression, SqlGenerateUuidExpression, SqlPercentileExpression, diff --git a/metricflow/sql/sql_bind_parameters.py b/metricflow/semantics/sql/sql_bind_parameters.py similarity index 98% rename from metricflow/sql/sql_bind_parameters.py rename to metricflow/semantics/sql/sql_bind_parameters.py index 9bd39c9788..3b090f79b9 100644 --- a/metricflow/sql/sql_bind_parameters.py +++ b/metricflow/semantics/sql/sql_bind_parameters.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass from metricflow.assert_one_arg import assert_exactly_one_arg_set -from metricflow.sql.sql_column_type import SqlColumnType +from metricflow.semantics.sql.sql_column_type import SqlColumnType @dataclass(frozen=True) diff --git a/metricflow/sql/sql_column.py b/metricflow/semantics/sql/sql_column.py similarity index 96% rename from metricflow/sql/sql_column.py rename to metricflow/semantics/sql/sql_column.py index 673ce764fc..9cd63b434a 100644 --- a/metricflow/sql/sql_column.py +++ b/metricflow/semantics/sql/sql_column.py @@ -3,7 +3,7 @@ from dataclasses import dataclass from typing import Optional -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable @dataclass(frozen=True, order=True) diff --git a/metricflow/sql/sql_column_type.py b/metricflow/semantics/sql/sql_column_type.py similarity index 100% rename from metricflow/sql/sql_column_type.py rename to metricflow/semantics/sql/sql_column_type.py diff --git a/metricflow/sql/sql_exprs.py b/metricflow/semantics/sql/sql_exprs.py similarity index 99% rename from metricflow/sql/sql_exprs.py rename to metricflow/semantics/sql/sql_exprs.py index 8c5368155d..529b8d623e 100644 --- a/metricflow/sql/sql_exprs.py +++ b/metricflow/semantics/sql/sql_exprs.py @@ -17,7 +17,7 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagNode, DisplayedProperty, NodeId -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.visitor import Visitable, VisitorOutputT diff --git a/metricflow/sql/sql_plan.py b/metricflow/semantics/sql/sql_plan.py similarity index 98% rename from metricflow/sql/sql_plan.py rename to metricflow/semantics/sql/sql_plan.py index d00a616d1d..f7965b63c9 100644 --- a/metricflow/sql/sql_plan.py +++ b/metricflow/semantics/sql/sql_plan.py @@ -12,8 +12,8 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId -from metricflow.sql.sql_exprs import SqlExpressionNode -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_exprs import SqlExpressionNode +from metricflow.semantics.sql.sql_table import SqlTable from metricflow.visitor import VisitorOutputT logger = logging.getLogger(__name__) diff --git a/metricflow/sql/sql_table.py b/metricflow/semantics/sql/sql_table.py similarity index 100% rename from metricflow/sql/sql_table.py rename to metricflow/semantics/sql/sql_table.py diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index 43041e4d71..c1a766a1be 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -23,9 +23,14 @@ LinklessEntitySpec, MeasureSpec, ) -from metricflow.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression -from metricflow.sql.sql_plan import SqlJoinType, SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression +from metricflow.semantics.sql.sql_plan import ( + SqlJoinType, + SqlSelectColumn, + SqlSelectStatementNode, + SqlTableFromClauseNode, +) +from metricflow.semantics.sql.sql_table import SqlTable from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_spec_set_snapshot_equal diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index c993a1cad7..e0143bf938 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -27,7 +27,7 @@ LinklessEntitySpec, TimeDimensionSpec, ) -from metricflow.sql.sql_plan import SqlJoinType +from metricflow.semantics.sql.sql_plan import SqlJoinType from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup logger = logging.getLogger(__name__) diff --git a/tests/dataflow/test_sql_column.py b/tests/dataflow/test_sql_column.py index dbe560ef0d..0faa2d0263 100644 --- a/tests/dataflow/test_sql_column.py +++ b/tests/dataflow/test_sql_column.py @@ -1,7 +1,7 @@ from __future__ import annotations -from metricflow.sql.sql_column import SqlColumn -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_table import SqlTable def test_sql_column() -> None: # noqa: D103 diff --git a/tests/dataflow/test_sql_table.py b/tests/dataflow/test_sql_table.py index c0b1f61ebc..364b83a739 100644 --- a/tests/dataflow/test_sql_table.py +++ b/tests/dataflow/test_sql_table.py @@ -2,7 +2,7 @@ import pytest -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable def test_sql_table() -> None: # noqa: D103 diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index d9f9ed2afd..f1e974379a 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -17,8 +17,8 @@ from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec -from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel -from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer +from metricflow.semantics.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel +from metricflow.semantics.sql.render.sql_plan_renderer import SqlQueryPlanRenderer logger = logging.getLogger(__name__) diff --git a/tests/execution/test_tasks.py b/tests/execution/test_tasks.py index f4de0f199c..7b26e2cf8c 100644 --- a/tests/execution/test_tasks.py +++ b/tests/execution/test_tasks.py @@ -11,8 +11,8 @@ from metricflow.random_id import random_id from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/fixtures/sql_clients/adapter_backed_ddl_client.py b/tests/fixtures/sql_clients/adapter_backed_ddl_client.py index 9bf7e322c0..6687cac1d8 100644 --- a/tests/fixtures/sql_clients/adapter_backed_ddl_client.py +++ b/tests/fixtures/sql_clients/adapter_backed_ddl_client.py @@ -8,7 +8,7 @@ from dbt_metricflow.cli.dbt_connectors.adapter_backed_client import AdapterBackedSqlClient from metricflow.semantics.protocols.sql_client import SqlEngine -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/tests/fixtures/sql_clients/base_sql_client_implementation.py b/tests/fixtures/sql_clients/base_sql_client_implementation.py index a173c3f839..79b7e7e28c 100644 --- a/tests/fixtures/sql_clients/base_sql_client_implementation.py +++ b/tests/fixtures/sql_clients/base_sql_client_implementation.py @@ -13,8 +13,8 @@ from metricflow.semantics.protocols.sql_client import ( SqlClient, ) -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_table import SqlTable from metricflow.sql_request.sql_request_attributes import SqlRequestId logger = logging.getLogger(__name__) diff --git a/tests/fixtures/sql_clients/ddl_sql_client.py b/tests/fixtures/sql_clients/ddl_sql_client.py index da3570bd06..9cec591cfc 100644 --- a/tests/fixtures/sql_clients/ddl_sql_client.py +++ b/tests/fixtures/sql_clients/ddl_sql_client.py @@ -6,7 +6,7 @@ from pandas import DataFrame from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable class SqlClientWithDDLMethods(SqlClient, Protocol): diff --git a/tests/fixtures/sql_clients/sqlalchemy_dialect.py b/tests/fixtures/sql_clients/sqlalchemy_dialect.py index 885d5726c7..cd60cd79a3 100644 --- a/tests/fixtures/sql_clients/sqlalchemy_dialect.py +++ b/tests/fixtures/sql_clients/sqlalchemy_dialect.py @@ -9,8 +9,8 @@ import pandas as pd import sqlalchemy -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_table import SqlTable from tests.fixtures.sql_clients.base_sql_client_implementation import BaseSqlClientImplementation logger = logging.getLogger(__name__) diff --git a/tests/fixtures/sql_fixtures.py b/tests/fixtures/sql_fixtures.py index 91f2d4c1be..7e20f32413 100644 --- a/tests/fixtures/sql_fixtures.py +++ b/tests/fixtures/sql_fixtures.py @@ -5,7 +5,7 @@ import pytest from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer +from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/inference/context/test_data_warehouse.py b/tests/inference/context/test_data_warehouse.py index b481bfd213..7b13a0b534 100644 --- a/tests/inference/context/test_data_warehouse.py +++ b/tests/inference/context/test_data_warehouse.py @@ -6,8 +6,8 @@ InferenceColumnType, TableProperties, ) -from metricflow.sql.sql_column import SqlColumn -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_table import SqlTable def test_column_properties_is_empty() -> None: diff --git a/tests/inference/context/test_snowflake.py b/tests/inference/context/test_snowflake.py index a07264e349..c0f7be9e47 100644 --- a/tests/inference/context/test_snowflake.py +++ b/tests/inference/context/test_snowflake.py @@ -12,8 +12,8 @@ TableProperties, ) from metricflow.inference.context.snowflake import SnowflakeInferenceContextProvider -from metricflow.sql.sql_column import SqlColumn -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_table import SqlTable def test_column_type_conversion() -> None: # noqa: D103 diff --git a/tests/inference/renderer/test_config_file.py b/tests/inference/renderer/test_config_file.py index ee44840244..849504cc78 100644 --- a/tests/inference/renderer/test_config_file.py +++ b/tests/inference/renderer/test_config_file.py @@ -10,7 +10,7 @@ from metricflow.inference.models import InferenceResult, InferenceSignalType from metricflow.inference.renderer.config_file import ConfigFileRenderer -from metricflow.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_column import SqlColumn yaml = YAML() diff --git a/tests/inference/rule/conftest.py b/tests/inference/rule/conftest.py index 2f2da5cb96..c08fbf1cc5 100644 --- a/tests/inference/rule/conftest.py +++ b/tests/inference/rule/conftest.py @@ -8,8 +8,8 @@ InferenceColumnType, TableProperties, ) -from metricflow.sql.sql_column import SqlColumn -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_table import SqlTable @pytest.fixture diff --git a/tests/inference/rule/test_defaults.py b/tests/inference/rule/test_defaults.py index cdcc0357fe..e5c3aacec4 100644 --- a/tests/inference/rule/test_defaults.py +++ b/tests/inference/rule/test_defaults.py @@ -8,8 +8,8 @@ TableProperties, ) from metricflow.inference.models import InferenceSignalType -from metricflow.sql.sql_column import SqlColumn -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_table import SqlTable def get_column_properties(column_str: str, type: InferenceColumnType, unique: bool) -> ColumnProperties: # noqa: D103 diff --git a/tests/inference/rule/test_rules.py b/tests/inference/rule/test_rules.py index ffc479d67b..5331415055 100644 --- a/tests/inference/rule/test_rules.py +++ b/tests/inference/rule/test_rules.py @@ -8,8 +8,8 @@ ) from metricflow.inference.models import InferenceSignalConfidence, InferenceSignalType from metricflow.inference.rule.rules import ColumnMatcherRule, LowCardinalityRatioRule -from metricflow.sql.sql_column import SqlColumn -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_table import SqlTable def create_context_with_counts(rows: int, distinct: int, nulls: int) -> DataWarehouseInferenceContext: diff --git a/tests/inference/solver/test_weighted_tree.py b/tests/inference/solver/test_weighted_tree.py index 89ce225354..a9fece30a9 100644 --- a/tests/inference/solver/test_weighted_tree.py +++ b/tests/inference/solver/test_weighted_tree.py @@ -2,7 +2,7 @@ from metricflow.inference.models import InferenceSignal, InferenceSignalConfidence, InferenceSignalType from metricflow.inference.solver.weighted_tree import WeightedTypeTreeInferenceSolver -from metricflow.sql.sql_column import SqlColumn +from metricflow.semantics.sql.sql_column import SqlColumn column = SqlColumn.from_string("db.schema.table.col") solver = WeightedTypeTreeInferenceSolver() diff --git a/tests/integration/test_configured_cases.py b/tests/integration/test_configured_cases.py index b244b610ad..11e5c208f3 100644 --- a/tests/integration/test_configured_cases.py +++ b/tests/integration/test_configured_cases.py @@ -22,7 +22,7 @@ from metricflow.semantics.protocols.query_parameter import DimensionOrEntityQueryParameter from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlColumnReference, SqlColumnReferenceExpression, diff --git a/tests/mf_logging/test_dag_to_text.py b/tests/mf_logging/test_dag_to_text.py index 942589693a..b64112bb41 100644 --- a/tests/mf_logging/test_dag_to_text.py +++ b/tests/mf_logging/test_dag_to_text.py @@ -9,11 +9,16 @@ from metricflow.mf_logging.formatting import indent from metricflow.semantics.dag.dag_to_text import MetricFlowDagTextFormatter from metricflow.semantics.dag.mf_dag import DagId -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.sql_exprs import ( SqlStringExpression, ) -from metricflow.sql.sql_plan import SqlQueryPlan, SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_plan import ( + SqlQueryPlan, + SqlSelectColumn, + SqlSelectStatementNode, + SqlTableFromClauseNode, +) +from metricflow.semantics.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/tests/model/test_data_warehouse_tasks.py b/tests/model/test_data_warehouse_tasks.py index 10cb0653ac..bb952b7db0 100644 --- a/tests/model/test_data_warehouse_tasks.py +++ b/tests/model/test_data_warehouse_tasks.py @@ -21,7 +21,7 @@ DataWarehouseValidationTask, ) from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import ( assert_sql_snapshot_equal, diff --git a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py index 15d0c8f19f..9cd6d246a8 100644 --- a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py +++ b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py @@ -11,7 +11,7 @@ ) from metricflow.semantics.plan_conversion.select_column_gen import SelectColumnSet from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec, MetricInputMeasureSpec -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlFunction, SqlPercentileExpression, diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index 4f1e3a9575..d84df1c3ad 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -16,7 +16,7 @@ MetricSpec, TimeDimensionSpec, ) -from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_execution_plan_text_equal diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index 09bd155aa0..fd8368aa5e 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -47,9 +47,9 @@ TimeDimensionSpec, WhereFilterSpec, ) -from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_plan import SqlJoinType +from metricflow.semantics.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_plan import SqlJoinType from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query_rendering/compare_rendered_query.py b/tests/query_rendering/compare_rendered_query.py index e1fda8e07a..2b58c8c841 100644 --- a/tests/query_rendering/compare_rendered_query.py +++ b/tests/query_rendering/compare_rendered_query.py @@ -8,7 +8,7 @@ from metricflow.semantics.dataflow.dataflow_plan import BaseOutput from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel +from metricflow.semantics.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_rendered_sql_from_plan_equal diff --git a/tests/sql/compare_sql_plan.py b/tests/sql/compare_sql_plan.py index a682945f08..5846fe8dcb 100644 --- a/tests/sql/compare_sql_plan.py +++ b/tests/sql/compare_sql_plan.py @@ -4,8 +4,8 @@ from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_plan import SqlQueryPlan, SqlQueryPlanNode +from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.semantics.sql.sql_plan import SqlQueryPlan, SqlQueryPlanNode from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker from tests.snapshot_utils import ( assert_plan_snapshot_text_equal, diff --git a/tests/sql/optimizer/test_column_pruner.py b/tests/sql/optimizer/test_column_pruner.py index c58b43cae7..1f77aaf5f4 100644 --- a/tests/sql/optimizer/test_column_pruner.py +++ b/tests/sql/optimizer/test_column_pruner.py @@ -3,9 +3,9 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.sql.optimizer.column_pruner import SqlColumnPrunerOptimizer -from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.optimizer.column_pruner import SqlColumnPrunerOptimizer +from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer +from metricflow.semantics.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, SqlComparison, @@ -13,7 +13,7 @@ SqlIsNullExpression, SqlStringExpression, ) -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.sql_plan import ( SqlJoinDescription, SqlJoinType, SqlQueryPlanNode, @@ -21,7 +21,7 @@ SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_default_rendered_sql_equal diff --git a/tests/sql/optimizer/test_rewriting_sub_query_reducer.py b/tests/sql/optimizer/test_rewriting_sub_query_reducer.py index b5c7b08dd0..9952e3fe67 100644 --- a/tests/sql/optimizer/test_rewriting_sub_query_reducer.py +++ b/tests/sql/optimizer/test_rewriting_sub_query_reducer.py @@ -3,8 +3,8 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.sql.optimizer.rewriting_sub_query_reducer import SqlRewritingSubQueryReducer -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.optimizer.rewriting_sub_query_reducer import SqlRewritingSubQueryReducer +from metricflow.semantics.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, SqlColumnReferenceExpression, @@ -14,7 +14,7 @@ SqlStringExpression, SqlStringLiteralExpression, ) -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.sql_plan import ( SqlJoinDescription, SqlJoinType, SqlOrderByDescription, @@ -22,7 +22,7 @@ SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_default_rendered_sql_equal diff --git a/tests/sql/optimizer/test_sub_query_reducer.py b/tests/sql/optimizer/test_sub_query_reducer.py index 366193c2ff..e42c919e2a 100644 --- a/tests/sql/optimizer/test_sub_query_reducer.py +++ b/tests/sql/optimizer/test_sub_query_reducer.py @@ -3,14 +3,14 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.sql.optimizer.sub_query_reducer import SqlSubQueryReducer -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.optimizer.sub_query_reducer import SqlSubQueryReducer +from metricflow.semantics.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, SqlComparison, SqlComparisonExpression, ) -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.sql_plan import ( SqlJoinDescription, SqlJoinType, SqlOrderByDescription, @@ -18,7 +18,7 @@ SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_default_rendered_sql_equal diff --git a/tests/sql/optimizer/test_table_alias_simplifier.py b/tests/sql/optimizer/test_table_alias_simplifier.py index 737a61cb5a..d105301034 100644 --- a/tests/sql/optimizer/test_table_alias_simplifier.py +++ b/tests/sql/optimizer/test_table_alias_simplifier.py @@ -3,22 +3,22 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.sql.optimizer.table_alias_simplifier import SqlTableAliasSimplifier -from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.optimizer.table_alias_simplifier import SqlTableAliasSimplifier +from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer +from metricflow.semantics.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, SqlComparison, SqlComparisonExpression, ) -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.sql_plan import ( SqlJoinDescription, SqlJoinType, SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_default_rendered_sql_equal diff --git a/tests/sql/test_bind_parameter_serialization.py b/tests/sql/test_bind_parameter_serialization.py index 9d0c4d9a81..ea45dc243e 100644 --- a/tests/sql/test_bind_parameter_serialization.py +++ b/tests/sql/test_bind_parameter_serialization.py @@ -3,7 +3,7 @@ import pytest from dbt_semantic_interfaces.dataclass_serialization import DataClassDeserializer, DataclassSerializer -from metricflow.sql.sql_bind_parameters import SqlBindParameter, SqlBindParameters, SqlBindParameterValue +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameter, SqlBindParameters, SqlBindParameterValue @pytest.fixture diff --git a/tests/sql/test_engine_specific_rendering.py b/tests/sql/test_engine_specific_rendering.py index 246d0a09f8..1e7fc9bf5f 100644 --- a/tests/sql/test_engine_specific_rendering.py +++ b/tests/sql/test_engine_specific_rendering.py @@ -6,7 +6,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlColumnReference, SqlColumnReferenceExpression, @@ -16,14 +16,14 @@ SqlPercentileFunctionType, SqlStringLiteralExpression, ) -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.sql_plan import ( SqlJoinDescription, SqlOrderByDescription, SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_rendered_sql_equal diff --git a/tests/sql/test_sql_expr_render.py b/tests/sql/test_sql_expr_render.py index 7dabd7736a..4296b0c6b7 100644 --- a/tests/sql/test_sql_expr_render.py +++ b/tests/sql/test_sql_expr_render.py @@ -9,8 +9,8 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.sql.render.expr_renderer import DefaultSqlExpressionRenderer -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.render.expr_renderer import DefaultSqlExpressionRenderer +from metricflow.semantics.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlBetweenExpression, SqlCastToTimestampExpression, diff --git a/tests/sql/test_sql_plan_render.py b/tests/sql/test_sql_plan_render.py index 52455b1219..a6c6762f68 100644 --- a/tests/sql/test_sql_plan_render.py +++ b/tests/sql/test_sql_plan_render.py @@ -7,7 +7,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, SqlColumnReferenceExpression, @@ -16,7 +16,7 @@ SqlFunction, SqlStringExpression, ) -from metricflow.sql.sql_plan import ( +from metricflow.semantics.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlJoinType, @@ -25,7 +25,7 @@ SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.sql.sql_table import SqlTable, SqlTableType +from metricflow.semantics.sql.sql_table import SqlTable, SqlTableType from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_rendered_sql_equal diff --git a/tests/sql_clients/test_date_time_operations.py b/tests/sql_clients/test_date_time_operations.py index c56b20ec11..de441c5cc7 100644 --- a/tests/sql_clients/test_date_time_operations.py +++ b/tests/sql_clients/test_date_time_operations.py @@ -24,7 +24,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.sql.sql_exprs import ( +from metricflow.semantics.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlDateTruncExpression, SqlExtractExpression, diff --git a/tests/sql_clients/test_sql_client.py b/tests/sql_clients/test_sql_client.py index 397cf0750c..c920fb120f 100644 --- a/tests/sql_clients/test_sql_client.py +++ b/tests/sql_clients/test_sql_client.py @@ -8,8 +8,8 @@ from metricflow.random_id import random_id from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine -from metricflow.sql.sql_bind_parameters import SqlBindParameters -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods diff --git a/tests/table_snapshot/table_snapshots.py b/tests/table_snapshot/table_snapshots.py index 7d6d208d9e..77e86f9e1e 100644 --- a/tests/table_snapshot/table_snapshots.py +++ b/tests/table_snapshot/table_snapshots.py @@ -16,7 +16,7 @@ from dbt_semantic_interfaces.implementations.base import FrozenBaseModel from metricflow.semantics.specs.spec_classes import hash_items -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods logger = logging.getLogger(__name__) diff --git a/tests/table_snapshot/test_source_schema.py b/tests/table_snapshot/test_source_schema.py index 68f38c1d08..151fa0ca3d 100644 --- a/tests/table_snapshot/test_source_schema.py +++ b/tests/table_snapshot/test_source_schema.py @@ -6,7 +6,7 @@ import pytest from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine -from metricflow.sql.sql_table import SqlTable +from metricflow.semantics.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.table_fixtures import CONFIGURED_SOURCE_TABLE_SNAPSHOT_REPOSITORY From 246b3b055eefb3506514efbfbe538b207db38049 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 16:08:21 -0700 Subject: [PATCH 24/80] Move time. --- metricflow/engine/metricflow_engine.py | 2 +- metricflow/engine/time_source.py | 2 +- metricflow/semantics/filters/time_constraint.py | 2 +- metricflow/semantics/plan_conversion/dataflow_to_sql.py | 2 +- metricflow/semantics/query/query_parser.py | 2 +- metricflow/{ => semantics}/time/__init__.py | 0 metricflow/{ => semantics}/time/time_constants.py | 0 metricflow/{ => semantics}/time/time_granularity.py | 0 metricflow/{ => semantics}/time/time_source.py | 0 metricflow/test_helpers.py | 3 +-- tests/plan_conversion/test_time_spine.py | 2 +- tests/sql_clients/test_date_time_operations.py | 2 +- 12 files changed, 8 insertions(+), 9 deletions(-) rename metricflow/{ => semantics}/time/__init__.py (100%) rename metricflow/{ => semantics}/time/time_constants.py (100%) rename metricflow/{ => semantics}/time/time_granularity.py (100%) rename metricflow/{ => semantics}/time/time_source.py (100%) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index d05f818f1e..48345f9b12 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -55,9 +55,9 @@ from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec from metricflow.semantics.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.semantics.time.time_source import TimeSource from metricflow.telemetry.models import TelemetryLevel from metricflow.telemetry.reporter import TelemetryReporter, log_call -from metricflow.time.time_source import TimeSource logger = logging.getLogger(__name__) _telemetry_reporter = TelemetryReporter(report_levels_higher_or_equal_to=TelemetryLevel.USAGE) diff --git a/metricflow/engine/time_source.py b/metricflow/engine/time_source.py index 7b021f2736..076098079a 100644 --- a/metricflow/engine/time_source.py +++ b/metricflow/engine/time_source.py @@ -2,7 +2,7 @@ import datetime as dt -from metricflow.time.time_source import TimeSource +from metricflow.semantics.time.time_source import TimeSource class ServerTimeSource(TimeSource): diff --git a/metricflow/semantics/filters/time_constraint.py b/metricflow/semantics/filters/time_constraint.py index b7a00ef6cb..00e5244816 100644 --- a/metricflow/semantics/filters/time_constraint.py +++ b/metricflow/semantics/filters/time_constraint.py @@ -9,7 +9,7 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.time.time_granularity import offset_period +from metricflow.semantics.time.time_granularity import offset_period logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/plan_conversion/dataflow_to_sql.py b/metricflow/semantics/plan_conversion/dataflow_to_sql.py index deb07945ee..00c12cfc84 100644 --- a/metricflow/semantics/plan_conversion/dataflow_to_sql.py +++ b/metricflow/semantics/plan_conversion/dataflow_to_sql.py @@ -137,7 +137,7 @@ SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.time.time_constants import ISO8601_PYTHON_FORMAT +from metricflow.semantics.time.time_constants import ISO8601_PYTHON_FORMAT logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/query/query_parser.py b/metricflow/semantics/query/query_parser.py index 2483f63805..94830a2898 100644 --- a/metricflow/semantics/query/query_parser.py +++ b/metricflow/semantics/query/query_parser.py @@ -60,7 +60,7 @@ MetricFlowQuerySpec, TimeDimensionSpec, ) -from metricflow.time.time_granularity import ( +from metricflow.semantics.time.time_granularity import ( adjust_to_end_of_period, adjust_to_start_of_period, is_period_end, diff --git a/metricflow/time/__init__.py b/metricflow/semantics/time/__init__.py similarity index 100% rename from metricflow/time/__init__.py rename to metricflow/semantics/time/__init__.py diff --git a/metricflow/time/time_constants.py b/metricflow/semantics/time/time_constants.py similarity index 100% rename from metricflow/time/time_constants.py rename to metricflow/semantics/time/time_constants.py diff --git a/metricflow/time/time_granularity.py b/metricflow/semantics/time/time_granularity.py similarity index 100% rename from metricflow/time/time_granularity.py rename to metricflow/semantics/time/time_granularity.py diff --git a/metricflow/time/time_source.py b/metricflow/semantics/time/time_source.py similarity index 100% rename from metricflow/time/time_source.py rename to metricflow/semantics/time/time_source.py diff --git a/metricflow/test_helpers.py b/metricflow/test_helpers.py index fd0386c392..8aead38a48 100644 --- a/metricflow/test_helpers.py +++ b/metricflow/test_helpers.py @@ -9,10 +9,9 @@ from dataclasses import dataclass from typing import Callable, List, Optional, Tuple -import _pytest import _pytest.fixtures -from metricflow.time.time_source import TimeSource +from metricflow.semantics.time.time_source import TimeSource logger = logging.getLogger(__name__) diff --git a/tests/plan_conversion/test_time_spine.py b/tests/plan_conversion/test_time_spine.py index 34e56faa96..a3a02aa072 100644 --- a/tests/plan_conversion/test_time_spine.py +++ b/tests/plan_conversion/test_time_spine.py @@ -5,7 +5,7 @@ from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.time.time_constants import ISO8601_PYTHON_TS_FORMAT +from metricflow.semantics.time.time_constants import ISO8601_PYTHON_TS_FORMAT def test_date_spine_date_range( # noqa: D103 diff --git a/tests/sql_clients/test_date_time_operations.py b/tests/sql_clients/test_date_time_operations.py index de441c5cc7..e8954fc21b 100644 --- a/tests/sql_clients/test_date_time_operations.py +++ b/tests/sql_clients/test_date_time_operations.py @@ -30,7 +30,7 @@ SqlExtractExpression, SqlStringLiteralExpression, ) -from metricflow.time.time_granularity import TimeGranularity +from metricflow.semantics.time.time_granularity import TimeGranularity logger = logging.getLogger(__name__) From c7f6a046f516260a8b47f75156e0edddc056dd36 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 16:11:52 -0700 Subject: [PATCH 25/80] Move top level. --- .../cli/dbt_connectors/adapter_backed_client.py | 2 +- metricflow/engine/metricflow_engine.py | 2 +- metricflow/execution/execution_plan.py | 2 +- metricflow/{ => semantics}/aggregation_properties.py | 0 metricflow/{ => semantics}/assert_one_arg.py | 0 metricflow/semantics/dag/dag_visualization.py | 2 +- metricflow/semantics/dag/mf_dag.py | 2 +- metricflow/semantics/dataflow/builder/node_evaluator.py | 2 +- metricflow/semantics/dataflow/dataflow_plan.py | 2 +- metricflow/semantics/dataflow/nodes/add_generated_uuid.py | 2 +- metricflow/semantics/dataflow/nodes/aggregate_measures.py | 2 +- .../semantics/dataflow/nodes/combine_aggregated_outputs.py | 2 +- metricflow/semantics/dataflow/nodes/compute_metrics.py | 2 +- metricflow/semantics/dataflow/nodes/constrain_time.py | 2 +- metricflow/semantics/dataflow/nodes/filter_elements.py | 2 +- .../semantics/dataflow/nodes/join_conversion_events.py | 2 +- metricflow/semantics/dataflow/nodes/join_over_time.py | 2 +- metricflow/semantics/dataflow/nodes/join_to_base.py | 2 +- metricflow/semantics/dataflow/nodes/join_to_time_spine.py | 2 +- .../semantics/dataflow/nodes/metric_time_transform.py | 2 +- metricflow/semantics/dataflow/nodes/min_max.py | 2 +- metricflow/semantics/dataflow/nodes/order_by_limit.py | 2 +- metricflow/semantics/dataflow/nodes/read_sql_source.py | 2 +- metricflow/semantics/dataflow/nodes/semi_additive_join.py | 2 +- metricflow/semantics/dataflow/nodes/where_filter.py | 2 +- metricflow/semantics/dataflow/nodes/write_to_dataframe.py | 2 +- metricflow/semantics/dataflow/nodes/write_to_table.py | 2 +- metricflow/semantics/dataset/convert_semantic_model.py | 4 ++-- metricflow/semantics/dataset/dataset_classes.py | 2 +- metricflow/semantics/dataset/semantic_model_adapter.py | 2 +- metricflow/semantics/dataset/sql_dataset.py | 4 ++-- metricflow/{ => semantics}/instances.py | 2 +- .../model/semantics/semantic_model_join_evaluator.py | 2 +- metricflow/semantics/plan_conversion/convert_to_sql_plan.py | 2 +- metricflow/semantics/plan_conversion/dataflow_to_sql.py | 4 ++-- metricflow/semantics/plan_conversion/instance_converters.py | 6 +++--- metricflow/semantics/plan_conversion/sql_join_builder.py | 2 +- .../resolution_dag/resolution_nodes/base_node.py | 2 +- .../resolution_dag/resolution_nodes/measure_source_node.py | 2 +- .../resolution_nodes/metric_resolution_node.py | 2 +- .../resolution_nodes/no_metrics_query_source_node.py | 2 +- .../resolution_nodes/query_resolution_node.py | 2 +- metricflow/semantics/query/query_parser.py | 2 +- metricflow/{ => semantics}/random_id.py | 0 metricflow/semantics/specs/spec_classes.py | 4 ++-- metricflow/semantics/sql/sql_bind_parameters.py | 2 +- metricflow/semantics/sql/sql_exprs.py | 2 +- metricflow/semantics/sql/sql_plan.py | 2 +- metricflow/{ => semantics}/test_helpers.py | 0 metricflow/{ => semantics}/visitor.py | 0 metricflow/telemetry/reporter.py | 2 +- tests/dataflow/builder/test_node_data_set.py | 4 ++-- tests/dataflow_plan_to_svg.py | 2 +- tests/execution/test_tasks.py | 2 +- tests/fixtures/cli_fixtures.py | 2 +- tests/fixtures/manifest_fixtures.py | 2 +- tests/fixtures/setup_fixtures.py | 4 ++-- .../fixtures/sql_clients/base_sql_client_implementation.py | 2 +- tests/integration/conftest.py | 2 +- tests/integration/test_configured_cases.py | 2 +- tests/integration/test_rendered_query.py | 2 +- .../test_create_select_columns_with_measures_aggregated.py | 2 +- .../test_create_validity_window_join_description.py | 2 +- tests/snapshot_utils.py | 2 +- tests/sql_clients/test_sql_client.py | 2 +- tests/table_snapshot/test_table_snapshots.py | 2 +- tests/test_instance_serialization.py | 2 +- 67 files changed, 70 insertions(+), 70 deletions(-) rename metricflow/{ => semantics}/aggregation_properties.py (100%) rename metricflow/{ => semantics}/assert_one_arg.py (100%) rename metricflow/{ => semantics}/instances.py (99%) rename metricflow/{ => semantics}/random_id.py (100%) rename metricflow/{ => semantics}/test_helpers.py (100%) rename metricflow/{ => semantics}/visitor.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py index 51bd6bc735..795868b01f 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py @@ -11,7 +11,7 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.random_id import random_id +from metricflow.semantics.random_id import random_id from metricflow.semantics.errors.error_classes import SqlBindParametersNotSupportedError from metricflow.semantics.protocols.sql_client import SqlEngine from metricflow.semantics.sql.render.big_query import BigQuerySqlQueryPlanRenderer diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 48345f9b12..2e464b511a 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -23,7 +23,7 @@ from metricflow.execution.executor import SequentialPlanExecutor from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.random_id import random_id +from metricflow.semantics.random_id import random_id from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver diff --git a/metricflow/execution/execution_plan.py b/metricflow/execution/execution_plan.py index 4f988be499..a5192b6a1e 100644 --- a/metricflow/execution/execution_plan.py +++ b/metricflow/execution/execution_plan.py @@ -13,7 +13,7 @@ from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.semantics.sql.sql_table import SqlTable -from metricflow.visitor import Visitable +from metricflow.semantics.visitor import Visitable logger = logging.getLogger(__name__) diff --git a/metricflow/aggregation_properties.py b/metricflow/semantics/aggregation_properties.py similarity index 100% rename from metricflow/aggregation_properties.py rename to metricflow/semantics/aggregation_properties.py diff --git a/metricflow/assert_one_arg.py b/metricflow/semantics/assert_one_arg.py similarity index 100% rename from metricflow/assert_one_arg.py rename to metricflow/semantics/assert_one_arg.py diff --git a/metricflow/semantics/dag/dag_visualization.py b/metricflow/semantics/dag/dag_visualization.py index 4d0ced10e2..f122c13fc8 100644 --- a/metricflow/semantics/dag/dag_visualization.py +++ b/metricflow/semantics/dag/dag_visualization.py @@ -6,7 +6,7 @@ import graphviz -from metricflow.random_id import random_id +from metricflow.semantics.random_id import random_id from metricflow.semantics.dag.mf_dag import DagNode, MetricFlowDag logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dag/mf_dag.py b/metricflow/semantics/dag/mf_dag.py index 1482b30c16..2e64a65299 100644 --- a/metricflow/semantics/dag/mf_dag.py +++ b/metricflow/semantics/dag/mf_dag.py @@ -14,7 +14,7 @@ from metricflow.semantics.dag.dag_to_text import MetricFlowDagTextFormatter from metricflow.semantics.dag.id_prefix import IdPrefix from metricflow.semantics.dag.sequential_id import SequentialIdGenerator -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dataflow/builder/node_evaluator.py b/metricflow/semantics/dataflow/builder/node_evaluator.py index 4197b69766..5b19bb9b28 100644 --- a/metricflow/semantics/dataflow/builder/node_evaluator.py +++ b/metricflow/semantics/dataflow/builder/node_evaluator.py @@ -23,7 +23,7 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.instances import InstanceSet +from metricflow.semantics.instances import InstanceSet from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.partitions import ( diff --git a/metricflow/semantics/dataflow/dataflow_plan.py b/metricflow/semantics/dataflow/dataflow_plan.py index 4f538ce038..12daa311ea 100644 --- a/metricflow/semantics/dataflow/dataflow_plan.py +++ b/metricflow/semantics/dataflow/dataflow_plan.py @@ -9,7 +9,7 @@ from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId, DagNode, MetricFlowDag, NodeId -from metricflow.visitor import Visitable, VisitorOutputT +from metricflow.semantics.visitor import Visitable, VisitorOutputT if typing.TYPE_CHECKING: from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode diff --git a/metricflow/semantics/dataflow/nodes/add_generated_uuid.py b/metricflow/semantics/dataflow/nodes/add_generated_uuid.py index beb914c4e0..20c1ccee46 100644 --- a/metricflow/semantics/dataflow/nodes/add_generated_uuid.py +++ b/metricflow/semantics/dataflow/nodes/add_generated_uuid.py @@ -5,7 +5,7 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class AddGeneratedUuidColumnNode(BaseOutput): diff --git a/metricflow/semantics/dataflow/nodes/aggregate_measures.py b/metricflow/semantics/dataflow/nodes/aggregate_measures.py index 29b7ac0882..f003f5483e 100644 --- a/metricflow/semantics/dataflow/nodes/aggregate_measures.py +++ b/metricflow/semantics/dataflow/nodes/aggregate_measures.py @@ -6,7 +6,7 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import MetricInputMeasureSpec -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class AggregatedMeasuresOutput(BaseOutput, ABC): diff --git a/metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py b/metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py index 545e4584c4..af47b10564 100644 --- a/metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py +++ b/metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py @@ -9,7 +9,7 @@ DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class CombineAggregatedOutputsNode(ComputedMetricsOutput): diff --git a/metricflow/semantics/dataflow/nodes/compute_metrics.py b/metricflow/semantics/dataflow/nodes/compute_metrics.py index 6476f20bd0..2d2ea052b4 100644 --- a/metricflow/semantics/dataflow/nodes/compute_metrics.py +++ b/metricflow/semantics/dataflow/nodes/compute_metrics.py @@ -11,7 +11,7 @@ DataflowPlanNodeVisitor, ) from metricflow.semantics.specs.spec_classes import MetricSpec -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class ComputeMetricsNode(ComputedMetricsOutput): diff --git a/metricflow/semantics/dataflow/nodes/constrain_time.py b/metricflow/semantics/dataflow/nodes/constrain_time.py index de875e62e5..5570ce1120 100644 --- a/metricflow/semantics/dataflow/nodes/constrain_time.py +++ b/metricflow/semantics/dataflow/nodes/constrain_time.py @@ -7,7 +7,7 @@ from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class ConstrainTimeRangeNode(AggregatedMeasuresOutput, BaseOutput): diff --git a/metricflow/semantics/dataflow/nodes/filter_elements.py b/metricflow/semantics/dataflow/nodes/filter_elements.py index c7b04480a6..61d8804b8d 100644 --- a/metricflow/semantics/dataflow/nodes/filter_elements.py +++ b/metricflow/semantics/dataflow/nodes/filter_elements.py @@ -7,7 +7,7 @@ from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import InstanceSpecSet -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class FilterElementsNode(BaseOutput): diff --git a/metricflow/semantics/dataflow/nodes/join_conversion_events.py b/metricflow/semantics/dataflow/nodes/join_conversion_events.py index 09ff93e6ff..bdf3354b5f 100644 --- a/metricflow/semantics/dataflow/nodes/join_conversion_events.py +++ b/metricflow/semantics/dataflow/nodes/join_conversion_events.py @@ -14,7 +14,7 @@ MeasureSpec, TimeDimensionSpec, ) -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class JoinConversionEventsNode(BaseOutput): diff --git a/metricflow/semantics/dataflow/nodes/join_over_time.py b/metricflow/semantics/dataflow/nodes/join_over_time.py index 0143efcf2a..b63b639fd7 100644 --- a/metricflow/semantics/dataflow/nodes/join_over_time.py +++ b/metricflow/semantics/dataflow/nodes/join_over_time.py @@ -10,7 +10,7 @@ from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class JoinOverTimeRangeNode(BaseOutput): diff --git a/metricflow/semantics/dataflow/nodes/join_to_base.py b/metricflow/semantics/dataflow/nodes/join_to_base.py index 213ae94794..a90cd795a2 100644 --- a/metricflow/semantics/dataflow/nodes/join_to_base.py +++ b/metricflow/semantics/dataflow/nodes/join_to_base.py @@ -12,7 +12,7 @@ from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec from metricflow.semantics.sql.sql_plan import SqlJoinType -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT @dataclass(frozen=True) diff --git a/metricflow/semantics/dataflow/nodes/join_to_time_spine.py b/metricflow/semantics/dataflow/nodes/join_to_time_spine.py index 4553dd3612..4516df8664 100644 --- a/metricflow/semantics/dataflow/nodes/join_to_time_spine.py +++ b/metricflow/semantics/dataflow/nodes/join_to_time_spine.py @@ -12,7 +12,7 @@ from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from metricflow.semantics.sql.sql_plan import SqlJoinType -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class JoinToTimeSpineNode(BaseOutput, ABC): diff --git a/metricflow/semantics/dataflow/nodes/metric_time_transform.py b/metricflow/semantics/dataflow/nodes/metric_time_transform.py index 2e70227174..4dfc9c316d 100644 --- a/metricflow/semantics/dataflow/nodes/metric_time_transform.py +++ b/metricflow/semantics/dataflow/nodes/metric_time_transform.py @@ -7,7 +7,7 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class MetricTimeDimensionTransformNode(BaseOutput): diff --git a/metricflow/semantics/dataflow/nodes/min_max.py b/metricflow/semantics/dataflow/nodes/min_max.py index e58c4098a7..daee902bed 100644 --- a/metricflow/semantics/dataflow/nodes/min_max.py +++ b/metricflow/semantics/dataflow/nodes/min_max.py @@ -4,7 +4,7 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class MinMaxNode(BaseOutput): diff --git a/metricflow/semantics/dataflow/nodes/order_by_limit.py b/metricflow/semantics/dataflow/nodes/order_by_limit.py index cf4954d849..ab149b1a2f 100644 --- a/metricflow/semantics/dataflow/nodes/order_by_limit.py +++ b/metricflow/semantics/dataflow/nodes/order_by_limit.py @@ -11,7 +11,7 @@ DataflowPlanNodeVisitor, ) from metricflow.semantics.specs.spec_classes import OrderBySpec -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class OrderByLimitNode(ComputedMetricsOutput): diff --git a/metricflow/semantics/dataflow/nodes/read_sql_source.py b/metricflow/semantics/dataflow/nodes/read_sql_source.py index b49fd11078..c7e8cb8917 100644 --- a/metricflow/semantics/dataflow/nodes/read_sql_source.py +++ b/metricflow/semantics/dataflow/nodes/read_sql_source.py @@ -9,7 +9,7 @@ from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dataset.sql_dataset import SqlDataSet -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class ReadSqlSourceNode(BaseOutput): diff --git a/metricflow/semantics/dataflow/nodes/semi_additive_join.py b/metricflow/semantics/dataflow/nodes/semi_additive_join.py index 000b33ff40..6ade6d0bf4 100644 --- a/metricflow/semantics/dataflow/nodes/semi_additive_join.py +++ b/metricflow/semantics/dataflow/nodes/semi_additive_join.py @@ -8,7 +8,7 @@ from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class SemiAdditiveJoinNode(BaseOutput): diff --git a/metricflow/semantics/dataflow/nodes/where_filter.py b/metricflow/semantics/dataflow/nodes/where_filter.py index fa1deaaadb..983d3c5ecf 100644 --- a/metricflow/semantics/dataflow/nodes/where_filter.py +++ b/metricflow/semantics/dataflow/nodes/where_filter.py @@ -7,7 +7,7 @@ from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput from metricflow.semantics.specs.spec_classes import WhereFilterSpec -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class WhereConstraintNode(AggregatedMeasuresOutput): diff --git a/metricflow/semantics/dataflow/nodes/write_to_dataframe.py b/metricflow/semantics/dataflow/nodes/write_to_dataframe.py index 75d60cc100..266a2c4736 100644 --- a/metricflow/semantics/dataflow/nodes/write_to_dataframe.py +++ b/metricflow/semantics/dataflow/nodes/write_to_dataframe.py @@ -10,7 +10,7 @@ SinkNodeVisitor, SinkOutput, ) -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class WriteToResultDataframeNode(SinkOutput): diff --git a/metricflow/semantics/dataflow/nodes/write_to_table.py b/metricflow/semantics/dataflow/nodes/write_to_table.py index 4b4a3ae7a0..5a57bc8c74 100644 --- a/metricflow/semantics/dataflow/nodes/write_to_table.py +++ b/metricflow/semantics/dataflow/nodes/write_to_table.py @@ -11,7 +11,7 @@ SinkOutput, ) from metricflow.semantics.sql.sql_table import SqlTable -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class WriteToResultTableNode(SinkOutput): diff --git a/metricflow/semantics/dataset/convert_semantic_model.py b/metricflow/semantics/dataset/convert_semantic_model.py index 1607da5fd0..a4441c65d8 100644 --- a/metricflow/semantics/dataset/convert_semantic_model.py +++ b/metricflow/semantics/dataset/convert_semantic_model.py @@ -16,8 +16,8 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.aggregation_properties import AggregationState -from metricflow.instances import ( +from metricflow.semantics.aggregation_properties import AggregationState +from metricflow.semantics.instances import ( DimensionInstance, EntityInstance, InstanceSet, diff --git a/metricflow/semantics/dataset/dataset_classes.py b/metricflow/semantics/dataset/dataset_classes.py index b5e71771f0..4adc846cf8 100644 --- a/metricflow/semantics/dataset/dataset_classes.py +++ b/metricflow/semantics/dataset/dataset_classes.py @@ -9,7 +9,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.instances import InstanceSet, TimeDimensionInstance +from metricflow.semantics.instances import InstanceSet, TimeDimensionInstance from metricflow.semantics.specs.spec_classes import TimeDimensionSpec logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dataset/semantic_model_adapter.py b/metricflow/semantics/dataset/semantic_model_adapter.py index 1e28f7c7c7..b0fbf4db2b 100644 --- a/metricflow/semantics/dataset/semantic_model_adapter.py +++ b/metricflow/semantics/dataset/semantic_model_adapter.py @@ -3,7 +3,7 @@ from dbt_semantic_interfaces.references import SemanticModelReference from typing_extensions import override -from metricflow.instances import InstanceSet +from metricflow.semantics.instances import InstanceSet from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.sql.sql_plan import SqlSelectStatementNode diff --git a/metricflow/semantics/dataset/sql_dataset.py b/metricflow/semantics/dataset/sql_dataset.py index dfa0015bf3..7ff156986b 100644 --- a/metricflow/semantics/dataset/sql_dataset.py +++ b/metricflow/semantics/dataset/sql_dataset.py @@ -5,8 +5,8 @@ from dbt_semantic_interfaces.references import SemanticModelReference from typing_extensions import override -from metricflow.assert_one_arg import assert_exactly_one_arg_set -from metricflow.instances import ( +from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set +from metricflow.semantics.instances import ( InstanceSet, ) from metricflow.semantics.dataset.dataset_classes import DataSet diff --git a/metricflow/instances.py b/metricflow/semantics/instances.py similarity index 99% rename from metricflow/instances.py rename to metricflow/semantics/instances.py index 151c07708e..5c4519abd3 100644 --- a/metricflow/instances.py +++ b/metricflow/semantics/instances.py @@ -9,7 +9,7 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass from dbt_semantic_interfaces.references import MetricModelReference, SemanticModelElementReference -from metricflow.aggregation_properties import AggregationState +from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.specs.column_assoc import ColumnAssociation from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py b/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py index 813b8d4d68..251ff29535 100644 --- a/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py +++ b/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py @@ -10,7 +10,7 @@ SemanticModelReference, ) -from metricflow.instances import EntityInstance, InstanceSet +from metricflow.semantics.instances import EntityInstance, InstanceSet from metricflow.mf_logging.pretty_print import mf_pformat if TYPE_CHECKING: diff --git a/metricflow/semantics/plan_conversion/convert_to_sql_plan.py b/metricflow/semantics/plan_conversion/convert_to_sql_plan.py index e7d9873b72..c8e7e2209b 100644 --- a/metricflow/semantics/plan_conversion/convert_to_sql_plan.py +++ b/metricflow/semantics/plan_conversion/convert_to_sql_plan.py @@ -2,7 +2,7 @@ from dataclasses import dataclass -from metricflow.instances import InstanceSet +from metricflow.semantics.instances import InstanceSet from metricflow.semantics.sql.sql_plan import SqlQueryPlan diff --git a/metricflow/semantics/plan_conversion/dataflow_to_sql.py b/metricflow/semantics/plan_conversion/dataflow_to_sql.py index 00c12cfc84..3e04f76560 100644 --- a/metricflow/semantics/plan_conversion/dataflow_to_sql.py +++ b/metricflow/semantics/plan_conversion/dataflow_to_sql.py @@ -12,8 +12,8 @@ from dbt_semantic_interfaces.type_enums.conversion_calculation_type import ConversionCalculationType from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.aggregation_properties import AggregationState -from metricflow.instances import ( +from metricflow.semantics.aggregation_properties import AggregationState +from metricflow.semantics.instances import ( GroupByMetricInstance, InstanceSet, MetadataInstance, diff --git a/metricflow/semantics/plan_conversion/instance_converters.py b/metricflow/semantics/plan_conversion/instance_converters.py index e932abeab1..d9d2b8b9d7 100644 --- a/metricflow/semantics/plan_conversion/instance_converters.py +++ b/metricflow/semantics/plan_conversion/instance_converters.py @@ -14,9 +14,9 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from more_itertools import bucket -from metricflow.aggregation_properties import AggregationState -from metricflow.assert_one_arg import assert_exactly_one_arg_set -from metricflow.instances import ( +from metricflow.semantics.aggregation_properties import AggregationState +from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set +from metricflow.semantics.instances import ( DimensionInstance, EntityInstance, GroupByMetricInstance, diff --git a/metricflow/semantics/plan_conversion/sql_join_builder.py b/metricflow/semantics/plan_conversion/sql_join_builder.py index 7f521d81ba..8e9ddf8f66 100644 --- a/metricflow/semantics/plan_conversion/sql_join_builder.py +++ b/metricflow/semantics/plan_conversion/sql_join_builder.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.protocols.metric import MetricTimeWindow from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.assert_one_arg import assert_exactly_one_arg_set +from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py index decb2b0d1c..9cec1b591f 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py +++ b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, Generic, Sequence from metricflow.semantics.dag.mf_dag import DagNode, NodeId -from metricflow.visitor import Visitable, VisitorOutputT +from metricflow.semantics.visitor import Visitable, VisitorOutputT if TYPE_CHECKING: from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py index 5c9443bcd9..8a3a65e2e5 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py +++ b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py @@ -11,7 +11,7 @@ GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class MeasureGroupByItemSourceNode(GroupByItemResolutionNode): diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py index 3b896ac8e8..3f99d9068e 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py +++ b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py @@ -15,7 +15,7 @@ from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class MetricGroupByItemResolutionNode(GroupByItemResolutionNode): diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py index 2020c8c7b2..00174d24e1 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py +++ b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py @@ -12,7 +12,7 @@ from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class NoMetricsGroupByItemSourceNode(GroupByItemResolutionNode): diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py index 769866d6fd..7dda9221c9 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py +++ b/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py @@ -18,7 +18,7 @@ from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT class QueryGroupByItemResolutionNode(GroupByItemResolutionNode): diff --git a/metricflow/semantics/query/query_parser.py b/metricflow/semantics/query/query_parser.py index 94830a2898..eb43f13ae7 100644 --- a/metricflow/semantics/query/query_parser.py +++ b/metricflow/semantics/query/query_parser.py @@ -13,7 +13,7 @@ from dbt_semantic_interfaces.protocols.where_filter import WhereFilter from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.assert_one_arg import assert_at_most_one_arg_set +from metricflow.semantics.assert_one_arg import assert_at_most_one_arg_set from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime diff --git a/metricflow/random_id.py b/metricflow/semantics/random_id.py similarity index 100% rename from metricflow/random_id.py rename to metricflow/semantics/random_id.py diff --git a/metricflow/semantics/specs/spec_classes.py b/metricflow/semantics/specs/spec_classes.py index f114e8d123..0d224abc0f 100644 --- a/metricflow/semantics/specs/spec_classes.py +++ b/metricflow/semantics/specs/spec_classes.py @@ -35,7 +35,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.aggregation_properties import AggregationState +from metricflow.semantics.aggregation_properties import AggregationState from metricflow.collection_helpers.merger import Mergeable from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName @@ -45,7 +45,7 @@ from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.semantics.sql.sql_column_type import SqlColumnType from metricflow.semantics.sql.sql_plan import SqlJoinType -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT if TYPE_CHECKING: from metricflow.semantics.model.semantics.metric_lookup import MetricLookup diff --git a/metricflow/semantics/sql/sql_bind_parameters.py b/metricflow/semantics/sql/sql_bind_parameters.py index 3b090f79b9..337a763f60 100644 --- a/metricflow/semantics/sql/sql_bind_parameters.py +++ b/metricflow/semantics/sql/sql_bind_parameters.py @@ -7,7 +7,7 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass -from metricflow.assert_one_arg import assert_exactly_one_arg_set +from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set from metricflow.semantics.sql.sql_column_type import SqlColumnType diff --git a/metricflow/semantics/sql/sql_exprs.py b/metricflow/semantics/sql/sql_exprs.py index 529b8d623e..eab2789667 100644 --- a/metricflow/semantics/sql/sql_exprs.py +++ b/metricflow/semantics/sql/sql_exprs.py @@ -18,7 +18,7 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagNode, DisplayedProperty, NodeId from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.visitor import Visitable, VisitorOutputT +from metricflow.semantics.visitor import Visitable, VisitorOutputT class SqlExpressionNode(DagNode, Visitable, ABC): diff --git a/metricflow/semantics/sql/sql_plan.py b/metricflow/semantics/sql/sql_plan.py index f7965b63c9..cd68f3319a 100644 --- a/metricflow/semantics/sql/sql_plan.py +++ b/metricflow/semantics/sql/sql_plan.py @@ -14,7 +14,7 @@ from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId from metricflow.semantics.sql.sql_exprs import SqlExpressionNode from metricflow.semantics.sql.sql_table import SqlTable -from metricflow.visitor import VisitorOutputT +from metricflow.semantics.visitor import VisitorOutputT logger = logging.getLogger(__name__) diff --git a/metricflow/test_helpers.py b/metricflow/semantics/test_helpers.py similarity index 100% rename from metricflow/test_helpers.py rename to metricflow/semantics/test_helpers.py diff --git a/metricflow/visitor.py b/metricflow/semantics/visitor.py similarity index 100% rename from metricflow/visitor.py rename to metricflow/semantics/visitor.py diff --git a/metricflow/telemetry/reporter.py b/metricflow/telemetry/reporter.py index 8f4ffa9fe6..0729d5415b 100644 --- a/metricflow/telemetry/reporter.py +++ b/metricflow/telemetry/reporter.py @@ -14,7 +14,7 @@ from typing_extensions import ParamSpec -from metricflow.random_id import random_id +from metricflow.semantics.random_id import random_id from metricflow.telemetry.handlers.handlers import ( TelemetryHandler, ToMemoryTelemetryHandler, diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index c1a766a1be..98086c5dc0 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -6,8 +6,8 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelElementReference -from metricflow.aggregation_properties import AggregationState -from metricflow.instances import ( +from metricflow.semantics.aggregation_properties import AggregationState +from metricflow.semantics.instances import ( InstanceSet, MeasureInstance, ) diff --git a/tests/dataflow_plan_to_svg.py b/tests/dataflow_plan_to_svg.py index ead06c1485..7e0e7b9b86 100644 --- a/tests/dataflow_plan_to_svg.py +++ b/tests/dataflow_plan_to_svg.py @@ -5,7 +5,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.semantics.dag.dag_visualization import DagGraphT, render_via_graphviz -from metricflow.test_helpers import snapshot_path_prefix +from metricflow.semantics.test_helpers import snapshot_path_prefix from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/execution/test_tasks.py b/tests/execution/test_tasks.py index 7b26e2cf8c..25e836b774 100644 --- a/tests/execution/test_tasks.py +++ b/tests/execution/test_tasks.py @@ -8,7 +8,7 @@ SelectSqlQueryToTableTask, ) from metricflow.execution.executor import SequentialPlanExecutor -from metricflow.random_id import random_id +from metricflow.semantics.random_id import random_id from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters diff --git a/tests/fixtures/cli_fixtures.py b/tests/fixtures/cli_fixtures.py index b1f01ccc0a..e8a293e658 100644 --- a/tests/fixtures/cli_fixtures.py +++ b/tests/fixtures/cli_fixtures.py @@ -18,7 +18,7 @@ from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.test_helpers import ConfigurableTimeSource +from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import dbt_project_dir diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index f8dcccea82..418f93a07b 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -30,7 +30,7 @@ from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.test_helpers import ConfigurableTimeSource +from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.id_fixtures import IdNumberSpace, patch_id_generators_helper from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/fixtures/setup_fixtures.py b/tests/fixtures/setup_fixtures.py index c095df5cb4..d678661a4e 100644 --- a/tests/fixtures/setup_fixtures.py +++ b/tests/fixtures/setup_fixtures.py @@ -12,8 +12,8 @@ from _pytest.fixtures import FixtureRequest from sqlalchemy.engine import make_url -from metricflow.random_id import random_id -from metricflow.test_helpers import ( +from metricflow.semantics.random_id import random_id +from metricflow.semantics.test_helpers import ( DISPLAY_SNAPSHOTS_CLI_FLAG, OVERWRITE_SNAPSHOTS_CLI_FLAG, MetricFlowTestConfiguration, diff --git a/tests/fixtures/sql_clients/base_sql_client_implementation.py b/tests/fixtures/sql_clients/base_sql_client_implementation.py index 79b7e7e28c..5d08571cff 100644 --- a/tests/fixtures/sql_clients/base_sql_client_implementation.py +++ b/tests/fixtures/sql_clients/base_sql_client_implementation.py @@ -9,7 +9,7 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.random_id import random_id +from metricflow.semantics.random_id import random_id from metricflow.semantics.protocols.sql_client import ( SqlClient, ) diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 2a7f10b70b..09504eef3a 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -10,7 +10,7 @@ from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.test_helpers import ConfigurableTimeSource +from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/integration/test_configured_cases.py b/tests/integration/test_configured_cases.py index 11e5c208f3..33744014b6 100644 --- a/tests/integration/test_configured_cases.py +++ b/tests/integration/test_configured_cases.py @@ -35,7 +35,7 @@ SqlStringExpression, SqlSubtractTimeIntervalExpression, ) -from metricflow.test_helpers import ( +from metricflow.semantics.test_helpers import ( ConfigurableTimeSource, ) from tests.compare_df import assert_dataframes_equal diff --git a/tests/integration/test_rendered_query.py b/tests/integration/test_rendered_query.py index f2c4bad905..6dae1b5857 100644 --- a/tests/integration/test_rendered_query.py +++ b/tests/integration/test_rendered_query.py @@ -8,7 +8,7 @@ from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.test_helpers import ConfigurableTimeSource +from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers from tests.snapshot_utils import ( diff --git a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py index 9cd6d246a8..88a6f52d71 100644 --- a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py +++ b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py @@ -2,7 +2,7 @@ from typing import Mapping -from metricflow.instances import InstanceSet +from metricflow.semantics.instances import InstanceSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.instance_converters import ( diff --git a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py index 1bff816a2d..0062964078 100644 --- a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py +++ b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py @@ -5,7 +5,7 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.instances import InstanceSet +from metricflow.semantics.instances import InstanceSet from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.instance_converters import CreateValidityWindowJoinDescription diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index 98a3d291f0..de987c092e 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -15,7 +15,7 @@ from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet -from metricflow.test_helpers import assert_snapshot_text_equal +from metricflow.semantics.test_helpers import assert_snapshot_text_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker logger = logging.getLogger(__name__) diff --git a/tests/sql_clients/test_sql_client.py b/tests/sql_clients/test_sql_client.py index c920fb120f..38da1ac0a0 100644 --- a/tests/sql_clients/test_sql_client.py +++ b/tests/sql_clients/test_sql_client.py @@ -6,7 +6,7 @@ import pandas as pd import pytest -from metricflow.random_id import random_id +from metricflow.semantics.random_id import random_id from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.semantics.sql.sql_table import SqlTable diff --git a/tests/table_snapshot/test_table_snapshots.py b/tests/table_snapshot/test_table_snapshots.py index 2a585bbc0c..fcc7d3a6a8 100644 --- a/tests/table_snapshot/test_table_snapshots.py +++ b/tests/table_snapshot/test_table_snapshots.py @@ -7,7 +7,7 @@ import pytest from dbt_semantic_interfaces.test_utils import as_datetime -from metricflow.random_id import random_id +from metricflow.semantics.random_id import random_id from metricflow.semantics.protocols.sql_client import SqlEngine from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/test_instance_serialization.py b/tests/test_instance_serialization.py index 3b3440d77f..c1748a0011 100644 --- a/tests/test_instance_serialization.py +++ b/tests/test_instance_serialization.py @@ -6,7 +6,7 @@ import pytest from dbt_semantic_interfaces.dataclass_serialization import DataClassDeserializer, DataclassSerializer -from metricflow.instances import InstanceSet +from metricflow.semantics.instances import InstanceSet from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup logger = logging.getLogger(__name__) From 298b45e668ff975537fd04431f86d557bf2ec302 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 16:12:58 -0700 Subject: [PATCH 26/80] Move collection_helpers. --- .../cli/dbt_connectors/adapter_backed_client.py | 2 +- metricflow/engine/metricflow_engine.py | 2 +- .../collection_helpers/__init__.py | 0 .../{ => semantics}/collection_helpers/merger.py | 0 metricflow/semantics/dag/dag_visualization.py | 2 +- .../semantics/dataflow/builder/node_evaluator.py | 2 +- .../semantics/dataset/convert_semantic_model.py | 8 ++++---- .../semantics/dataset/semantic_model_adapter.py | 2 +- metricflow/semantics/dataset/sql_dataset.py | 2 +- .../semantics/semantic_model_join_evaluator.py | 2 +- .../semantics/plan_conversion/dataflow_to_sql.py | 16 ++++++++-------- .../plan_conversion/instance_converters.py | 2 +- .../filter_spec_resolution/filter_spec_lookup.py | 2 +- metricflow/semantics/query/issues/issues_base.py | 2 +- metricflow/semantics/query/query_parser.py | 2 +- metricflow/semantics/query/query_resolution.py | 2 +- metricflow/semantics/specs/spec_classes.py | 2 +- tests/collection_helpers/test_merger.py | 2 +- tests/dataflow/builder/test_node_data_set.py | 8 ++++---- tests/execution/test_tasks.py | 2 +- .../base_sql_client_implementation.py | 2 +- ...st_create_validity_window_join_description.py | 2 +- tests/sql_clients/test_sql_client.py | 2 +- tests/table_snapshot/test_table_snapshots.py | 2 +- 24 files changed, 35 insertions(+), 35 deletions(-) rename metricflow/{ => semantics}/collection_helpers/__init__.py (100%) rename metricflow/{ => semantics}/collection_helpers/merger.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py index 795868b01f..9f86e8cde4 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py @@ -11,9 +11,9 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.random_id import random_id from metricflow.semantics.errors.error_classes import SqlBindParametersNotSupportedError from metricflow.semantics.protocols.sql_client import SqlEngine +from metricflow.semantics.random_id import random_id from metricflow.semantics.sql.render.big_query import BigQuerySqlQueryPlanRenderer from metricflow.semantics.sql.render.databricks import DatabricksSqlQueryPlanRenderer from metricflow.semantics.sql.render.duckdb_renderer import DuckDbSqlQueryPlanRenderer diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 2e464b511a..2768c39de8 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -23,7 +23,6 @@ from metricflow.execution.executor import SequentialPlanExecutor from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.random_id import random_id from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -50,6 +49,7 @@ from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.query.query_exceptions import InvalidQueryException from metricflow.semantics.query.query_parser import MetricFlowQueryParser +from metricflow.semantics.random_id import random_id from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.query_param_implementations import SavedQueryParameter from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec diff --git a/metricflow/collection_helpers/__init__.py b/metricflow/semantics/collection_helpers/__init__.py similarity index 100% rename from metricflow/collection_helpers/__init__.py rename to metricflow/semantics/collection_helpers/__init__.py diff --git a/metricflow/collection_helpers/merger.py b/metricflow/semantics/collection_helpers/merger.py similarity index 100% rename from metricflow/collection_helpers/merger.py rename to metricflow/semantics/collection_helpers/merger.py diff --git a/metricflow/semantics/dag/dag_visualization.py b/metricflow/semantics/dag/dag_visualization.py index f122c13fc8..09c2126065 100644 --- a/metricflow/semantics/dag/dag_visualization.py +++ b/metricflow/semantics/dag/dag_visualization.py @@ -6,8 +6,8 @@ import graphviz -from metricflow.semantics.random_id import random_id from metricflow.semantics.dag.mf_dag import DagNode, MetricFlowDag +from metricflow.semantics.random_id import random_id logger = logging.getLogger(__name__) DagNodeT = TypeVar("DagNodeT", bound=DagNode) diff --git a/metricflow/semantics/dataflow/builder/node_evaluator.py b/metricflow/semantics/dataflow/builder/node_evaluator.py index 5b19bb9b28..95a6cbf9f7 100644 --- a/metricflow/semantics/dataflow/builder/node_evaluator.py +++ b/metricflow/semantics/dataflow/builder/node_evaluator.py @@ -23,7 +23,6 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.semantics.instances import InstanceSet from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.partitions import ( @@ -38,6 +37,7 @@ from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.dataset.sql_dataset import SqlDataSet +from metricflow.semantics.instances import InstanceSet from metricflow.semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.plan_conversion.instance_converters import CreateValidityWindowJoinDescription diff --git a/metricflow/semantics/dataset/convert_semantic_model.py b/metricflow/semantics/dataset/convert_semantic_model.py index a4441c65d8..7301e2d39b 100644 --- a/metricflow/semantics/dataset/convert_semantic_model.py +++ b/metricflow/semantics/dataset/convert_semantic_model.py @@ -17,6 +17,10 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.semantics.aggregation_properties import AggregationState +from metricflow.semantics.dag.id_prefix import DynamicIdPrefix, StaticIdPrefix +from metricflow.semantics.dag.sequential_id import SequentialIdGenerator +from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet +from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.instances import ( DimensionInstance, EntityInstance, @@ -24,10 +28,6 @@ MeasureInstance, TimeDimensionInstance, ) -from metricflow.semantics.dag.id_prefix import DynamicIdPrefix, StaticIdPrefix -from metricflow.semantics.dag.sequential_id import SequentialIdGenerator -from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet -from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.model.spec_converters import MeasureConverter from metricflow.semantics.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource diff --git a/metricflow/semantics/dataset/semantic_model_adapter.py b/metricflow/semantics/dataset/semantic_model_adapter.py index b0fbf4db2b..50b690eca5 100644 --- a/metricflow/semantics/dataset/semantic_model_adapter.py +++ b/metricflow/semantics/dataset/semantic_model_adapter.py @@ -3,8 +3,8 @@ from dbt_semantic_interfaces.references import SemanticModelReference from typing_extensions import override -from metricflow.semantics.instances import InstanceSet from metricflow.semantics.dataset.sql_dataset import SqlDataSet +from metricflow.semantics.instances import InstanceSet from metricflow.semantics.sql.sql_plan import SqlSelectStatementNode diff --git a/metricflow/semantics/dataset/sql_dataset.py b/metricflow/semantics/dataset/sql_dataset.py index 7ff156986b..134ecfd46d 100644 --- a/metricflow/semantics/dataset/sql_dataset.py +++ b/metricflow/semantics/dataset/sql_dataset.py @@ -6,10 +6,10 @@ from typing_extensions import override from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set +from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.instances import ( InstanceSet, ) -from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.column_assoc import ColumnAssociation from metricflow.semantics.specs.spec_classes import DimensionSpec, EntitySpec, TimeDimensionSpec from metricflow.semantics.sql.sql_plan import ( diff --git a/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py b/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py index 251ff29535..a9036b4fa9 100644 --- a/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py +++ b/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py @@ -10,8 +10,8 @@ SemanticModelReference, ) -from metricflow.semantics.instances import EntityInstance, InstanceSet from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.instances import EntityInstance, InstanceSet if TYPE_CHECKING: from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup diff --git a/metricflow/semantics/plan_conversion/dataflow_to_sql.py b/metricflow/semantics/plan_conversion/dataflow_to_sql.py index 3e04f76560..3791934a71 100644 --- a/metricflow/semantics/plan_conversion/dataflow_to_sql.py +++ b/metricflow/semantics/plan_conversion/dataflow_to_sql.py @@ -12,15 +12,8 @@ from dbt_semantic_interfaces.type_enums.conversion_calculation_type import ConversionCalculationType from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.semantics.aggregation_properties import AggregationState -from metricflow.semantics.instances import ( - GroupByMetricInstance, - InstanceSet, - MetadataInstance, - MetricInstance, - TimeDimensionInstance, -) from metricflow.mf_logging.formatting import indent +from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dag.sequential_id import SequentialIdGenerator @@ -50,6 +43,13 @@ from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.instances import ( + GroupByMetricInstance, + InstanceSet, + MetadataInstance, + MetricInstance, + TimeDimensionInstance, +) from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.semantics.plan_conversion.instance_converters import ( diff --git a/metricflow/semantics/plan_conversion/instance_converters.py b/metricflow/semantics/plan_conversion/instance_converters.py index d9d2b8b9d7..ad017c6ffd 100644 --- a/metricflow/semantics/plan_conversion/instance_converters.py +++ b/metricflow/semantics/plan_conversion/instance_converters.py @@ -16,6 +16,7 @@ from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set +from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.instances import ( DimensionInstance, EntityInstance, @@ -28,7 +29,6 @@ MetricInstance, TimeDimensionInstance, ) -from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.model.semantics.metric_lookup import MetricLookup from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.plan_conversion.select_column_gen import SelectColumnSet diff --git a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py index 2579332d6d..1b957501aa 100644 --- a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py +++ b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py @@ -14,9 +14,9 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.collection_helpers.merger import Mergeable from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.collection_helpers.merger import Mergeable from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath diff --git a/metricflow/semantics/query/issues/issues_base.py b/metricflow/semantics/query/issues/issues_base.py index 1ae1653fc3..058052ad4c 100644 --- a/metricflow/semantics/query/issues/issues_base.py +++ b/metricflow/semantics/query/issues/issues_base.py @@ -7,7 +7,7 @@ from typing_extensions import override -from metricflow.collection_helpers.merger import Mergeable +from metricflow.semantics.collection_helpers.merger import Mergeable from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput diff --git a/metricflow/semantics/query/query_parser.py b/metricflow/semantics/query/query_parser.py index eb43f13ae7..97e3a2f882 100644 --- a/metricflow/semantics/query/query_parser.py +++ b/metricflow/semantics/query/query_parser.py @@ -13,10 +13,10 @@ from dbt_semantic_interfaces.protocols.where_filter import WhereFilter from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.semantics.assert_one_arg import assert_at_most_one_arg_set from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat from metricflow.mf_logging.runtime import log_runtime +from metricflow.semantics.assert_one_arg import assert_at_most_one_arg_set from metricflow.semantics.filters.merge_where import merge_to_single_where_filter from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup diff --git a/metricflow/semantics/query/query_resolution.py b/metricflow/semantics/query/query_resolution.py index c756c063c4..8b769da5af 100644 --- a/metricflow/semantics/query/query_resolution.py +++ b/metricflow/semantics/query/query_resolution.py @@ -5,8 +5,8 @@ from typing_extensions import override -from metricflow.collection_helpers.merger import Mergeable from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.collection_helpers.merger import Mergeable from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ) diff --git a/metricflow/semantics/specs/spec_classes.py b/metricflow/semantics/specs/spec_classes.py index 0d224abc0f..4359d87bb4 100644 --- a/metricflow/semantics/specs/spec_classes.py +++ b/metricflow/semantics/specs/spec_classes.py @@ -36,7 +36,7 @@ from typing_extensions import override from metricflow.semantics.aggregation_properties import AggregationState -from metricflow.collection_helpers.merger import Mergeable +from metricflow.semantics.collection_helpers.merger import Mergeable from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( diff --git a/tests/collection_helpers/test_merger.py b/tests/collection_helpers/test_merger.py index c0d43abbf7..0bb5d6c4b8 100644 --- a/tests/collection_helpers/test_merger.py +++ b/tests/collection_helpers/test_merger.py @@ -5,7 +5,7 @@ from typing_extensions import override -from metricflow.collection_helpers.merger import Mergeable +from metricflow.semantics.collection_helpers.merger import Mergeable @dataclass(frozen=True) diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index 98086c5dc0..a7cf5ecb87 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -7,14 +7,14 @@ from dbt_semantic_interfaces.references import SemanticModelElementReference from metricflow.semantics.aggregation_properties import AggregationState -from metricflow.semantics.instances import ( - InstanceSet, - MeasureInstance, -) from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.semantics.dataset.sql_dataset import SqlDataSet +from metricflow.semantics.instances import ( + InstanceSet, + MeasureInstance, +) from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource diff --git a/tests/execution/test_tasks.py b/tests/execution/test_tasks.py index 25e836b774..da4ecac77b 100644 --- a/tests/execution/test_tasks.py +++ b/tests/execution/test_tasks.py @@ -8,9 +8,9 @@ SelectSqlQueryToTableTask, ) from metricflow.execution.executor import SequentialPlanExecutor -from metricflow.semantics.random_id import random_id from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine +from metricflow.semantics.random_id import random_id from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.semantics.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal diff --git a/tests/fixtures/sql_clients/base_sql_client_implementation.py b/tests/fixtures/sql_clients/base_sql_client_implementation.py index 5d08571cff..c1602625eb 100644 --- a/tests/fixtures/sql_clients/base_sql_client_implementation.py +++ b/tests/fixtures/sql_clients/base_sql_client_implementation.py @@ -9,10 +9,10 @@ from metricflow.mf_logging.formatting import indent from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.random_id import random_id from metricflow.semantics.protocols.sql_client import ( SqlClient, ) +from metricflow.semantics.random_id import random_id from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.semantics.sql.sql_table import SqlTable from metricflow.sql_request.sql_request_attributes import SqlRequestId diff --git a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py index 0062964078..bfdcd86bcc 100644 --- a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py +++ b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py @@ -5,8 +5,8 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.semantics.instances import InstanceSet from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription +from metricflow.semantics.instances import InstanceSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.instance_converters import CreateValidityWindowJoinDescription from metricflow.semantics.specs.spec_classes import TimeDimensionSpec diff --git a/tests/sql_clients/test_sql_client.py b/tests/sql_clients/test_sql_client.py index 38da1ac0a0..aad3d308ee 100644 --- a/tests/sql_clients/test_sql_client.py +++ b/tests/sql_clients/test_sql_client.py @@ -6,8 +6,8 @@ import pandas as pd import pytest -from metricflow.semantics.random_id import random_id from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine +from metricflow.semantics.random_id import random_id from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.semantics.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal diff --git a/tests/table_snapshot/test_table_snapshots.py b/tests/table_snapshot/test_table_snapshots.py index fcc7d3a6a8..5c092fd107 100644 --- a/tests/table_snapshot/test_table_snapshots.py +++ b/tests/table_snapshot/test_table_snapshots.py @@ -7,8 +7,8 @@ import pytest from dbt_semantic_interfaces.test_utils import as_datetime -from metricflow.semantics.random_id import random_id from metricflow.semantics.protocols.sql_client import SqlEngine +from metricflow.semantics.random_id import random_id from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods From d2cd7beefc6cdfa0acc7d88db074fbd686984a7f Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 16:15:19 -0700 Subject: [PATCH 27/80] Move mf_logging. --- .../cli/dbt_connectors/adapter_backed_client.py | 4 ++-- .../cli/dbt_connectors/dbt_config_accessor.py | 2 +- metricflow/engine/metricflow_engine.py | 4 ++-- metricflow/mf_logging/__init__.py | 4 ---- metricflow/semantics/dag/dag_to_text.py | 2 +- .../semantics/dataflow/builder/dataflow_plan_builder.py | 6 +++--- metricflow/semantics/dataflow/builder/node_data_set.py | 2 +- metricflow/semantics/dataflow/builder/node_evaluator.py | 2 +- metricflow/semantics/dataflow/nodes/filter_elements.py | 2 +- metricflow/semantics/mf_logging/__init__.py | 0 metricflow/{ => semantics}/mf_logging/formatting.py | 0 metricflow/{ => semantics}/mf_logging/pretty_print.py | 2 +- metricflow/{ => semantics}/mf_logging/runtime.py | 0 metricflow/semantics/model/semantic_manifest_lookup.py | 2 +- .../semantics/model/semantics/linkable_spec_resolver.py | 2 +- .../model/semantics/semantic_model_join_evaluator.py | 2 +- .../semantics/model/semantics/semantic_model_lookup.py | 2 +- metricflow/semantics/plan_conversion/dataflow_to_sql.py | 2 +- metricflow/semantics/plan_conversion/node_processor.py | 2 +- .../group_by_item/candidate_push_down/push_down_visitor.py | 4 ++-- .../filter_spec_resolution/filter_spec_lookup.py | 4 ++-- .../filter_spec_resolution/filter_spec_resolver.py | 2 +- .../semantics/query/group_by_item/group_by_item_resolver.py | 4 ++-- metricflow/semantics/query/group_by_item/resolution_path.py | 2 +- .../query/issues/filter_spec_resolver/invalid_where.py | 2 +- .../group_by_item_resolver/ambiguous_group_by_item.py | 4 ++-- .../group_by_item_resolver/invalid_use_of_date_part.py | 2 +- .../issues/group_by_item_resolver/multiple_join_paths.py | 4 ++-- .../query/issues/group_by_item_resolver/no_common_items.py | 4 ++-- .../group_by_item_resolver/no_matching_items_for_measure.py | 4 ++-- metricflow/semantics/query/issues/parsing/invalid_metric.py | 4 ++-- metricflow/semantics/query/query_parser.py | 6 +++--- metricflow/semantics/query/query_resolution.py | 2 +- metricflow/semantics/query/query_resolver.py | 4 ++-- .../query/resolver_inputs/query_resolver_inputs.py | 4 ++-- .../semantics/sql/optimizer/rewriting_sub_query_reducer.py | 2 +- metricflow/semantics/sql/render/expr_renderer.py | 2 +- metricflow/semantics/sql/render/sql_plan_renderer.py | 2 +- metricflow/telemetry/handlers/python_log.py | 2 +- tests/collection_helpers/test_pretty_print.py | 4 ++-- tests/examples/test_node_sql.py | 2 +- .../fixtures/sql_clients/base_sql_client_implementation.py | 4 ++-- tests/mf_logging/test_dag_to_text.py | 2 +- .../filter_spec_resolution/test_spec_lookup.py | 2 +- tests/snapshot_utils.py | 2 +- 45 files changed, 59 insertions(+), 63 deletions(-) delete mode 100644 metricflow/mf_logging/__init__.py create mode 100644 metricflow/semantics/mf_logging/__init__.py rename metricflow/{ => semantics}/mf_logging/formatting.py (100%) rename metricflow/{ => semantics}/mf_logging/pretty_print.py (99%) rename metricflow/{ => semantics}/mf_logging/runtime.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py index 9f86e8cde4..95cf333f9c 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py @@ -9,8 +9,8 @@ from dbt.exceptions import DbtDatabaseError from dbt_semantic_interfaces.enum_extension import assert_values_exhausted -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.errors.error_classes import SqlBindParametersNotSupportedError from metricflow.semantics.protocols.sql_client import SqlEngine from metricflow.semantics.random_id import random_id diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py index 67ec5a20a2..ce461a9416 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py @@ -14,7 +14,7 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from typing_extensions import Self -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.errors.error_classes import ModelCreationException from metricflow.semantics.model.dbt_manifest_parser import parse_manifest_from_dbt_generated_manifest diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 2768c39de8..8b5a83e045 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -21,8 +21,8 @@ ) from metricflow.execution.execution_plan import ExecutionPlan, SqlQuery from metricflow.execution.executor import SequentialPlanExecutor -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver diff --git a/metricflow/mf_logging/__init__.py b/metricflow/mf_logging/__init__.py deleted file mode 100644 index 482d894b76..0000000000 --- a/metricflow/mf_logging/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Contains logging-related classes / functions. - -Named with the 'mf_' prefix to avoid collision with the built-in module. -""" diff --git a/metricflow/semantics/dag/dag_to_text.py b/metricflow/semantics/dag/dag_to_text.py index 247a02bc8e..e007dd4632 100644 --- a/metricflow/semantics/dag/dag_to_text.py +++ b/metricflow/semantics/dag/dag_to_text.py @@ -14,7 +14,7 @@ if typing.TYPE_CHECKING: from metricflow.semantics.dag.mf_dag import DagNode, DagNodeT, DisplayedProperty, MetricFlowDag -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py index f574ad281b..7a37644781 100644 --- a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py @@ -22,9 +22,9 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.mf_logging.runtime import log_runtime +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.runtime import log_runtime from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver diff --git a/metricflow/semantics/dataflow/builder/node_data_set.py b/metricflow/semantics/dataflow/builder/node_data_set.py index 345a738b28..dfb6c85d66 100644 --- a/metricflow/semantics/dataflow/builder/node_data_set.py +++ b/metricflow/semantics/dataflow/builder/node_data_set.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Dict, Optional, Sequence -from metricflow.mf_logging.runtime import log_block_runtime +from metricflow.semantics.mf_logging.runtime import log_block_runtime from metricflow.semantics.dataflow.dataflow_plan import ( DataflowPlanNode, ) diff --git a/metricflow/semantics/dataflow/builder/node_evaluator.py b/metricflow/semantics/dataflow/builder/node_evaluator.py index 95a6cbf9f7..06496d4b7e 100644 --- a/metricflow/semantics/dataflow/builder/node_evaluator.py +++ b/metricflow/semantics/dataflow/builder/node_evaluator.py @@ -23,7 +23,7 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.partitions import ( PartitionDimensionJoinDescription, diff --git a/metricflow/semantics/dataflow/nodes/filter_elements.py b/metricflow/semantics/dataflow/nodes/filter_elements.py index 61d8804b8d..9b6c8e254f 100644 --- a/metricflow/semantics/dataflow/nodes/filter_elements.py +++ b/metricflow/semantics/dataflow/nodes/filter_elements.py @@ -2,7 +2,7 @@ from typing import Optional, Sequence, Tuple -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor diff --git a/metricflow/semantics/mf_logging/__init__.py b/metricflow/semantics/mf_logging/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metricflow/mf_logging/formatting.py b/metricflow/semantics/mf_logging/formatting.py similarity index 100% rename from metricflow/mf_logging/formatting.py rename to metricflow/semantics/mf_logging/formatting.py diff --git a/metricflow/mf_logging/pretty_print.py b/metricflow/semantics/mf_logging/pretty_print.py similarity index 99% rename from metricflow/mf_logging/pretty_print.py rename to metricflow/semantics/mf_logging/pretty_print.py index 08ab8c84ac..50d2f4d3f3 100644 --- a/metricflow/mf_logging/pretty_print.py +++ b/metricflow/semantics/mf_logging/pretty_print.py @@ -9,7 +9,7 @@ from pydantic import BaseModel -from metricflow.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.formatting import indent logger = logging.getLogger(__name__) diff --git a/metricflow/mf_logging/runtime.py b/metricflow/semantics/mf_logging/runtime.py similarity index 100% rename from metricflow/mf_logging/runtime.py rename to metricflow/semantics/mf_logging/runtime.py diff --git a/metricflow/semantics/model/semantic_manifest_lookup.py b/metricflow/semantics/model/semantic_manifest_lookup.py index 2b52c85a58..a6cf038441 100644 --- a/metricflow/semantics/model/semantic_manifest_lookup.py +++ b/metricflow/semantics/model/semantic_manifest_lookup.py @@ -5,7 +5,7 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.metric_lookup import MetricLookup from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource diff --git a/metricflow/semantics/model/semantics/linkable_spec_resolver.py b/metricflow/semantics/model/semantics/linkable_spec_resolver.py index b6af7df012..91c7183b83 100644 --- a/metricflow/semantics/model/semantics/linkable_spec_resolver.py +++ b/metricflow/semantics/model/semantics/linkable_spec_resolver.py @@ -19,7 +19,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.errors.error_classes import UnknownMetricLinkingError from metricflow.semantics.model.semantics.linkable_element import ( diff --git a/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py b/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py index a9036b4fa9..37a4827be8 100644 --- a/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py +++ b/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py @@ -10,7 +10,7 @@ SemanticModelReference, ) -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.instances import EntityInstance, InstanceSet if TYPE_CHECKING: diff --git a/metricflow/semantics/model/semantics/semantic_model_lookup.py b/metricflow/semantics/model/semantics/semantic_model_lookup.py index 646c86eae1..22ef62164b 100644 --- a/metricflow/semantics/model/semantics/semantic_model_lookup.py +++ b/metricflow/semantics/model/semantics/semantic_model_lookup.py @@ -21,7 +21,7 @@ from dbt_semantic_interfaces.type_enums import DimensionType, EntityType from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.errors.error_classes import InvalidSemanticModelError from metricflow.semantics.model.semantics.element_group import ElementGrouper from metricflow.semantics.model.spec_converters import MeasureConverter diff --git a/metricflow/semantics/plan_conversion/dataflow_to_sql.py b/metricflow/semantics/plan_conversion/dataflow_to_sql.py index 3791934a71..1e6a5e2f69 100644 --- a/metricflow/semantics/plan_conversion/dataflow_to_sql.py +++ b/metricflow/semantics/plan_conversion/dataflow_to_sql.py @@ -12,7 +12,7 @@ from dbt_semantic_interfaces.type_enums.conversion_calculation_type import ConversionCalculationType from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId diff --git a/metricflow/semantics/plan_conversion/node_processor.py b/metricflow/semantics/plan_conversion/node_processor.py index ce042ad93f..076aaf2d83 100644 --- a/metricflow/semantics/plan_conversion/node_processor.py +++ b/metricflow/semantics/plan_conversion/node_processor.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.references import EntityReference, TimeDimensionReference -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.partitions import PartitionJoinResolver from metricflow.semantics.dataflow.dataflow_plan import ( diff --git a/metricflow/semantics/query/group_by_item/candidate_push_down/push_down_visitor.py b/metricflow/semantics/query/group_by_item/candidate_push_down/push_down_visitor.py index 2b9a71b4b0..a2cba6074c 100644 --- a/metricflow/semantics/query/group_by_item/candidate_push_down/push_down_visitor.py +++ b/metricflow/semantics/query/group_by_item/candidate_push_down/push_down_visitor.py @@ -9,8 +9,8 @@ from dbt_semantic_interfaces.type_enums import MetricType from typing_extensions import override -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat, mf_pformat_many +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat, mf_pformat_many from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.model.semantics.linkable_element import LinkableElementProperty from metricflow.semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet diff --git a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py index 1b957501aa..5171d52150 100644 --- a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py +++ b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py @@ -14,8 +14,8 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.collection_helpers.merger import Mergeable from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable diff --git a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py index ee1ee8a789..bac713b6b3 100644 --- a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py +++ b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py @@ -10,7 +10,7 @@ from dbt_semantic_interfaces.references import EntityReference from typing_extensions import override -from metricflow.mf_logging.runtime import log_runtime +from metricflow.semantics.mf_logging.runtime import log_runtime from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.object_builder_str import ObjectBuilderNameConverter from metricflow.semantics.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker diff --git a/metricflow/semantics/query/group_by_item/group_by_item_resolver.py b/metricflow/semantics/query/group_by_item/group_by_item_resolver.py index 9eef75ea36..adffabb03f 100644 --- a/metricflow/semantics/query/group_by_item/group_by_item_resolver.py +++ b/metricflow/semantics/query/group_by_item/group_by_item_resolver.py @@ -9,8 +9,8 @@ from dbt_semantic_interfaces.references import TimeDimensionReference from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.query.group_by_item.candidate_push_down.push_down_visitor import ( diff --git a/metricflow/semantics/query/group_by_item/resolution_path.py b/metricflow/semantics/query/group_by_item/resolution_path.py index 5ec46a329a..402cd8f9c4 100644 --- a/metricflow/semantics/query/group_by_item/resolution_path.py +++ b/metricflow/semantics/query/group_by_item/resolution_path.py @@ -5,7 +5,7 @@ from typing_extensions import override -from metricflow.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode diff --git a/metricflow/semantics/query/issues/filter_spec_resolver/invalid_where.py b/metricflow/semantics/query/issues/filter_spec_resolver/invalid_where.py index 51ddfc1bc3..9acc6639b5 100644 --- a/metricflow/semantics/query/issues/filter_spec_resolver/invalid_where.py +++ b/metricflow/semantics/query/issues/filter_spec_resolver/invalid_where.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.protocols import WhereFilter from typing_extensions import override -from metricflow.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py b/metricflow/semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py index 2d7fb5f58a..556388f379 100644 --- a/metricflow/semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py +++ b/metricflow/semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py @@ -5,8 +5,8 @@ from typing_extensions import override -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py b/metricflow/semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py index 0281d65b69..4b19c58be9 100644 --- a/metricflow/semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py +++ b/metricflow/semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py @@ -5,7 +5,7 @@ from typing_extensions import override -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/multiple_join_paths.py b/metricflow/semantics/query/issues/group_by_item_resolver/multiple_join_paths.py index 70f4d63fdc..421576075a 100644 --- a/metricflow/semantics/query/issues/group_by_item_resolver/multiple_join_paths.py +++ b/metricflow/semantics/query/issues/group_by_item_resolver/multiple_join_paths.py @@ -5,8 +5,8 @@ from typing_extensions import override -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/no_common_items.py b/metricflow/semantics/query/issues/group_by_item_resolver/no_common_items.py index 517de87df1..7611fcec12 100644 --- a/metricflow/semantics/query/issues/group_by_item_resolver/no_common_items.py +++ b/metricflow/semantics/query/issues/group_by_item_resolver/no_common_items.py @@ -5,8 +5,8 @@ from typing_extensions import override -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py b/metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py index 75b5fe446d..d7b217a12b 100644 --- a/metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py +++ b/metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py @@ -6,8 +6,8 @@ from typing_extensions import override -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, diff --git a/metricflow/semantics/query/issues/parsing/invalid_metric.py b/metricflow/semantics/query/issues/parsing/invalid_metric.py index 3ee5905c96..00a57aff7b 100644 --- a/metricflow/semantics/query/issues/parsing/invalid_metric.py +++ b/metricflow/semantics/query/issues/parsing/invalid_metric.py @@ -5,8 +5,8 @@ from typing_extensions import override -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath from metricflow.semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, diff --git a/metricflow/semantics/query/query_parser.py b/metricflow/semantics/query/query_parser.py index 97e3a2f882..2f647474c6 100644 --- a/metricflow/semantics/query/query_parser.py +++ b/metricflow/semantics/query/query_parser.py @@ -13,9 +13,9 @@ from dbt_semantic_interfaces.protocols.where_filter import WhereFilter from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.mf_logging.runtime import log_runtime +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.runtime import log_runtime from metricflow.semantics.assert_one_arg import assert_at_most_one_arg_set from metricflow.semantics.filters.merge_where import merge_to_single_where_filter from metricflow.semantics.filters.time_constraint import TimeRangeConstraint diff --git a/metricflow/semantics/query/query_resolution.py b/metricflow/semantics/query/query_resolution.py index 8b769da5af..a64b7c6247 100644 --- a/metricflow/semantics/query/query_resolution.py +++ b/metricflow/semantics/query/query_resolution.py @@ -5,7 +5,7 @@ from typing_extensions import override -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.collection_helpers.merger import Mergeable from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, diff --git a/metricflow/semantics/query/query_resolver.py b/metricflow/semantics/query/query_resolver.py index bb66d1ae94..12b32dee67 100644 --- a/metricflow/semantics/query/query_resolver.py +++ b/metricflow/semantics/query/query_resolver.py @@ -6,8 +6,8 @@ from dbt_semantic_interfaces.references import MetricReference -from metricflow.mf_logging.pretty_print import mf_pformat -from metricflow.mf_logging.runtime import log_runtime +from metricflow.semantics.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.runtime import log_runtime from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.metric_scheme import MetricNamingScheme from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( diff --git a/metricflow/semantics/query/resolver_inputs/query_resolver_inputs.py b/metricflow/semantics/query/resolver_inputs/query_resolver_inputs.py index a53dafa84b..936b64c2c9 100644 --- a/metricflow/semantics/query/resolver_inputs/query_resolver_inputs.py +++ b/metricflow/semantics/query/resolver_inputs/query_resolver_inputs.py @@ -11,8 +11,8 @@ from dbt_semantic_interfaces.protocols import WhereFilterIntersection from typing_extensions import override -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.naming.metric_scheme import MetricNamingScheme from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter diff --git a/metricflow/semantics/sql/optimizer/rewriting_sub_query_reducer.py b/metricflow/semantics/sql/optimizer/rewriting_sub_query_reducer.py index 4af2a94def..b93789ce55 100644 --- a/metricflow/semantics/sql/optimizer/rewriting_sub_query_reducer.py +++ b/metricflow/semantics/sql/optimizer/rewriting_sub_query_reducer.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from typing import List, Optional, Sequence, Tuple -from metricflow.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer from metricflow.semantics.sql.sql_exprs import ( SqlColumnAliasReferenceExpression, diff --git a/metricflow/semantics/sql/render/expr_renderer.py b/metricflow/semantics/sql/render/expr_renderer.py index 1236d2100b..28b29edae5 100644 --- a/metricflow/semantics/sql/render/expr_renderer.py +++ b/metricflow/semantics/sql/render/expr_renderer.py @@ -12,7 +12,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.sql.render.rendering_constants import SqlRenderingConstants from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.semantics.sql.sql_exprs import ( diff --git a/metricflow/semantics/sql/render/sql_plan_renderer.py b/metricflow/semantics/sql/render/sql_plan_renderer.py index 1e80922b7e..059c012e45 100644 --- a/metricflow/semantics/sql/render/sql_plan_renderer.py +++ b/metricflow/semantics/sql/render/sql_plan_renderer.py @@ -7,7 +7,7 @@ from string import Template from typing import List, Optional, Sequence, Tuple -from metricflow.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/telemetry/handlers/python_log.py b/metricflow/telemetry/handlers/python_log.py index a9664178e2..73058e6584 100644 --- a/metricflow/telemetry/handlers/python_log.py +++ b/metricflow/telemetry/handlers/python_log.py @@ -3,7 +3,7 @@ import logging import textwrap -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.telemetry.handlers.handlers import PayloadType, TelemetryHandler logger = logging.getLogger(__name__) diff --git a/tests/collection_helpers/test_pretty_print.py b/tests/collection_helpers/test_pretty_print.py index 5fbacf5be1..2ac424ff80 100644 --- a/tests/collection_helpers/test_pretty_print.py +++ b/tests/collection_helpers/test_pretty_print.py @@ -6,8 +6,8 @@ from dbt_semantic_interfaces.implementations.elements.dimension import PydanticDimension from dbt_semantic_interfaces.type_enums import DimensionType -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat, mf_pformat_many +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat, mf_pformat_many from tests.time.metric_time_dimension import MTD_SPEC_DAY logger = logging.getLogger(__name__) diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index f1e974379a..252a978c81 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.references import SemanticModelReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode diff --git a/tests/fixtures/sql_clients/base_sql_client_implementation.py b/tests/fixtures/sql_clients/base_sql_client_implementation.py index c1602625eb..4a1c5e5ccc 100644 --- a/tests/fixtures/sql_clients/base_sql_client_implementation.py +++ b/tests/fixtures/sql_clients/base_sql_client_implementation.py @@ -7,8 +7,8 @@ import pandas as pd -from metricflow.mf_logging.formatting import indent -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.protocols.sql_client import ( SqlClient, ) diff --git a/tests/mf_logging/test_dag_to_text.py b/tests/mf_logging/test_dag_to_text.py index b64112bb41..c4f17bf2dc 100644 --- a/tests/mf_logging/test_dag_to_text.py +++ b/tests/mf_logging/test_dag_to_text.py @@ -6,7 +6,7 @@ import time from typing import List -from metricflow.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.dag.dag_to_text import MetricFlowDagTextFormatter from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.sql.sql_exprs import ( diff --git a/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py b/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py index 0776a2a74b..c9d006e95e 100644 --- a/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py +++ b/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py @@ -20,7 +20,7 @@ from dbt_semantic_interfaces.references import MetricReference from dbt_semantic_interfaces.transformations.transform_rule import SemanticManifestTransformRule -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index de987c092e..2d9caa16fb 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -8,7 +8,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.execution.execution_plan import ExecutionPlan -from metricflow.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dag.mf_dag import MetricFlowDag from metricflow.semantics.dataflow.dataflow_plan import DataflowPlan from metricflow.semantics.model.semantics.linkable_spec_resolver import LinkableElementSet From 5de0abd9eec52e64344b5f9a85ec1e7d7eff1fc4 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 16:24:06 -0700 Subject: [PATCH 28/80] Move out time. --- .../cli/dbt_connectors/adapter_backed_client.py | 2 +- .../cli/dbt_connectors/dbt_config_accessor.py | 2 +- metricflow/engine/metricflow_engine.py | 6 +++--- metricflow/engine/time_source.py | 2 +- .../semantics/dataflow/builder/dataflow_plan_builder.py | 6 +++--- metricflow/semantics/dataflow/builder/node_data_set.py | 2 +- metricflow/semantics/dataflow/builder/node_evaluator.py | 2 +- metricflow/semantics/dataflow/nodes/filter_elements.py | 2 +- metricflow/semantics/filters/time_constraint.py | 2 +- .../semantics/model/semantics/linkable_spec_resolver.py | 2 +- .../model/semantics/semantic_model_join_evaluator.py | 2 +- .../semantics/model/semantics/semantic_model_lookup.py | 2 +- metricflow/semantics/plan_conversion/dataflow_to_sql.py | 4 ++-- metricflow/semantics/plan_conversion/node_processor.py | 2 +- .../filter_spec_resolution/filter_spec_lookup.py | 2 +- metricflow/semantics/query/query_parser.py | 8 ++++---- metricflow/semantics/query/query_resolution.py | 2 +- metricflow/semantics/test_helpers.py | 2 +- metricflow/{semantics => }/time/__init__.py | 0 metricflow/{semantics => }/time/time_constants.py | 0 metricflow/{semantics => }/time/time_granularity.py | 0 metricflow/{semantics => }/time/time_source.py | 0 tests/examples/test_node_sql.py | 2 +- tests/mf_logging/test_dag_to_text.py | 2 +- tests/plan_conversion/test_time_spine.py | 2 +- tests/snapshot_utils.py | 2 +- tests/sql_clients/test_date_time_operations.py | 2 +- 27 files changed, 31 insertions(+), 31 deletions(-) rename metricflow/{semantics => }/time/__init__.py (100%) rename metricflow/{semantics => }/time/time_constants.py (100%) rename metricflow/{semantics => }/time/time_granularity.py (100%) rename metricflow/{semantics => }/time/time_source.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py index 95cf333f9c..66692b3de4 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py @@ -9,9 +9,9 @@ from dbt.exceptions import DbtDatabaseError from dbt_semantic_interfaces.enum_extension import assert_values_exhausted +from metricflow.semantics.errors.error_classes import SqlBindParametersNotSupportedError from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.errors.error_classes import SqlBindParametersNotSupportedError from metricflow.semantics.protocols.sql_client import SqlEngine from metricflow.semantics.random_id import random_id from metricflow.semantics.sql.render.big_query import BigQuerySqlQueryPlanRenderer diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py index ce461a9416..9885bf7151 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py @@ -14,8 +14,8 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from typing_extensions import Self -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.errors.error_classes import ModelCreationException +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.dbt_manifest_parser import parse_manifest_from_dbt_generated_manifest logger = logging.getLogger(__name__) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 8b5a83e045..2692cc0734 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -21,8 +21,6 @@ ) from metricflow.execution.execution_plan import ExecutionPlan, SqlQuery from metricflow.execution.executor import SequentialPlanExecutor -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -36,6 +34,8 @@ from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.errors.error_classes import ExecutionException from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.model.semantics.linkable_element import ( LinkableDimension, @@ -55,9 +55,9 @@ from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec from metricflow.semantics.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.semantics.sql.sql_table import SqlTable -from metricflow.semantics.time.time_source import TimeSource from metricflow.telemetry.models import TelemetryLevel from metricflow.telemetry.reporter import TelemetryReporter, log_call +from metricflow.time.time_source import TimeSource logger = logging.getLogger(__name__) _telemetry_reporter = TelemetryReporter(report_levels_higher_or_equal_to=TelemetryLevel.USAGE) diff --git a/metricflow/engine/time_source.py b/metricflow/engine/time_source.py index 076098079a..7b021f2736 100644 --- a/metricflow/engine/time_source.py +++ b/metricflow/engine/time_source.py @@ -2,7 +2,7 @@ import datetime as dt -from metricflow.semantics.time.time_source import TimeSource +from metricflow.time.time_source import TimeSource class ServerTimeSource(TimeSource): diff --git a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py index 7a37644781..afe27e87e6 100644 --- a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py @@ -22,9 +22,6 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.mf_logging.runtime import log_runtime from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -59,6 +56,9 @@ from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.errors.error_classes import UnableToSatisfyQueryError from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.runtime import log_runtime from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation diff --git a/metricflow/semantics/dataflow/builder/node_data_set.py b/metricflow/semantics/dataflow/builder/node_data_set.py index dfb6c85d66..ed79205b79 100644 --- a/metricflow/semantics/dataflow/builder/node_data_set.py +++ b/metricflow/semantics/dataflow/builder/node_data_set.py @@ -2,11 +2,11 @@ from typing import TYPE_CHECKING, Dict, Optional, Sequence -from metricflow.semantics.mf_logging.runtime import log_block_runtime from metricflow.semantics.dataflow.dataflow_plan import ( DataflowPlanNode, ) from metricflow.semantics.dataset.sql_dataset import SqlDataSet +from metricflow.semantics.mf_logging.runtime import log_block_runtime from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/semantics/dataflow/builder/node_evaluator.py b/metricflow/semantics/dataflow/builder/node_evaluator.py index 06496d4b7e..60f1c81d4f 100644 --- a/metricflow/semantics/dataflow/builder/node_evaluator.py +++ b/metricflow/semantics/dataflow/builder/node_evaluator.py @@ -23,7 +23,6 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.partitions import ( PartitionDimensionJoinDescription, @@ -38,6 +37,7 @@ from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.instances import InstanceSet +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.plan_conversion.instance_converters import CreateValidityWindowJoinDescription diff --git a/metricflow/semantics/dataflow/nodes/filter_elements.py b/metricflow/semantics/dataflow/nodes/filter_elements.py index 9b6c8e254f..11c943af1e 100644 --- a/metricflow/semantics/dataflow/nodes/filter_elements.py +++ b/metricflow/semantics/dataflow/nodes/filter_elements.py @@ -2,10 +2,10 @@ from typing import Optional, Sequence, Tuple -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.specs.spec_classes import InstanceSpecSet from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/filters/time_constraint.py b/metricflow/semantics/filters/time_constraint.py index 00e5244816..b7a00ef6cb 100644 --- a/metricflow/semantics/filters/time_constraint.py +++ b/metricflow/semantics/filters/time_constraint.py @@ -9,7 +9,7 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.semantics.time.time_granularity import offset_period +from metricflow.time.time_granularity import offset_period logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/model/semantics/linkable_spec_resolver.py b/metricflow/semantics/model/semantics/linkable_spec_resolver.py index 91c7183b83..e8ebd0e9c7 100644 --- a/metricflow/semantics/model/semantics/linkable_spec_resolver.py +++ b/metricflow/semantics/model/semantics/linkable_spec_resolver.py @@ -19,9 +19,9 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.errors.error_classes import UnknownMetricLinkingError +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.linkable_element import ( ElementPathKey, LinkableDimension, diff --git a/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py b/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py index 37a4827be8..143a019e93 100644 --- a/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py +++ b/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py @@ -10,8 +10,8 @@ SemanticModelReference, ) -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.instances import EntityInstance, InstanceSet +from metricflow.semantics.mf_logging.pretty_print import mf_pformat if TYPE_CHECKING: from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup diff --git a/metricflow/semantics/model/semantics/semantic_model_lookup.py b/metricflow/semantics/model/semantics/semantic_model_lookup.py index 22ef62164b..3714e3ebb5 100644 --- a/metricflow/semantics/model/semantics/semantic_model_lookup.py +++ b/metricflow/semantics/model/semantics/semantic_model_lookup.py @@ -21,8 +21,8 @@ from dbt_semantic_interfaces.type_enums import DimensionType, EntityType from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.errors.error_classes import InvalidSemanticModelError +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.element_group import ElementGrouper from metricflow.semantics.model.spec_converters import MeasureConverter from metricflow.semantics.specs.spec_classes import ( diff --git a/metricflow/semantics/plan_conversion/dataflow_to_sql.py b/metricflow/semantics/plan_conversion/dataflow_to_sql.py index 1e6a5e2f69..2dd2183308 100644 --- a/metricflow/semantics/plan_conversion/dataflow_to_sql.py +++ b/metricflow/semantics/plan_conversion/dataflow_to_sql.py @@ -12,7 +12,6 @@ from dbt_semantic_interfaces.type_enums.conversion_calculation_type import ConversionCalculationType from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId @@ -50,6 +49,7 @@ MetricInstance, TimeDimensionInstance, ) +from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.semantics.plan_conversion.instance_converters import ( @@ -137,7 +137,7 @@ SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.semantics.time.time_constants import ISO8601_PYTHON_FORMAT +from metricflow.time.time_constants import ISO8601_PYTHON_FORMAT logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/plan_conversion/node_processor.py b/metricflow/semantics/plan_conversion/node_processor.py index 076aaf2d83..6fd4396da4 100644 --- a/metricflow/semantics/plan_conversion/node_processor.py +++ b/metricflow/semantics/plan_conversion/node_processor.py @@ -6,7 +6,6 @@ from dbt_semantic_interfaces.references import EntityReference, TimeDimensionReference -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.partitions import PartitionJoinResolver from metricflow.semantics.dataflow.dataflow_plan import ( @@ -17,6 +16,7 @@ from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS, SemanticModelJoinEvaluator from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec diff --git a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py index 5171d52150..c47ccb1eb6 100644 --- a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py +++ b/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py @@ -14,9 +14,9 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override +from metricflow.semantics.collection_helpers.merger import Mergeable from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.collection_helpers.merger import Mergeable from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath diff --git a/metricflow/semantics/query/query_parser.py b/metricflow/semantics/query/query_parser.py index 2f647474c6..424df96c70 100644 --- a/metricflow/semantics/query/query_parser.py +++ b/metricflow/semantics/query/query_parser.py @@ -13,12 +13,12 @@ from dbt_semantic_interfaces.protocols.where_filter import WhereFilter from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.mf_logging.runtime import log_runtime from metricflow.semantics.assert_one_arg import assert_at_most_one_arg_set from metricflow.semantics.filters.merge_where import merge_to_single_where_filter from metricflow.semantics.filters.time_constraint import TimeRangeConstraint +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat +from metricflow.semantics.mf_logging.runtime import log_runtime from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme from metricflow.semantics.naming.metric_scheme import MetricNamingScheme @@ -60,7 +60,7 @@ MetricFlowQuerySpec, TimeDimensionSpec, ) -from metricflow.semantics.time.time_granularity import ( +from metricflow.time.time_granularity import ( adjust_to_end_of_period, adjust_to_start_of_period, is_period_end, diff --git a/metricflow/semantics/query/query_resolution.py b/metricflow/semantics/query/query_resolution.py index a64b7c6247..417cce528e 100644 --- a/metricflow/semantics/query/query_resolution.py +++ b/metricflow/semantics/query/query_resolution.py @@ -5,8 +5,8 @@ from typing_extensions import override -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.collection_helpers.merger import Mergeable +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ) diff --git a/metricflow/semantics/test_helpers.py b/metricflow/semantics/test_helpers.py index 8aead38a48..3603bb4276 100644 --- a/metricflow/semantics/test_helpers.py +++ b/metricflow/semantics/test_helpers.py @@ -11,7 +11,7 @@ import _pytest.fixtures -from metricflow.semantics.time.time_source import TimeSource +from metricflow.time.time_source import TimeSource logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/time/__init__.py b/metricflow/time/__init__.py similarity index 100% rename from metricflow/semantics/time/__init__.py rename to metricflow/time/__init__.py diff --git a/metricflow/semantics/time/time_constants.py b/metricflow/time/time_constants.py similarity index 100% rename from metricflow/semantics/time/time_constants.py rename to metricflow/time/time_constants.py diff --git a/metricflow/semantics/time/time_granularity.py b/metricflow/time/time_granularity.py similarity index 100% rename from metricflow/semantics/time/time_granularity.py rename to metricflow/time/time_granularity.py diff --git a/metricflow/semantics/time/time_source.py b/metricflow/time/time_source.py similarity index 100% rename from metricflow/semantics/time/time_source.py rename to metricflow/time/time_source.py diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index 252a978c81..308e4e4021 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -6,12 +6,12 @@ from dbt_semantic_interfaces.references import SemanticModelReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter diff --git a/tests/mf_logging/test_dag_to_text.py b/tests/mf_logging/test_dag_to_text.py index c4f17bf2dc..08f3513cfe 100644 --- a/tests/mf_logging/test_dag_to_text.py +++ b/tests/mf_logging/test_dag_to_text.py @@ -6,9 +6,9 @@ import time from typing import List -from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.dag.dag_to_text import MetricFlowDagTextFormatter from metricflow.semantics.dag.mf_dag import DagId +from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.sql.sql_exprs import ( SqlStringExpression, ) diff --git a/tests/plan_conversion/test_time_spine.py b/tests/plan_conversion/test_time_spine.py index a3a02aa072..34e56faa96 100644 --- a/tests/plan_conversion/test_time_spine.py +++ b/tests/plan_conversion/test_time_spine.py @@ -5,7 +5,7 @@ from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.semantics.time.time_constants import ISO8601_PYTHON_TS_FORMAT +from metricflow.time.time_constants import ISO8601_PYTHON_TS_FORMAT def test_date_spine_date_range( # noqa: D103 diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index 2d9caa16fb..0fb8239a95 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -8,9 +8,9 @@ from _pytest.fixtures import FixtureRequest from metricflow.execution.execution_plan import ExecutionPlan -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.dag.mf_dag import MetricFlowDag from metricflow.semantics.dataflow.dataflow_plan import DataflowPlan +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.linkable_spec_resolver import LinkableElementSet from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine diff --git a/tests/sql_clients/test_date_time_operations.py b/tests/sql_clients/test_date_time_operations.py index e8954fc21b..de441c5cc7 100644 --- a/tests/sql_clients/test_date_time_operations.py +++ b/tests/sql_clients/test_date_time_operations.py @@ -30,7 +30,7 @@ SqlExtractExpression, SqlStringLiteralExpression, ) -from metricflow.semantics.time.time_granularity import TimeGranularity +from metricflow.time.time_granularity import TimeGranularity logger = logging.getLogger(__name__) From be48a6d87388bb8007d965aaa829f762da1d98b0 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 16:28:11 -0700 Subject: [PATCH 29/80] Move out sql. --- .../dbt_connectors/adapter_backed_client.py | 18 +++++++++--------- metricflow/engine/metricflow_engine.py | 4 ++-- .../execution/convert_to_execution_plan.py | 2 +- metricflow/execution/dataflow_to_execution.py | 2 +- metricflow/execution/execution_plan.py | 4 ++-- metricflow/inference/context/data_warehouse.py | 4 ++-- metricflow/inference/context/snowflake.py | 4 ++-- metricflow/inference/models.py | 2 +- metricflow/inference/renderer/config_file.py | 2 +- metricflow/inference/renderer/stream.py | 2 +- metricflow/inference/runner.py | 2 +- metricflow/inference/solver/base.py | 2 +- metricflow/inference/solver/weighted_tree.py | 2 +- .../dataflow/builder/dataflow_plan_builder.py | 4 ++-- .../dataflow/builder/node_evaluator.py | 2 +- .../semantics/dataflow/nodes/join_to_base.py | 2 +- .../dataflow/nodes/join_to_time_spine.py | 2 +- .../semantics/dataflow/nodes/write_to_table.py | 2 +- .../dataset/convert_semantic_model.py | 6 +++--- .../dataset/semantic_model_adapter.py | 2 +- metricflow/semantics/dataset/sql_dataset.py | 2 +- .../model/data_warehouse_model_validator.py | 2 +- .../model/semantic_manifest_lookup.py | 2 +- .../plan_conversion/convert_to_sql_plan.py | 2 +- .../plan_conversion/dataflow_to_sql.py | 6 +++--- .../plan_conversion/instance_converters.py | 4 ++-- .../plan_conversion/node_processor.py | 2 +- .../plan_conversion/select_column_gen.py | 2 +- .../plan_conversion/spec_transforms.py | 2 +- .../plan_conversion/sql_expression_builders.py | 2 +- .../plan_conversion/sql_join_builder.py | 4 ++-- .../semantics/plan_conversion/time_spine.py | 2 +- metricflow/semantics/protocols/sql_client.py | 4 ++-- metricflow/semantics/specs/spec_classes.py | 6 +++--- .../semantics/specs/where_filter_transform.py | 2 +- metricflow/{semantics => }/sql/__init__.py | 0 .../{semantics => }/sql/optimizer/__init__.py | 0 .../sql/optimizer/column_pruner.py | 6 +++--- .../sql/optimizer/optimization_levels.py | 10 +++++----- .../optimizer/rewriting_sub_query_reducer.py | 6 +++--- .../sql/optimizer/sql_query_plan_optimizer.py | 2 +- .../sql/optimizer/sub_query_reducer.py | 6 +++--- .../sql/optimizer/table_alias_simplifier.py | 4 ++-- .../{semantics => }/sql/render/__init__.py | 0 .../{semantics => }/sql/render/big_query.py | 10 +++++----- .../{semantics => }/sql/render/databricks.py | 6 +++--- .../sql/render/duckdb_renderer.py | 8 ++++---- .../sql/render/expr_renderer.py | 8 ++++---- .../{semantics => }/sql/render/postgres.py | 8 ++++---- .../{semantics => }/sql/render/redshift.py | 8 ++++---- .../sql/render/rendering_constants.py | 0 .../{semantics => }/sql/render/snowflake.py | 8 ++++---- .../sql/render/sql_plan_renderer.py | 8 ++++---- metricflow/{semantics => }/sql/render/trino.py | 8 ++++---- .../{semantics => }/sql/sql_bind_parameters.py | 2 +- metricflow/{semantics => }/sql/sql_column.py | 2 +- .../{semantics => }/sql/sql_column_type.py | 0 metricflow/{semantics => }/sql/sql_exprs.py | 2 +- metricflow/{semantics => }/sql/sql_plan.py | 4 ++-- metricflow/{semantics => }/sql/sql_table.py | 0 tests/dataflow/builder/test_node_data_set.py | 6 +++--- tests/dataflow/builder/test_node_evaluator.py | 2 +- tests/dataflow/test_sql_column.py | 4 ++-- tests/dataflow/test_sql_table.py | 2 +- tests/examples/test_node_sql.py | 4 ++-- tests/execution/test_tasks.py | 4 ++-- .../sql_clients/adapter_backed_ddl_client.py | 2 +- .../base_sql_client_implementation.py | 4 ++-- tests/fixtures/sql_clients/ddl_sql_client.py | 2 +- .../fixtures/sql_clients/sqlalchemy_dialect.py | 4 ++-- tests/fixtures/sql_fixtures.py | 2 +- tests/inference/context/test_data_warehouse.py | 4 ++-- tests/inference/context/test_snowflake.py | 4 ++-- tests/inference/renderer/test_config_file.py | 2 +- tests/inference/rule/conftest.py | 4 ++-- tests/inference/rule/test_defaults.py | 4 ++-- tests/inference/rule/test_rules.py | 4 ++-- tests/inference/solver/test_weighted_tree.py | 2 +- tests/integration/test_configured_cases.py | 8 ++++---- tests/mf_logging/test_dag_to_text.py | 6 +++--- tests/model/test_data_warehouse_tasks.py | 2 +- ..._select_columns_with_measures_aggregated.py | 2 +- .../test_dataflow_to_execution.py | 2 +- .../test_dataflow_to_sql_plan.py | 6 +++--- .../query_rendering/compare_rendered_query.py | 2 +- tests/sql/compare_sql_plan.py | 4 ++-- tests/sql/optimizer/test_column_pruner.py | 10 +++++----- .../test_rewriting_sub_query_reducer.py | 8 ++++---- tests/sql/optimizer/test_sub_query_reducer.py | 8 ++++---- .../optimizer/test_table_alias_simplifier.py | 10 +++++----- tests/sql/test_bind_parameter_serialization.py | 2 +- tests/sql/test_engine_specific_rendering.py | 6 +++--- tests/sql/test_sql_expr_render.py | 4 ++-- tests/sql/test_sql_plan_render.py | 6 +++--- tests/sql_clients/test_date_time_operations.py | 2 +- tests/sql_clients/test_sql_client.py | 4 ++-- tests/table_snapshot/table_snapshots.py | 2 +- tests/table_snapshot/test_source_schema.py | 2 +- 98 files changed, 193 insertions(+), 193 deletions(-) rename metricflow/{semantics => }/sql/__init__.py (100%) rename metricflow/{semantics => }/sql/optimizer/__init__.py (100%) rename metricflow/{semantics => }/sql/optimizer/column_pruner.py (98%) rename metricflow/{semantics => }/sql/optimizer/optimization_levels.py (75%) rename metricflow/{semantics => }/sql/optimizer/rewriting_sub_query_reducer.py (99%) rename metricflow/{semantics => }/sql/optimizer/sql_query_plan_optimizer.py (85%) rename metricflow/{semantics => }/sql/optimizer/sub_query_reducer.py (97%) rename metricflow/{semantics => }/sql/optimizer/table_alias_simplifier.py (96%) rename metricflow/{semantics => }/sql/render/__init__.py (100%) rename metricflow/{semantics => }/sql/render/big_query.py (95%) rename metricflow/{semantics => }/sql/render/databricks.py (92%) rename metricflow/{semantics => }/sql/render/duckdb_renderer.py (92%) rename metricflow/{semantics => }/sql/render/expr_renderer.py (98%) rename metricflow/{semantics => }/sql/render/postgres.py (93%) rename metricflow/{semantics => }/sql/render/redshift.py (94%) rename metricflow/{semantics => }/sql/render/rendering_constants.py (100%) rename metricflow/{semantics => }/sql/render/snowflake.py (92%) rename metricflow/{semantics => }/sql/render/sql_plan_renderer.py (97%) rename metricflow/{semantics => }/sql/render/trino.py (94%) rename metricflow/{semantics => }/sql/sql_bind_parameters.py (98%) rename metricflow/{semantics => }/sql/sql_column.py (96%) rename metricflow/{semantics => }/sql/sql_column_type.py (100%) rename metricflow/{semantics => }/sql/sql_exprs.py (99%) rename metricflow/{semantics => }/sql/sql_plan.py (98%) rename metricflow/{semantics => }/sql/sql_table.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py index 66692b3de4..2ce4116106 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py @@ -14,15 +14,15 @@ from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.protocols.sql_client import SqlEngine from metricflow.semantics.random_id import random_id -from metricflow.semantics.sql.render.big_query import BigQuerySqlQueryPlanRenderer -from metricflow.semantics.sql.render.databricks import DatabricksSqlQueryPlanRenderer -from metricflow.semantics.sql.render.duckdb_renderer import DuckDbSqlQueryPlanRenderer -from metricflow.semantics.sql.render.postgres import PostgresSQLSqlQueryPlanRenderer -from metricflow.semantics.sql.render.redshift import RedshiftSqlQueryPlanRenderer -from metricflow.semantics.sql.render.snowflake import SnowflakeSqlQueryPlanRenderer -from metricflow.semantics.sql.render.sql_plan_renderer import SqlQueryPlanRenderer -from metricflow.semantics.sql.render.trino import TrinoSqlQueryPlanRenderer -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.render.big_query import BigQuerySqlQueryPlanRenderer +from metricflow.sql.render.databricks import DatabricksSqlQueryPlanRenderer +from metricflow.sql.render.duckdb_renderer import DuckDbSqlQueryPlanRenderer +from metricflow.sql.render.postgres import PostgresSQLSqlQueryPlanRenderer +from metricflow.sql.render.redshift import RedshiftSqlQueryPlanRenderer +from metricflow.sql.render.snowflake import SnowflakeSqlQueryPlanRenderer +from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer +from metricflow.sql.render.trino import TrinoSqlQueryPlanRenderer +from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql_request.sql_request_attributes import SqlRequestId logger = logging.getLogger(__name__) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 2692cc0734..85b675ec1e 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -53,8 +53,8 @@ from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.query_param_implementations import SavedQueryParameter from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec -from metricflow.semantics.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel +from metricflow.sql.sql_table import SqlTable from metricflow.telemetry.models import TelemetryLevel from metricflow.telemetry.reporter import TelemetryReporter, log_call from metricflow.time.time_source import TimeSource diff --git a/metricflow/execution/convert_to_execution_plan.py b/metricflow/execution/convert_to_execution_plan.py index 8099c9d277..39de7e3054 100644 --- a/metricflow/execution/convert_to_execution_plan.py +++ b/metricflow/execution/convert_to_execution_plan.py @@ -4,7 +4,7 @@ from metricflow.execution.execution_plan import ExecutionPlan from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult -from metricflow.semantics.sql.render.sql_plan_renderer import SqlPlanRenderResult +from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult @dataclass(frozen=True) diff --git a/metricflow/execution/dataflow_to_execution.py b/metricflow/execution/dataflow_to_execution.py index 921300f180..f8544be437 100644 --- a/metricflow/execution/dataflow_to_execution.py +++ b/metricflow/execution/dataflow_to_execution.py @@ -20,7 +20,7 @@ from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.semantics.sql.render.sql_plan_renderer import SqlPlanRenderResult, SqlQueryPlanRenderer +from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult, SqlQueryPlanRenderer logger = logging.getLogger(__name__) diff --git a/metricflow/execution/execution_plan.py b/metricflow/execution/execution_plan.py index a5192b6a1e..67cef239af 100644 --- a/metricflow/execution/execution_plan.py +++ b/metricflow/execution/execution_plan.py @@ -11,9 +11,9 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_table import SqlTable from metricflow.semantics.visitor import Visitable +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/inference/context/data_warehouse.py b/metricflow/inference/context/data_warehouse.py index 840b4452c8..4ab841bc60 100644 --- a/metricflow/inference/context/data_warehouse.py +++ b/metricflow/inference/context/data_warehouse.py @@ -9,8 +9,8 @@ from metricflow.inference.context.base import InferenceContext, InferenceContextProvider from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.semantics.sql.sql_column import SqlColumn -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_column import SqlColumn +from metricflow.sql.sql_table import SqlTable T = TypeVar("T", str, int, float, date, datetime) diff --git a/metricflow/inference/context/snowflake.py b/metricflow/inference/context/snowflake.py index f9b1985895..97c3684b71 100644 --- a/metricflow/inference/context/snowflake.py +++ b/metricflow/inference/context/snowflake.py @@ -8,8 +8,8 @@ InferenceColumnType, TableProperties, ) -from metricflow.semantics.sql.sql_column import SqlColumn -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_column import SqlColumn +from metricflow.sql.sql_table import SqlTable class SnowflakeInferenceContextProvider(DataWarehouseInferenceContextProvider): diff --git a/metricflow/inference/models.py b/metricflow/inference/models.py index d4f7319f9c..4d1e11870a 100644 --- a/metricflow/inference/models.py +++ b/metricflow/inference/models.py @@ -7,7 +7,7 @@ from enum import Enum from typing import List, Optional -from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.sql.sql_column import SqlColumn class InferenceSignalConfidence(Enum): diff --git a/metricflow/inference/renderer/config_file.py b/metricflow/inference/renderer/config_file.py index c550bc4aa6..d4d5461349 100644 --- a/metricflow/inference/renderer/config_file.py +++ b/metricflow/inference/renderer/config_file.py @@ -11,7 +11,7 @@ from metricflow.inference.models import InferenceResult, InferenceSignalType from metricflow.inference.renderer.base import InferenceRenderer -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable yaml = YAML() diff --git a/metricflow/inference/renderer/stream.py b/metricflow/inference/renderer/stream.py index 34211167f4..41b26e5f74 100644 --- a/metricflow/inference/renderer/stream.py +++ b/metricflow/inference/renderer/stream.py @@ -6,7 +6,7 @@ from metricflow.inference.models import InferenceResult from metricflow.inference.renderer.base import InferenceRenderer -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable class StreamInferenceRenderer(InferenceRenderer): diff --git a/metricflow/inference/runner.py b/metricflow/inference/runner.py index 3655ab19b3..ed03ee90af 100644 --- a/metricflow/inference/runner.py +++ b/metricflow/inference/runner.py @@ -13,7 +13,7 @@ from metricflow.inference.renderer.base import InferenceRenderer from metricflow.inference.rule.base import InferenceRule from metricflow.inference.solver.base import InferenceSolver -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__file__) diff --git a/metricflow/inference/solver/base.py b/metricflow/inference/solver/base.py index ffe34cfc11..ddb122caac 100644 --- a/metricflow/inference/solver/base.py +++ b/metricflow/inference/solver/base.py @@ -4,7 +4,7 @@ from typing import List from metricflow.inference.models import InferenceResult, InferenceSignal -from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.sql.sql_column import SqlColumn class InferenceSolver(ABC): diff --git a/metricflow/inference/solver/weighted_tree.py b/metricflow/inference/solver/weighted_tree.py index 633fd1e9d5..7b637e2ecc 100644 --- a/metricflow/inference/solver/weighted_tree.py +++ b/metricflow/inference/solver/weighted_tree.py @@ -11,7 +11,7 @@ InferenceSignalType, ) from metricflow.inference.solver.base import InferenceSolver -from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.sql.sql_column import SqlColumn NodeWeighterFunction = Callable[[InferenceSignalConfidence], int] diff --git a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py index afe27e87e6..c8b751d1e4 100644 --- a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py @@ -86,8 +86,8 @@ WhereFilterSpec, ) from metricflow.semantics.specs.where_filter_transform import WhereSpecFactory -from metricflow.semantics.sql.sql_plan import SqlJoinType -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_plan import SqlJoinType +from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dataflow/builder/node_evaluator.py b/metricflow/semantics/dataflow/builder/node_evaluator.py index 60f1c81d4f..c89a306ec1 100644 --- a/metricflow/semantics/dataflow/builder/node_evaluator.py +++ b/metricflow/semantics/dataflow/builder/node_evaluator.py @@ -47,7 +47,7 @@ LinkableSpecSet, LinklessEntitySpec, ) -from metricflow.semantics.sql.sql_plan import SqlJoinType +from metricflow.sql.sql_plan import SqlJoinType logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dataflow/nodes/join_to_base.py b/metricflow/semantics/dataflow/nodes/join_to_base.py index a90cd795a2..fea10c2508 100644 --- a/metricflow/semantics/dataflow/nodes/join_to_base.py +++ b/metricflow/semantics/dataflow/nodes/join_to_base.py @@ -11,8 +11,8 @@ ) from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec -from metricflow.semantics.sql.sql_plan import SqlJoinType from metricflow.semantics.visitor import VisitorOutputT +from metricflow.sql.sql_plan import SqlJoinType @dataclass(frozen=True) diff --git a/metricflow/semantics/dataflow/nodes/join_to_time_spine.py b/metricflow/semantics/dataflow/nodes/join_to_time_spine.py index 4516df8664..c51d77f392 100644 --- a/metricflow/semantics/dataflow/nodes/join_to_time_spine.py +++ b/metricflow/semantics/dataflow/nodes/join_to_time_spine.py @@ -11,8 +11,8 @@ from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec -from metricflow.semantics.sql.sql_plan import SqlJoinType from metricflow.semantics.visitor import VisitorOutputT +from metricflow.sql.sql_plan import SqlJoinType class JoinToTimeSpineNode(BaseOutput, ABC): diff --git a/metricflow/semantics/dataflow/nodes/write_to_table.py b/metricflow/semantics/dataflow/nodes/write_to_table.py index 5a57bc8c74..7c644cdd9c 100644 --- a/metricflow/semantics/dataflow/nodes/write_to_table.py +++ b/metricflow/semantics/dataflow/nodes/write_to_table.py @@ -10,8 +10,8 @@ SinkNodeVisitor, SinkOutput, ) -from metricflow.semantics.sql.sql_table import SqlTable from metricflow.semantics.visitor import VisitorOutputT +from metricflow.sql.sql_table import SqlTable class WriteToResultTableNode(SinkOutput): diff --git a/metricflow/semantics/dataset/convert_semantic_model.py b/metricflow/semantics/dataset/convert_semantic_model.py index 7301e2d39b..1ce7c3edc2 100644 --- a/metricflow/semantics/dataset/convert_semantic_model.py +++ b/metricflow/semantics/dataset/convert_semantic_model.py @@ -39,7 +39,7 @@ EntitySpec, TimeDimensionSpec, ) -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, SqlDateTruncExpression, @@ -47,12 +47,12 @@ SqlExtractExpression, SqlStringExpression, ) -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dataset/semantic_model_adapter.py b/metricflow/semantics/dataset/semantic_model_adapter.py index 50b690eca5..8377d08744 100644 --- a/metricflow/semantics/dataset/semantic_model_adapter.py +++ b/metricflow/semantics/dataset/semantic_model_adapter.py @@ -5,7 +5,7 @@ from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.instances import InstanceSet -from metricflow.semantics.sql.sql_plan import SqlSelectStatementNode +from metricflow.sql.sql_plan import SqlSelectStatementNode class SemanticModelDataSet(SqlDataSet): diff --git a/metricflow/semantics/dataset/sql_dataset.py b/metricflow/semantics/dataset/sql_dataset.py index 134ecfd46d..3a3812b929 100644 --- a/metricflow/semantics/dataset/sql_dataset.py +++ b/metricflow/semantics/dataset/sql_dataset.py @@ -12,7 +12,7 @@ ) from metricflow.semantics.specs.column_assoc import ColumnAssociation from metricflow.semantics.specs.spec_classes import DimensionSpec, EntitySpec, TimeDimensionSpec -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlQueryPlanNode, SqlSelectStatementNode, ) diff --git a/metricflow/semantics/model/data_warehouse_model_validator.py b/metricflow/semantics/model/data_warehouse_model_validator.py index ba5e7c337f..3fbf38b8f6 100644 --- a/metricflow/semantics/model/data_warehouse_model_validator.py +++ b/metricflow/semantics/model/data_warehouse_model_validator.py @@ -42,7 +42,7 @@ from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_bind_parameters import SqlBindParameters @dataclass diff --git a/metricflow/semantics/model/semantic_manifest_lookup.py b/metricflow/semantics/model/semantic_manifest_lookup.py index a6cf038441..1ccbf14d02 100644 --- a/metricflow/semantics/model/semantic_manifest_lookup.py +++ b/metricflow/semantics/model/semantic_manifest_lookup.py @@ -9,7 +9,7 @@ from metricflow.semantics.model.semantics.metric_lookup import MetricLookup from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/plan_conversion/convert_to_sql_plan.py b/metricflow/semantics/plan_conversion/convert_to_sql_plan.py index c8e7e2209b..9032a83446 100644 --- a/metricflow/semantics/plan_conversion/convert_to_sql_plan.py +++ b/metricflow/semantics/plan_conversion/convert_to_sql_plan.py @@ -3,7 +3,7 @@ from dataclasses import dataclass from metricflow.semantics.instances import InstanceSet -from metricflow.semantics.sql.sql_plan import SqlQueryPlan +from metricflow.sql.sql_plan import SqlQueryPlan @dataclass(frozen=True) diff --git a/metricflow/semantics/plan_conversion/dataflow_to_sql.py b/metricflow/semantics/plan_conversion/dataflow_to_sql.py index 2dd2183308..76353987a1 100644 --- a/metricflow/semantics/plan_conversion/dataflow_to_sql.py +++ b/metricflow/semantics/plan_conversion/dataflow_to_sql.py @@ -100,11 +100,11 @@ MetricSpec, TimeDimensionSpec, ) -from metricflow.semantics.sql.optimizer.optimization_levels import ( +from metricflow.sql.optimizer.optimization_levels import ( SqlQueryOptimizationLevel, SqlQueryOptimizerConfiguration, ) -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlBetweenExpression, SqlColumnReference, @@ -126,7 +126,7 @@ SqlWindowFunctionExpression, SqlWindowOrderByArgument, ) -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlJoinType, diff --git a/metricflow/semantics/plan_conversion/instance_converters.py b/metricflow/semantics/plan_conversion/instance_converters.py index ad017c6ffd..4417884133 100644 --- a/metricflow/semantics/plan_conversion/instance_converters.py +++ b/metricflow/semantics/plan_conversion/instance_converters.py @@ -46,7 +46,7 @@ MetricInputMeasureSpec, TimeDimensionSpec, ) -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, SqlColumnReferenceExpression, @@ -55,7 +55,7 @@ SqlFunctionExpression, SqlStringExpression, ) -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlSelectColumn, ) diff --git a/metricflow/semantics/plan_conversion/node_processor.py b/metricflow/semantics/plan_conversion/node_processor.py index 6fd4396da4..3b68fba6c3 100644 --- a/metricflow/semantics/plan_conversion/node_processor.py +++ b/metricflow/semantics/plan_conversion/node_processor.py @@ -21,7 +21,7 @@ from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec from metricflow.semantics.specs.spec_set_transforms import ToElementNameSet -from metricflow.semantics.sql.sql_plan import SqlJoinType +from metricflow.sql.sql_plan import SqlJoinType logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/plan_conversion/select_column_gen.py b/metricflow/semantics/plan_conversion/select_column_gen.py index c920187e61..3d7be3fd68 100644 --- a/metricflow/semantics/plan_conversion/select_column_gen.py +++ b/metricflow/semantics/plan_conversion/select_column_gen.py @@ -4,7 +4,7 @@ from dataclasses import dataclass, field from typing import List, Tuple -from metricflow.semantics.sql.sql_plan import SqlSelectColumn +from metricflow.sql.sql_plan import SqlSelectColumn logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/plan_conversion/spec_transforms.py b/metricflow/semantics/plan_conversion/spec_transforms.py index 11eeea8c83..c2bb602989 100644 --- a/metricflow/semantics/plan_conversion/spec_transforms.py +++ b/metricflow/semantics/plan_conversion/spec_transforms.py @@ -9,7 +9,7 @@ InstanceSpecSet, InstanceSpecSetTransform, ) -from metricflow.semantics.sql.sql_plan import SqlSelectColumn +from metricflow.sql.sql_plan import SqlSelectColumn class CreateSelectCoalescedColumnsForLinkableSpecs(InstanceSpecSetTransform[SelectColumnSet]): diff --git a/metricflow/semantics/plan_conversion/sql_expression_builders.py b/metricflow/semantics/plan_conversion/sql_expression_builders.py index b6ab50a036..c3567ab163 100644 --- a/metricflow/semantics/plan_conversion/sql_expression_builders.py +++ b/metricflow/semantics/plan_conversion/sql_expression_builders.py @@ -3,7 +3,7 @@ from typing import List, Sequence -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, SqlColumnReferenceExpression, diff --git a/metricflow/semantics/plan_conversion/sql_join_builder.py b/metricflow/semantics/plan_conversion/sql_join_builder.py index 8e9ddf8f66..ef6373a5f4 100644 --- a/metricflow/semantics/plan_conversion/sql_join_builder.py +++ b/metricflow/semantics/plan_conversion/sql_join_builder.py @@ -13,7 +13,7 @@ from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.plan_conversion.sql_expression_builders import make_coalesced_expr -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, SqlComparison, @@ -24,7 +24,7 @@ SqlLogicalOperator, SqlSubtractTimeIntervalExpression, ) -from metricflow.semantics.sql.sql_plan import SqlExpressionNode, SqlJoinDescription, SqlJoinType, SqlSelectStatementNode +from metricflow.sql.sql_plan import SqlExpressionNode, SqlJoinDescription, SqlJoinType, SqlSelectStatementNode @dataclass(frozen=True) diff --git a/metricflow/semantics/plan_conversion/time_spine.py b/metricflow/semantics/plan_conversion/time_spine.py index 0dec6469da..927753a058 100644 --- a/metricflow/semantics/plan_conversion/time_spine.py +++ b/metricflow/semantics/plan_conversion/time_spine.py @@ -5,7 +5,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/protocols/sql_client.py b/metricflow/semantics/protocols/sql_client.py index aab61744aa..6f026eff21 100644 --- a/metricflow/semantics/protocols/sql_client.py +++ b/metricflow/semantics/protocols/sql_client.py @@ -6,8 +6,8 @@ from pandas import DataFrame -from metricflow.semantics.sql.render.sql_plan_renderer import SqlQueryPlanRenderer -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer +from metricflow.sql.sql_bind_parameters import SqlBindParameters class SqlEngine(Enum): diff --git a/metricflow/semantics/specs/spec_classes.py b/metricflow/semantics/specs/spec_classes.py index 4359d87bb4..9c3f12af8c 100644 --- a/metricflow/semantics/specs/spec_classes.py +++ b/metricflow/semantics/specs/spec_classes.py @@ -42,10 +42,10 @@ from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ) -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_column_type import SqlColumnType -from metricflow.semantics.sql.sql_plan import SqlJoinType from metricflow.semantics.visitor import VisitorOutputT +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_column_type import SqlColumnType +from metricflow.sql.sql_plan import SqlJoinType if TYPE_CHECKING: from metricflow.semantics.model.semantics.metric_lookup import MetricLookup diff --git a/metricflow/semantics/specs/where_filter_transform.py b/metricflow/semantics/specs/where_filter_transform.py index ef27c5cc36..5b18d35882 100644 --- a/metricflow/semantics/specs/where_filter_transform.py +++ b/metricflow/semantics/specs/where_filter_transform.py @@ -18,7 +18,7 @@ from metricflow.semantics.specs.where_filter_entity import WhereFilterEntityFactory from metricflow.semantics.specs.where_filter_metric import WhereFilterMetricFactory from metricflow.semantics.specs.where_filter_time_dimension import WhereFilterTimeDimensionFactory -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_bind_parameters import SqlBindParameters logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/sql/__init__.py b/metricflow/sql/__init__.py similarity index 100% rename from metricflow/semantics/sql/__init__.py rename to metricflow/sql/__init__.py diff --git a/metricflow/semantics/sql/optimizer/__init__.py b/metricflow/sql/optimizer/__init__.py similarity index 100% rename from metricflow/semantics/sql/optimizer/__init__.py rename to metricflow/sql/optimizer/__init__.py diff --git a/metricflow/semantics/sql/optimizer/column_pruner.py b/metricflow/sql/optimizer/column_pruner.py similarity index 98% rename from metricflow/semantics/sql/optimizer/column_pruner.py rename to metricflow/sql/optimizer/column_pruner.py index 7892a50e67..75c62ca7b8 100644 --- a/metricflow/semantics/sql/optimizer/column_pruner.py +++ b/metricflow/sql/optimizer/column_pruner.py @@ -4,11 +4,11 @@ from collections import defaultdict from typing import Dict, List, Set, Tuple -from metricflow.semantics.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer +from metricflow.sql.sql_exprs import ( SqlExpressionTreeLineage, ) -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlQueryPlanNode, diff --git a/metricflow/semantics/sql/optimizer/optimization_levels.py b/metricflow/sql/optimizer/optimization_levels.py similarity index 75% rename from metricflow/semantics/sql/optimizer/optimization_levels.py rename to metricflow/sql/optimizer/optimization_levels.py index 5ded812861..2355ca53ff 100644 --- a/metricflow/semantics/sql/optimizer/optimization_levels.py +++ b/metricflow/sql/optimizer/optimization_levels.py @@ -3,11 +3,11 @@ from enum import Enum from typing import Sequence -from metricflow.semantics.sql.optimizer.column_pruner import SqlColumnPrunerOptimizer -from metricflow.semantics.sql.optimizer.rewriting_sub_query_reducer import SqlRewritingSubQueryReducer -from metricflow.semantics.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer -from metricflow.semantics.sql.optimizer.sub_query_reducer import SqlSubQueryReducer -from metricflow.semantics.sql.optimizer.table_alias_simplifier import SqlTableAliasSimplifier +from metricflow.sql.optimizer.column_pruner import SqlColumnPrunerOptimizer +from metricflow.sql.optimizer.rewriting_sub_query_reducer import SqlRewritingSubQueryReducer +from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer +from metricflow.sql.optimizer.sub_query_reducer import SqlSubQueryReducer +from metricflow.sql.optimizer.table_alias_simplifier import SqlTableAliasSimplifier class SqlQueryOptimizationLevel(Enum): diff --git a/metricflow/semantics/sql/optimizer/rewriting_sub_query_reducer.py b/metricflow/sql/optimizer/rewriting_sub_query_reducer.py similarity index 99% rename from metricflow/semantics/sql/optimizer/rewriting_sub_query_reducer.py rename to metricflow/sql/optimizer/rewriting_sub_query_reducer.py index b93789ce55..49eb9abf66 100644 --- a/metricflow/semantics/sql/optimizer/rewriting_sub_query_reducer.py +++ b/metricflow/sql/optimizer/rewriting_sub_query_reducer.py @@ -5,8 +5,8 @@ from typing import List, Optional, Sequence, Tuple from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer +from metricflow.sql.sql_exprs import ( SqlColumnAliasReferenceExpression, SqlColumnReference, SqlColumnReplacements, @@ -15,7 +15,7 @@ SqlLogicalExpression, SqlLogicalOperator, ) -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlOrderByDescription, diff --git a/metricflow/semantics/sql/optimizer/sql_query_plan_optimizer.py b/metricflow/sql/optimizer/sql_query_plan_optimizer.py similarity index 85% rename from metricflow/semantics/sql/optimizer/sql_query_plan_optimizer.py rename to metricflow/sql/optimizer/sql_query_plan_optimizer.py index bc07f3a8f1..d3140c94a9 100644 --- a/metricflow/semantics/sql/optimizer/sql_query_plan_optimizer.py +++ b/metricflow/sql/optimizer/sql_query_plan_optimizer.py @@ -2,7 +2,7 @@ from abc import ABC, abstractmethod -from metricflow.semantics.sql.sql_plan import SqlQueryPlanNode +from metricflow.sql.sql_plan import SqlQueryPlanNode class SqlQueryPlanOptimizer(ABC): diff --git a/metricflow/semantics/sql/optimizer/sub_query_reducer.py b/metricflow/sql/optimizer/sub_query_reducer.py similarity index 97% rename from metricflow/semantics/sql/optimizer/sub_query_reducer.py rename to metricflow/sql/optimizer/sub_query_reducer.py index 70ec4e2b15..be649142ff 100644 --- a/metricflow/semantics/sql/optimizer/sub_query_reducer.py +++ b/metricflow/sql/optimizer/sub_query_reducer.py @@ -3,9 +3,9 @@ import logging from typing import List, Optional -from metricflow.semantics.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer -from metricflow.semantics.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer +from metricflow.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression +from metricflow.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlOrderByDescription, diff --git a/metricflow/semantics/sql/optimizer/table_alias_simplifier.py b/metricflow/sql/optimizer/table_alias_simplifier.py similarity index 96% rename from metricflow/semantics/sql/optimizer/table_alias_simplifier.py rename to metricflow/sql/optimizer/table_alias_simplifier.py index 51191e66fc..cc83cd9b81 100644 --- a/metricflow/semantics/sql/optimizer/table_alias_simplifier.py +++ b/metricflow/sql/optimizer/table_alias_simplifier.py @@ -2,8 +2,8 @@ import logging -from metricflow.semantics.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer +from metricflow.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlOrderByDescription, diff --git a/metricflow/semantics/sql/render/__init__.py b/metricflow/sql/render/__init__.py similarity index 100% rename from metricflow/semantics/sql/render/__init__.py rename to metricflow/sql/render/__init__.py diff --git a/metricflow/semantics/sql/render/big_query.py b/metricflow/sql/render/big_query.py similarity index 95% rename from metricflow/semantics/sql/render/big_query.py rename to metricflow/sql/render/big_query.py index 6becf38d49..58d8e76c13 100644 --- a/metricflow/semantics/sql/render/big_query.py +++ b/metricflow/sql/render/big_query.py @@ -9,14 +9,14 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.semantics.sql.render.expr_renderer import ( +from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlDateTruncExpression, SqlExtractExpression, @@ -25,7 +25,7 @@ SqlPercentileFunctionType, SqlSubtractTimeIntervalExpression, ) -from metricflow.semantics.sql.sql_plan import SqlSelectColumn +from metricflow.sql.sql_plan import SqlSelectColumn class BigQuerySqlExpressionRenderer(DefaultSqlExpressionRenderer): diff --git a/metricflow/semantics/sql/render/databricks.py b/metricflow/sql/render/databricks.py similarity index 92% rename from metricflow/semantics/sql/render/databricks.py rename to metricflow/sql/render/databricks.py index eab27a51ee..5a44de1e8b 100644 --- a/metricflow/semantics/sql/render/databricks.py +++ b/metricflow/sql/render/databricks.py @@ -7,13 +7,13 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.semantics.sql.render.expr_renderer import ( +from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.semantics.sql.sql_exprs import SqlPercentileExpression, SqlPercentileFunctionType +from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.sql.sql_exprs import SqlPercentileExpression, SqlPercentileFunctionType class DatabricksSqlExpressionRenderer(DefaultSqlExpressionRenderer): diff --git a/metricflow/semantics/sql/render/duckdb_renderer.py b/metricflow/sql/render/duckdb_renderer.py similarity index 92% rename from metricflow/semantics/sql/render/duckdb_renderer.py rename to metricflow/sql/render/duckdb_renderer.py index 0ba1d9bbb0..451fb05398 100644 --- a/metricflow/semantics/sql/render/duckdb_renderer.py +++ b/metricflow/sql/render/duckdb_renderer.py @@ -6,14 +6,14 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.semantics.sql.render.expr_renderer import ( +from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_exprs import ( SqlGenerateUuidExpression, SqlPercentileExpression, SqlPercentileFunctionType, diff --git a/metricflow/semantics/sql/render/expr_renderer.py b/metricflow/sql/render/expr_renderer.py similarity index 98% rename from metricflow/semantics/sql/render/expr_renderer.py rename to metricflow/sql/render/expr_renderer.py index 28b29edae5..3f699f2516 100644 --- a/metricflow/semantics/sql/render/expr_renderer.py +++ b/metricflow/sql/render/expr_renderer.py @@ -13,9 +13,9 @@ from typing_extensions import override from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.sql.render.rendering_constants import SqlRenderingConstants -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.render.rendering_constants import SqlRenderingConstants +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlBetweenExpression, SqlCastToTimestampExpression, @@ -39,7 +39,7 @@ SqlSubtractTimeIntervalExpression, SqlWindowFunctionExpression, ) -from metricflow.semantics.sql.sql_plan import SqlSelectColumn +from metricflow.sql.sql_plan import SqlSelectColumn logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/sql/render/postgres.py b/metricflow/sql/render/postgres.py similarity index 93% rename from metricflow/semantics/sql/render/postgres.py rename to metricflow/sql/render/postgres.py index 31ba8c02d2..cce02295b4 100644 --- a/metricflow/semantics/sql/render/postgres.py +++ b/metricflow/sql/render/postgres.py @@ -7,14 +7,14 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.semantics.sql.render.expr_renderer import ( +from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_exprs import ( SqlGenerateUuidExpression, SqlPercentileExpression, SqlPercentileFunctionType, diff --git a/metricflow/semantics/sql/render/redshift.py b/metricflow/sql/render/redshift.py similarity index 94% rename from metricflow/semantics/sql/render/redshift.py rename to metricflow/sql/render/redshift.py index ebbb63bbd0..e971bc2b1f 100644 --- a/metricflow/semantics/sql/render/redshift.py +++ b/metricflow/sql/render/redshift.py @@ -7,14 +7,14 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.semantics.sql.render.expr_renderer import ( +from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_exprs import ( SqlExtractExpression, SqlGenerateUuidExpression, SqlPercentileExpression, diff --git a/metricflow/semantics/sql/render/rendering_constants.py b/metricflow/sql/render/rendering_constants.py similarity index 100% rename from metricflow/semantics/sql/render/rendering_constants.py rename to metricflow/sql/render/rendering_constants.py diff --git a/metricflow/semantics/sql/render/snowflake.py b/metricflow/sql/render/snowflake.py similarity index 92% rename from metricflow/semantics/sql/render/snowflake.py rename to metricflow/sql/render/snowflake.py index 9dfba14be4..12edaacf4f 100644 --- a/metricflow/semantics/sql/render/snowflake.py +++ b/metricflow/sql/render/snowflake.py @@ -7,14 +7,14 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.semantics.sql.render.expr_renderer import ( +from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_exprs import ( SqlGenerateUuidExpression, SqlPercentileExpression, SqlPercentileFunctionType, diff --git a/metricflow/semantics/sql/render/sql_plan_renderer.py b/metricflow/sql/render/sql_plan_renderer.py similarity index 97% rename from metricflow/semantics/sql/render/sql_plan_renderer.py rename to metricflow/sql/render/sql_plan_renderer.py index 059c012e45..c5618aee8c 100644 --- a/metricflow/semantics/sql/render/sql_plan_renderer.py +++ b/metricflow/sql/render/sql_plan_renderer.py @@ -8,14 +8,14 @@ from typing import List, Optional, Sequence, Tuple from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.sql.render.expr_renderer import ( +from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.semantics.sql.render.rendering_constants import SqlRenderingConstants -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.render.rendering_constants import SqlRenderingConstants +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlQueryPlan, diff --git a/metricflow/semantics/sql/render/trino.py b/metricflow/sql/render/trino.py similarity index 94% rename from metricflow/semantics/sql/render/trino.py rename to metricflow/sql/render/trino.py index 1876084ec7..b767240f21 100644 --- a/metricflow/semantics/sql/render/trino.py +++ b/metricflow/sql/render/trino.py @@ -8,14 +8,14 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.semantics.sql.render.expr_renderer import ( +from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) -from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_exprs import ( SqlBetweenExpression, SqlGenerateUuidExpression, SqlPercentileExpression, diff --git a/metricflow/semantics/sql/sql_bind_parameters.py b/metricflow/sql/sql_bind_parameters.py similarity index 98% rename from metricflow/semantics/sql/sql_bind_parameters.py rename to metricflow/sql/sql_bind_parameters.py index 337a763f60..cd61b50da5 100644 --- a/metricflow/semantics/sql/sql_bind_parameters.py +++ b/metricflow/sql/sql_bind_parameters.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set -from metricflow.semantics.sql.sql_column_type import SqlColumnType +from metricflow.sql.sql_column_type import SqlColumnType @dataclass(frozen=True) diff --git a/metricflow/semantics/sql/sql_column.py b/metricflow/sql/sql_column.py similarity index 96% rename from metricflow/semantics/sql/sql_column.py rename to metricflow/sql/sql_column.py index 9cd63b434a..673ce764fc 100644 --- a/metricflow/semantics/sql/sql_column.py +++ b/metricflow/sql/sql_column.py @@ -3,7 +3,7 @@ from dataclasses import dataclass from typing import Optional -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable @dataclass(frozen=True, order=True) diff --git a/metricflow/semantics/sql/sql_column_type.py b/metricflow/sql/sql_column_type.py similarity index 100% rename from metricflow/semantics/sql/sql_column_type.py rename to metricflow/sql/sql_column_type.py diff --git a/metricflow/semantics/sql/sql_exprs.py b/metricflow/sql/sql_exprs.py similarity index 99% rename from metricflow/semantics/sql/sql_exprs.py rename to metricflow/sql/sql_exprs.py index eab2789667..f1384f49bd 100644 --- a/metricflow/semantics/sql/sql_exprs.py +++ b/metricflow/sql/sql_exprs.py @@ -17,8 +17,8 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagNode, DisplayedProperty, NodeId -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.semantics.visitor import Visitable, VisitorOutputT +from metricflow.sql.sql_bind_parameters import SqlBindParameters class SqlExpressionNode(DagNode, Visitable, ABC): diff --git a/metricflow/semantics/sql/sql_plan.py b/metricflow/sql/sql_plan.py similarity index 98% rename from metricflow/semantics/sql/sql_plan.py rename to metricflow/sql/sql_plan.py index cd68f3319a..1a02ec2836 100644 --- a/metricflow/semantics/sql/sql_plan.py +++ b/metricflow/sql/sql_plan.py @@ -12,9 +12,9 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId -from metricflow.semantics.sql.sql_exprs import SqlExpressionNode -from metricflow.semantics.sql.sql_table import SqlTable from metricflow.semantics.visitor import VisitorOutputT +from metricflow.sql.sql_exprs import SqlExpressionNode +from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/sql/sql_table.py b/metricflow/sql/sql_table.py similarity index 100% rename from metricflow/semantics/sql/sql_table.py rename to metricflow/sql/sql_table.py diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index a7cf5ecb87..c30d1c20d2 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -23,14 +23,14 @@ LinklessEntitySpec, MeasureSpec, ) -from metricflow.semantics.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression +from metricflow.sql.sql_plan import ( SqlJoinType, SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_spec_set_snapshot_equal diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index e0143bf938..c993a1cad7 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -27,7 +27,7 @@ LinklessEntitySpec, TimeDimensionSpec, ) -from metricflow.semantics.sql.sql_plan import SqlJoinType +from metricflow.sql.sql_plan import SqlJoinType from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup logger = logging.getLogger(__name__) diff --git a/tests/dataflow/test_sql_column.py b/tests/dataflow/test_sql_column.py index 0faa2d0263..dbe560ef0d 100644 --- a/tests/dataflow/test_sql_column.py +++ b/tests/dataflow/test_sql_column.py @@ -1,7 +1,7 @@ from __future__ import annotations -from metricflow.semantics.sql.sql_column import SqlColumn -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_column import SqlColumn +from metricflow.sql.sql_table import SqlTable def test_sql_column() -> None: # noqa: D103 diff --git a/tests/dataflow/test_sql_table.py b/tests/dataflow/test_sql_table.py index 364b83a739..c0b1f61ebc 100644 --- a/tests/dataflow/test_sql_table.py +++ b/tests/dataflow/test_sql_table.py @@ -2,7 +2,7 @@ import pytest -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable def test_sql_table() -> None: # noqa: D103 diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index 308e4e4021..3a5a447f80 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -17,8 +17,8 @@ from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec -from metricflow.semantics.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel -from metricflow.semantics.sql.render.sql_plan_renderer import SqlQueryPlanRenderer +from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel +from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer logger = logging.getLogger(__name__) diff --git a/tests/execution/test_tasks.py b/tests/execution/test_tasks.py index da4ecac77b..857573926f 100644 --- a/tests/execution/test_tasks.py +++ b/tests/execution/test_tasks.py @@ -11,8 +11,8 @@ from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.random_id import random_id -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/fixtures/sql_clients/adapter_backed_ddl_client.py b/tests/fixtures/sql_clients/adapter_backed_ddl_client.py index 6687cac1d8..9bf7e322c0 100644 --- a/tests/fixtures/sql_clients/adapter_backed_ddl_client.py +++ b/tests/fixtures/sql_clients/adapter_backed_ddl_client.py @@ -8,7 +8,7 @@ from dbt_metricflow.cli.dbt_connectors.adapter_backed_client import AdapterBackedSqlClient from metricflow.semantics.protocols.sql_client import SqlEngine -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/tests/fixtures/sql_clients/base_sql_client_implementation.py b/tests/fixtures/sql_clients/base_sql_client_implementation.py index 4a1c5e5ccc..c7407951d9 100644 --- a/tests/fixtures/sql_clients/base_sql_client_implementation.py +++ b/tests/fixtures/sql_clients/base_sql_client_implementation.py @@ -13,8 +13,8 @@ SqlClient, ) from metricflow.semantics.random_id import random_id -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_table import SqlTable from metricflow.sql_request.sql_request_attributes import SqlRequestId logger = logging.getLogger(__name__) diff --git a/tests/fixtures/sql_clients/ddl_sql_client.py b/tests/fixtures/sql_clients/ddl_sql_client.py index 9cec591cfc..da3570bd06 100644 --- a/tests/fixtures/sql_clients/ddl_sql_client.py +++ b/tests/fixtures/sql_clients/ddl_sql_client.py @@ -6,7 +6,7 @@ from pandas import DataFrame from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable class SqlClientWithDDLMethods(SqlClient, Protocol): diff --git a/tests/fixtures/sql_clients/sqlalchemy_dialect.py b/tests/fixtures/sql_clients/sqlalchemy_dialect.py index cd60cd79a3..885d5726c7 100644 --- a/tests/fixtures/sql_clients/sqlalchemy_dialect.py +++ b/tests/fixtures/sql_clients/sqlalchemy_dialect.py @@ -9,8 +9,8 @@ import pandas as pd import sqlalchemy -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_table import SqlTable from tests.fixtures.sql_clients.base_sql_client_implementation import BaseSqlClientImplementation logger = logging.getLogger(__name__) diff --git a/tests/fixtures/sql_fixtures.py b/tests/fixtures/sql_fixtures.py index 7e20f32413..91f2d4c1be 100644 --- a/tests/fixtures/sql_fixtures.py +++ b/tests/fixtures/sql_fixtures.py @@ -5,7 +5,7 @@ import pytest from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer +from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/inference/context/test_data_warehouse.py b/tests/inference/context/test_data_warehouse.py index 7b13a0b534..b481bfd213 100644 --- a/tests/inference/context/test_data_warehouse.py +++ b/tests/inference/context/test_data_warehouse.py @@ -6,8 +6,8 @@ InferenceColumnType, TableProperties, ) -from metricflow.semantics.sql.sql_column import SqlColumn -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_column import SqlColumn +from metricflow.sql.sql_table import SqlTable def test_column_properties_is_empty() -> None: diff --git a/tests/inference/context/test_snowflake.py b/tests/inference/context/test_snowflake.py index c0f7be9e47..a07264e349 100644 --- a/tests/inference/context/test_snowflake.py +++ b/tests/inference/context/test_snowflake.py @@ -12,8 +12,8 @@ TableProperties, ) from metricflow.inference.context.snowflake import SnowflakeInferenceContextProvider -from metricflow.semantics.sql.sql_column import SqlColumn -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_column import SqlColumn +from metricflow.sql.sql_table import SqlTable def test_column_type_conversion() -> None: # noqa: D103 diff --git a/tests/inference/renderer/test_config_file.py b/tests/inference/renderer/test_config_file.py index 849504cc78..ee44840244 100644 --- a/tests/inference/renderer/test_config_file.py +++ b/tests/inference/renderer/test_config_file.py @@ -10,7 +10,7 @@ from metricflow.inference.models import InferenceResult, InferenceSignalType from metricflow.inference.renderer.config_file import ConfigFileRenderer -from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.sql.sql_column import SqlColumn yaml = YAML() diff --git a/tests/inference/rule/conftest.py b/tests/inference/rule/conftest.py index c08fbf1cc5..2f2da5cb96 100644 --- a/tests/inference/rule/conftest.py +++ b/tests/inference/rule/conftest.py @@ -8,8 +8,8 @@ InferenceColumnType, TableProperties, ) -from metricflow.semantics.sql.sql_column import SqlColumn -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_column import SqlColumn +from metricflow.sql.sql_table import SqlTable @pytest.fixture diff --git a/tests/inference/rule/test_defaults.py b/tests/inference/rule/test_defaults.py index e5c3aacec4..cdcc0357fe 100644 --- a/tests/inference/rule/test_defaults.py +++ b/tests/inference/rule/test_defaults.py @@ -8,8 +8,8 @@ TableProperties, ) from metricflow.inference.models import InferenceSignalType -from metricflow.semantics.sql.sql_column import SqlColumn -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_column import SqlColumn +from metricflow.sql.sql_table import SqlTable def get_column_properties(column_str: str, type: InferenceColumnType, unique: bool) -> ColumnProperties: # noqa: D103 diff --git a/tests/inference/rule/test_rules.py b/tests/inference/rule/test_rules.py index 5331415055..ffc479d67b 100644 --- a/tests/inference/rule/test_rules.py +++ b/tests/inference/rule/test_rules.py @@ -8,8 +8,8 @@ ) from metricflow.inference.models import InferenceSignalConfidence, InferenceSignalType from metricflow.inference.rule.rules import ColumnMatcherRule, LowCardinalityRatioRule -from metricflow.semantics.sql.sql_column import SqlColumn -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_column import SqlColumn +from metricflow.sql.sql_table import SqlTable def create_context_with_counts(rows: int, distinct: int, nulls: int) -> DataWarehouseInferenceContext: diff --git a/tests/inference/solver/test_weighted_tree.py b/tests/inference/solver/test_weighted_tree.py index a9fece30a9..89ce225354 100644 --- a/tests/inference/solver/test_weighted_tree.py +++ b/tests/inference/solver/test_weighted_tree.py @@ -2,7 +2,7 @@ from metricflow.inference.models import InferenceSignal, InferenceSignalConfidence, InferenceSignalType from metricflow.inference.solver.weighted_tree import WeightedTypeTreeInferenceSolver -from metricflow.semantics.sql.sql_column import SqlColumn +from metricflow.sql.sql_column import SqlColumn column = SqlColumn.from_string("db.schema.table.col") solver = WeightedTypeTreeInferenceSolver() diff --git a/tests/integration/test_configured_cases.py b/tests/integration/test_configured_cases.py index 33744014b6..1380d12fa6 100644 --- a/tests/integration/test_configured_cases.py +++ b/tests/integration/test_configured_cases.py @@ -22,7 +22,10 @@ from metricflow.semantics.protocols.query_parameter import DimensionOrEntityQueryParameter from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.semantics.test_helpers import ( + ConfigurableTimeSource, +) +from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlColumnReference, SqlColumnReferenceExpression, @@ -35,9 +38,6 @@ SqlStringExpression, SqlSubtractTimeIntervalExpression, ) -from metricflow.semantics.test_helpers import ( - ConfigurableTimeSource, -) from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.configured_test_case import ( diff --git a/tests/mf_logging/test_dag_to_text.py b/tests/mf_logging/test_dag_to_text.py index 08f3513cfe..134a31b3b4 100644 --- a/tests/mf_logging/test_dag_to_text.py +++ b/tests/mf_logging/test_dag_to_text.py @@ -9,16 +9,16 @@ from metricflow.semantics.dag.dag_to_text import MetricFlowDagTextFormatter from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.sql_exprs import ( SqlStringExpression, ) -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlQueryPlan, SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/tests/model/test_data_warehouse_tasks.py b/tests/model/test_data_warehouse_tasks.py index bb952b7db0..10cb0653ac 100644 --- a/tests/model/test_data_warehouse_tasks.py +++ b/tests/model/test_data_warehouse_tasks.py @@ -21,7 +21,7 @@ DataWarehouseValidationTask, ) from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_bind_parameters import SqlBindParameters from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import ( assert_sql_snapshot_equal, diff --git a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py index 88a6f52d71..0e39e025fc 100644 --- a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py +++ b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py @@ -11,7 +11,7 @@ ) from metricflow.semantics.plan_conversion.select_column_gen import SelectColumnSet from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec, MetricInputMeasureSpec -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlFunction, SqlPercentileExpression, diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index d84df1c3ad..4f1e3a9575 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -16,7 +16,7 @@ MetricSpec, TimeDimensionSpec, ) -from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_execution_plan_text_equal diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index fd8368aa5e..09bd155aa0 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -47,9 +47,9 @@ TimeDimensionSpec, WhereFilterSpec, ) -from metricflow.semantics.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_plan import SqlJoinType +from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_plan import SqlJoinType from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query_rendering/compare_rendered_query.py b/tests/query_rendering/compare_rendered_query.py index 2b58c8c841..e1fda8e07a 100644 --- a/tests/query_rendering/compare_rendered_query.py +++ b/tests/query_rendering/compare_rendered_query.py @@ -8,7 +8,7 @@ from metricflow.semantics.dataflow.dataflow_plan import BaseOutput from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.semantics.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel +from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_rendered_sql_from_plan_equal diff --git a/tests/sql/compare_sql_plan.py b/tests/sql/compare_sql_plan.py index 5846fe8dcb..a682945f08 100644 --- a/tests/sql/compare_sql_plan.py +++ b/tests/sql/compare_sql_plan.py @@ -4,8 +4,8 @@ from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.semantics.sql.sql_plan import SqlQueryPlan, SqlQueryPlanNode +from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer +from metricflow.sql.sql_plan import SqlQueryPlan, SqlQueryPlanNode from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker from tests.snapshot_utils import ( assert_plan_snapshot_text_equal, diff --git a/tests/sql/optimizer/test_column_pruner.py b/tests/sql/optimizer/test_column_pruner.py index 1f77aaf5f4..c58b43cae7 100644 --- a/tests/sql/optimizer/test_column_pruner.py +++ b/tests/sql/optimizer/test_column_pruner.py @@ -3,9 +3,9 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.semantics.sql.optimizer.column_pruner import SqlColumnPrunerOptimizer -from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.optimizer.column_pruner import SqlColumnPrunerOptimizer +from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer +from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, SqlComparison, @@ -13,7 +13,7 @@ SqlIsNullExpression, SqlStringExpression, ) -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlJoinDescription, SqlJoinType, SqlQueryPlanNode, @@ -21,7 +21,7 @@ SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_default_rendered_sql_equal diff --git a/tests/sql/optimizer/test_rewriting_sub_query_reducer.py b/tests/sql/optimizer/test_rewriting_sub_query_reducer.py index 9952e3fe67..b5c7b08dd0 100644 --- a/tests/sql/optimizer/test_rewriting_sub_query_reducer.py +++ b/tests/sql/optimizer/test_rewriting_sub_query_reducer.py @@ -3,8 +3,8 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.semantics.sql.optimizer.rewriting_sub_query_reducer import SqlRewritingSubQueryReducer -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.optimizer.rewriting_sub_query_reducer import SqlRewritingSubQueryReducer +from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, SqlColumnReferenceExpression, @@ -14,7 +14,7 @@ SqlStringExpression, SqlStringLiteralExpression, ) -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlJoinDescription, SqlJoinType, SqlOrderByDescription, @@ -22,7 +22,7 @@ SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_default_rendered_sql_equal diff --git a/tests/sql/optimizer/test_sub_query_reducer.py b/tests/sql/optimizer/test_sub_query_reducer.py index e42c919e2a..366193c2ff 100644 --- a/tests/sql/optimizer/test_sub_query_reducer.py +++ b/tests/sql/optimizer/test_sub_query_reducer.py @@ -3,14 +3,14 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.semantics.sql.optimizer.sub_query_reducer import SqlSubQueryReducer -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.optimizer.sub_query_reducer import SqlSubQueryReducer +from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, SqlComparison, SqlComparisonExpression, ) -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlJoinDescription, SqlJoinType, SqlOrderByDescription, @@ -18,7 +18,7 @@ SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_default_rendered_sql_equal diff --git a/tests/sql/optimizer/test_table_alias_simplifier.py b/tests/sql/optimizer/test_table_alias_simplifier.py index d105301034..737a61cb5a 100644 --- a/tests/sql/optimizer/test_table_alias_simplifier.py +++ b/tests/sql/optimizer/test_table_alias_simplifier.py @@ -3,22 +3,22 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.semantics.sql.optimizer.table_alias_simplifier import SqlTableAliasSimplifier -from metricflow.semantics.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.optimizer.table_alias_simplifier import SqlTableAliasSimplifier +from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer +from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, SqlComparison, SqlComparisonExpression, ) -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlJoinDescription, SqlJoinType, SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_default_rendered_sql_equal diff --git a/tests/sql/test_bind_parameter_serialization.py b/tests/sql/test_bind_parameter_serialization.py index ea45dc243e..9d0c4d9a81 100644 --- a/tests/sql/test_bind_parameter_serialization.py +++ b/tests/sql/test_bind_parameter_serialization.py @@ -3,7 +3,7 @@ import pytest from dbt_semantic_interfaces.dataclass_serialization import DataClassDeserializer, DataclassSerializer -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameter, SqlBindParameters, SqlBindParameterValue +from metricflow.sql.sql_bind_parameters import SqlBindParameter, SqlBindParameters, SqlBindParameterValue @pytest.fixture diff --git a/tests/sql/test_engine_specific_rendering.py b/tests/sql/test_engine_specific_rendering.py index 1e7fc9bf5f..246d0a09f8 100644 --- a/tests/sql/test_engine_specific_rendering.py +++ b/tests/sql/test_engine_specific_rendering.py @@ -6,7 +6,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlColumnReference, SqlColumnReferenceExpression, @@ -16,14 +16,14 @@ SqlPercentileFunctionType, SqlStringLiteralExpression, ) -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlJoinDescription, SqlOrderByDescription, SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_rendered_sql_equal diff --git a/tests/sql/test_sql_expr_render.py b/tests/sql/test_sql_expr_render.py index 4296b0c6b7..7dabd7736a 100644 --- a/tests/sql/test_sql_expr_render.py +++ b/tests/sql/test_sql_expr_render.py @@ -9,8 +9,8 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.semantics.sql.render.expr_renderer import DefaultSqlExpressionRenderer -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.render.expr_renderer import DefaultSqlExpressionRenderer +from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlBetweenExpression, SqlCastToTimestampExpression, diff --git a/tests/sql/test_sql_plan_render.py b/tests/sql/test_sql_plan_render.py index a6c6762f68..52455b1219 100644 --- a/tests/sql/test_sql_plan_render.py +++ b/tests/sql/test_sql_plan_render.py @@ -7,7 +7,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, SqlColumnReferenceExpression, @@ -16,7 +16,7 @@ SqlFunction, SqlStringExpression, ) -from metricflow.semantics.sql.sql_plan import ( +from metricflow.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, SqlJoinType, @@ -25,7 +25,7 @@ SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.semantics.sql.sql_table import SqlTable, SqlTableType +from metricflow.sql.sql_table import SqlTable, SqlTableType from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.sql.compare_sql_plan import assert_rendered_sql_equal diff --git a/tests/sql_clients/test_date_time_operations.py b/tests/sql_clients/test_date_time_operations.py index de441c5cc7..c56b20ec11 100644 --- a/tests/sql_clients/test_date_time_operations.py +++ b/tests/sql_clients/test_date_time_operations.py @@ -24,7 +24,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from metricflow.semantics.protocols.sql_client import SqlClient -from metricflow.semantics.sql.sql_exprs import ( +from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlDateTruncExpression, SqlExtractExpression, diff --git a/tests/sql_clients/test_sql_client.py b/tests/sql_clients/test_sql_client.py index aad3d308ee..c15d3c81c9 100644 --- a/tests/sql_clients/test_sql_client.py +++ b/tests/sql_clients/test_sql_client.py @@ -8,8 +8,8 @@ from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.random_id import random_id -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods diff --git a/tests/table_snapshot/table_snapshots.py b/tests/table_snapshot/table_snapshots.py index 77e86f9e1e..7d6d208d9e 100644 --- a/tests/table_snapshot/table_snapshots.py +++ b/tests/table_snapshot/table_snapshots.py @@ -16,7 +16,7 @@ from dbt_semantic_interfaces.implementations.base import FrozenBaseModel from metricflow.semantics.specs.spec_classes import hash_items -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods logger = logging.getLogger(__name__) diff --git a/tests/table_snapshot/test_source_schema.py b/tests/table_snapshot/test_source_schema.py index 151fa0ca3d..68f38c1d08 100644 --- a/tests/table_snapshot/test_source_schema.py +++ b/tests/table_snapshot/test_source_schema.py @@ -6,7 +6,7 @@ import pytest from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine -from metricflow.semantics.sql.sql_table import SqlTable +from metricflow.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.table_fixtures import CONFIGURED_SOURCE_TABLE_SNAPSHOT_REPOSITORY From 68875ee985c3bae0cb9648b9a00f1bbab34f2aee Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 16:30:04 -0700 Subject: [PATCH 30/80] Move out protocols/sql_client. --- dbt-metricflow/dbt_metricflow/cli/cli_context.py | 2 +- .../cli/dbt_connectors/adapter_backed_client.py | 2 +- metricflow/engine/metricflow_engine.py | 2 +- metricflow/execution/dataflow_to_execution.py | 2 +- metricflow/execution/execution_plan.py | 2 +- metricflow/inference/context/data_warehouse.py | 2 +- metricflow/protocols/__init__.py | 0 metricflow/{semantics => }/protocols/sql_client.py | 0 .../semantics/model/data_warehouse_model_validator.py | 2 +- metricflow/semantics/plan_conversion/dataflow_to_sql.py | 2 +- tests/cli/test_cli.py | 2 +- tests/dataset/test_convert_semantic_model.py | 2 +- tests/examples/test_node_sql.py | 2 +- tests/execution/test_tasks.py | 2 +- tests/fixtures/cli_fixtures.py | 2 +- tests/fixtures/dataflow_fixtures.py | 2 +- tests/fixtures/manifest_fixtures.py | 2 +- tests/fixtures/sql_client_fixtures.py | 2 +- tests/fixtures/sql_clients/adapter_backed_ddl_client.py | 2 +- .../fixtures/sql_clients/base_sql_client_implementation.py | 6 +++--- tests/fixtures/sql_clients/ddl_sql_client.py | 2 +- tests/generate_snapshots.py | 2 +- tests/integration/conftest.py | 2 +- tests/integration/query_output/test_cumulative_metrics.py | 2 +- tests/integration/query_output/test_fill_nulls_with_0.py | 2 +- tests/integration/query_output/test_metric_filter_output.py | 2 +- tests/integration/query_output/test_offset_metrics.py | 2 +- tests/integration/test_configured_cases.py | 2 +- tests/integration/test_rendered_query.py | 2 +- tests/model/test_data_warehouse_tasks.py | 2 +- .../dataflow_to_sql/test_conversion_metrics_to_sql.py | 2 +- .../dataflow_to_sql/test_distinct_values_to_sql.py | 2 +- .../dataflow_to_sql/test_metric_time_dimension_to_sql.py | 2 +- tests/plan_conversion/test_dataflow_to_execution.py | 2 +- tests/plan_conversion/test_dataflow_to_sql_plan.py | 2 +- tests/plan_conversion/test_time_spine.py | 2 +- tests/populate_persistent_source_schemas.py | 2 +- tests/query_rendering/compare_rendered_query.py | 2 +- tests/query_rendering/test_cumulative_metric_rendering.py | 2 +- tests/query_rendering/test_derived_metric_rendering.py | 2 +- tests/query_rendering/test_fill_nulls_with_rendering.py | 2 +- .../query_rendering/test_granularity_date_part_rendering.py | 2 +- tests/query_rendering/test_metric_filter_rendering.py | 2 +- tests/query_rendering/test_metric_time_without_metrics.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- tests/query_rendering/test_time_spine_join_rendering.py | 2 +- tests/snapshot_utils.py | 2 +- tests/source_schema_tools.py | 2 +- tests/sql/compare_sql_plan.py | 2 +- tests/sql/test_engine_specific_rendering.py | 2 +- tests/sql/test_sql_plan_render.py | 2 +- tests/sql_clients/test_date_time_operations.py | 2 +- tests/sql_clients/test_sql_client.py | 2 +- tests/table_snapshot/test_source_schema.py | 2 +- tests/table_snapshot/test_table_snapshots.py | 2 +- 55 files changed, 55 insertions(+), 55 deletions(-) create mode 100644 metricflow/protocols/__init__.py rename metricflow/{semantics => }/protocols/sql_client.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/cli_context.py b/dbt-metricflow/dbt_metricflow/cli/cli_context.py index 7d96a95702..129d9915e3 100644 --- a/dbt-metricflow/dbt_metricflow/cli/cli_context.py +++ b/dbt-metricflow/dbt_metricflow/cli/cli_context.py @@ -10,8 +10,8 @@ from dbt_metricflow.cli.dbt_connectors.adapter_backed_client import AdapterBackedSqlClient from dbt_metricflow.cli.dbt_connectors.dbt_config_accessor import dbtArtifacts, dbtProjectMetadata from metricflow.engine.metricflow_engine import MetricFlowEngine +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.protocols.sql_client import SqlClient logger = logging.getLogger(__name__) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py index 2ce4116106..4f536a30ef 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py @@ -9,10 +9,10 @@ from dbt.exceptions import DbtDatabaseError from dbt_semantic_interfaces.enum_extension import assert_values_exhausted +from metricflow.protocols.sql_client import SqlEngine from metricflow.semantics.errors.error_classes import SqlBindParametersNotSupportedError from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.protocols.sql_client import SqlEngine from metricflow.semantics.random_id import random_id from metricflow.sql.render.big_query import BigQuerySqlQueryPlanRenderer from metricflow.sql.render.databricks import DatabricksSqlQueryPlanRenderer diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 85b675ec1e..6fe93d7ee7 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -21,6 +21,7 @@ ) from metricflow.execution.execution_plan import ExecutionPlan, SqlQuery from metricflow.execution.executor import SequentialPlanExecutor +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -46,7 +47,6 @@ from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.query.query_exceptions import InvalidQueryException from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.random_id import random_id diff --git a/metricflow/execution/dataflow_to_execution.py b/metricflow/execution/dataflow_to_execution.py index f8544be437..fcc5a2ac2f 100644 --- a/metricflow/execution/dataflow_to_execution.py +++ b/metricflow/execution/dataflow_to_execution.py @@ -10,6 +10,7 @@ SelectSqlQueryToDataFrameTask, SelectSqlQueryToTableTask, ) +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.dataflow_plan import ( DataflowPlan, DataflowPlanNode, @@ -19,7 +20,6 @@ from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult, SqlQueryPlanRenderer logger = logging.getLogger(__name__) diff --git a/metricflow/execution/execution_plan.py b/metricflow/execution/execution_plan.py index 67cef239af..591945ff00 100644 --- a/metricflow/execution/execution_plan.py +++ b/metricflow/execution/execution_plan.py @@ -8,9 +8,9 @@ import pandas as pd +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.visitor import Visitable from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable diff --git a/metricflow/inference/context/data_warehouse.py b/metricflow/inference/context/data_warehouse.py index 4ab841bc60..2e6a30d609 100644 --- a/metricflow/inference/context/data_warehouse.py +++ b/metricflow/inference/context/data_warehouse.py @@ -8,7 +8,7 @@ from typing import Callable, ContextManager, Dict, Generic, Iterator, List, Optional, TypeVar from metricflow.inference.context.base import InferenceContext, InferenceContextProvider -from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.protocols.sql_client import SqlClient from metricflow.sql.sql_column import SqlColumn from metricflow.sql.sql_table import SqlTable diff --git a/metricflow/protocols/__init__.py b/metricflow/protocols/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metricflow/semantics/protocols/sql_client.py b/metricflow/protocols/sql_client.py similarity index 100% rename from metricflow/semantics/protocols/sql_client.py rename to metricflow/protocols/sql_client.py diff --git a/metricflow/semantics/model/data_warehouse_model_validator.py b/metricflow/semantics/model/data_warehouse_model_validator.py index 3fbf38b8f6..a441f24bf9 100644 --- a/metricflow/semantics/model/data_warehouse_model_validator.py +++ b/metricflow/semantics/model/data_warehouse_model_validator.py @@ -30,6 +30,7 @@ ) from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder from metricflow.semantics.dataflow.dataflow_plan import BaseOutput @@ -40,7 +41,6 @@ from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec from metricflow.sql.sql_bind_parameters import SqlBindParameters diff --git a/metricflow/semantics/plan_conversion/dataflow_to_sql.py b/metricflow/semantics/plan_conversion/dataflow_to_sql.py index 76353987a1..271d722671 100644 --- a/metricflow/semantics/plan_conversion/dataflow_to_sql.py +++ b/metricflow/semantics/plan_conversion/dataflow_to_sql.py @@ -12,6 +12,7 @@ from dbt_semantic_interfaces.type_enums.conversion_calculation_type import ConversionCalculationType from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords +from metricflow.protocols.sql_client import SqlEngine from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId @@ -86,7 +87,6 @@ SqlQueryPlanJoinBuilder, ) from metricflow.semantics.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource -from metricflow.semantics.protocols.sql_client import SqlEngine from metricflow.semantics.specs.column_assoc import ( ColumnAssociation, ColumnAssociationResolver, diff --git a/tests/cli/test_cli.py b/tests/cli/test_cli.py index 9fe500d1ac..f39cf9154a 100644 --- a/tests/cli/test_cli.py +++ b/tests/cli/test_cli.py @@ -26,7 +26,7 @@ tutorial, validate_configs, ) -from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine +from metricflow.protocols.sql_client import SqlClient, SqlEngine from tests.fixtures.cli_fixtures import MetricFlowCliRunner from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.model.example_project_configuration import EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE diff --git a/tests/dataset/test_convert_semantic_model.py b/tests/dataset/test_convert_semantic_model.py index 08b2ba84a0..ee7ac80d25 100644 --- a/tests/dataset/test_convert_semantic_model.py +++ b/tests/dataset/test_convert_semantic_model.py @@ -7,7 +7,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelReference -from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.protocols.sql_client import SqlClient from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_spec_set_snapshot_equal diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index 3a5a447f80..8d23ca30cb 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -6,6 +6,7 @@ from dbt_semantic_interfaces.references import SemanticModelReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode @@ -15,7 +16,6 @@ from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer diff --git a/tests/execution/test_tasks.py b/tests/execution/test_tasks.py index 857573926f..1f3882731d 100644 --- a/tests/execution/test_tasks.py +++ b/tests/execution/test_tasks.py @@ -8,8 +8,8 @@ SelectSqlQueryToTableTask, ) from metricflow.execution.executor import SequentialPlanExecutor +from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.random_id import random_id from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable diff --git a/tests/fixtures/cli_fixtures.py b/tests/fixtures/cli_fixtures.py index e8a293e658..c0f1ecbe66 100644 --- a/tests/fixtures/cli_fixtures.py +++ b/tests/fixtures/cli_fixtures.py @@ -15,9 +15,9 @@ from dbt_metricflow.cli.cli_context import CLIContext from dbt_metricflow.cli.dbt_connectors.dbt_config_accessor import dbtArtifacts, dbtProjectMetadata from metricflow.engine.metricflow_engine import MetricFlowEngine +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import dbt_project_dir diff --git a/tests/fixtures/dataflow_fixtures.py b/tests/fixtures/dataflow_fixtures.py index 6202295784..1ae26f1a6b 100644 --- a/tests/fixtures/dataflow_fixtures.py +++ b/tests/fixtures/dataflow_fixtures.py @@ -4,9 +4,9 @@ import pytest +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index 418f93a07b..354caf5ab3 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -18,6 +18,7 @@ from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator from metricflow.engine.metricflow_engine import MetricFlowEngine +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder, SourceNodeSet @@ -27,7 +28,6 @@ from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.test_helpers import ConfigurableTimeSource diff --git a/tests/fixtures/sql_client_fixtures.py b/tests/fixtures/sql_client_fixtures.py index 75585f3ea7..6a15a3c8c9 100644 --- a/tests/fixtures/sql_client_fixtures.py +++ b/tests/fixtures/sql_client_fixtures.py @@ -10,7 +10,7 @@ from dbt.adapters.factory import get_adapter_by_type from dbt.cli.main import dbtRunner -from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, dbt_project_dir, dialect_from_url from tests.fixtures.sql_clients.adapter_backed_ddl_client import AdapterBackedDDLSqlClient from tests.fixtures.sql_clients.common_client import SqlDialect diff --git a/tests/fixtures/sql_clients/adapter_backed_ddl_client.py b/tests/fixtures/sql_clients/adapter_backed_ddl_client.py index 9bf7e322c0..c2882f7e0d 100644 --- a/tests/fixtures/sql_clients/adapter_backed_ddl_client.py +++ b/tests/fixtures/sql_clients/adapter_backed_ddl_client.py @@ -7,7 +7,7 @@ import pandas as pd from dbt_metricflow.cli.dbt_connectors.adapter_backed_client import AdapterBackedSqlClient -from metricflow.semantics.protocols.sql_client import SqlEngine +from metricflow.protocols.sql_client import SqlEngine from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/tests/fixtures/sql_clients/base_sql_client_implementation.py b/tests/fixtures/sql_clients/base_sql_client_implementation.py index c7407951d9..6e6a5af5e5 100644 --- a/tests/fixtures/sql_clients/base_sql_client_implementation.py +++ b/tests/fixtures/sql_clients/base_sql_client_implementation.py @@ -7,11 +7,11 @@ import pandas as pd -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.protocols.sql_client import ( +from metricflow.protocols.sql_client import ( SqlClient, ) +from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.random_id import random_id from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable diff --git a/tests/fixtures/sql_clients/ddl_sql_client.py b/tests/fixtures/sql_clients/ddl_sql_client.py index da3570bd06..f877a8c433 100644 --- a/tests/fixtures/sql_clients/ddl_sql_client.py +++ b/tests/fixtures/sql_clients/ddl_sql_client.py @@ -5,7 +5,7 @@ from pandas import DataFrame -from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.protocols.sql_client import SqlClient from metricflow.sql.sql_table import SqlTable diff --git a/tests/generate_snapshots.py b/tests/generate_snapshots.py index 0b0d8a7430..eac0b674e6 100644 --- a/tests/generate_snapshots.py +++ b/tests/generate_snapshots.py @@ -47,7 +47,7 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.implementations.base import FrozenBaseModel -from metricflow.semantics.protocols.sql_client import SqlEngine +from metricflow.protocols.sql_client import SqlEngine from tests.fixtures.setup_fixtures import SQL_ENGINE_SNAPSHOT_MARKER_NAME logger = logging.getLogger(__name__) diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 09504eef3a..f077bc95fd 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -6,10 +6,10 @@ from dbt_semantic_interfaces.test_utils import as_datetime from metricflow.engine.metricflow_engine import MetricFlowEngine +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/integration/query_output/test_cumulative_metrics.py b/tests/integration/query_output/test_cumulative_metrics.py index 82ceedde12..f32b6d8270 100644 --- a/tests/integration/query_output/test_cumulative_metrics.py +++ b/tests/integration/query_output/test_cumulative_metrics.py @@ -7,7 +7,7 @@ from dbt_semantic_interfaces.test_utils import as_datetime from metricflow.engine.metricflow_engine import MetricFlowQueryRequest -from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers from tests.snapshot_utils import assert_str_snapshot_equal diff --git a/tests/integration/query_output/test_fill_nulls_with_0.py b/tests/integration/query_output/test_fill_nulls_with_0.py index a4d07b11ab..dd1acb1b0b 100644 --- a/tests/integration/query_output/test_fill_nulls_with_0.py +++ b/tests/integration/query_output/test_fill_nulls_with_0.py @@ -6,7 +6,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.engine.metricflow_engine import MetricFlowQueryRequest -from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers from tests.snapshot_utils import assert_str_snapshot_equal diff --git a/tests/integration/query_output/test_metric_filter_output.py b/tests/integration/query_output/test_metric_filter_output.py index 3a507ae2d9..f0c383372e 100644 --- a/tests/integration/query_output/test_metric_filter_output.py +++ b/tests/integration/query_output/test_metric_filter_output.py @@ -4,7 +4,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.engine.metricflow_engine import MetricFlowQueryRequest -from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers from tests.snapshot_utils import assert_str_snapshot_equal diff --git a/tests/integration/query_output/test_offset_metrics.py b/tests/integration/query_output/test_offset_metrics.py index df781bc3c8..987f657d16 100644 --- a/tests/integration/query_output/test_offset_metrics.py +++ b/tests/integration/query_output/test_offset_metrics.py @@ -4,7 +4,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.engine.metricflow_engine import MetricFlowQueryRequest -from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers from tests.snapshot_utils import assert_str_snapshot_equal diff --git a/tests/integration/test_configured_cases.py b/tests/integration/test_configured_cases.py index 1380d12fa6..90212e15c0 100644 --- a/tests/integration/test_configured_cases.py +++ b/tests/integration/test_configured_cases.py @@ -15,12 +15,12 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import ( DunderColumnAssociationResolver, ) from metricflow.semantics.protocols.query_parameter import DimensionOrEntityQueryParameter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter from metricflow.semantics.test_helpers import ( ConfigurableTimeSource, diff --git a/tests/integration/test_rendered_query.py b/tests/integration/test_rendered_query.py index 6dae1b5857..55ff464c34 100644 --- a/tests/integration/test_rendered_query.py +++ b/tests/integration/test_rendered_query.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.test_utils import as_datetime from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers diff --git a/tests/model/test_data_warehouse_tasks.py b/tests/model/test_data_warehouse_tasks.py index 10cb0653ac..e900e3ba62 100644 --- a/tests/model/test_data_warehouse_tasks.py +++ b/tests/model/test_data_warehouse_tasks.py @@ -15,12 +15,12 @@ from dbt_semantic_interfaces.transformations.semantic_manifest_transformer import PydanticSemanticManifestTransformer from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.data_warehouse_model_validator import ( DataWarehouseModelValidator, DataWarehouseTaskBuilder, DataWarehouseValidationTask, ) -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.sql_bind_parameters import SqlBindParameters from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import ( diff --git a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py index 1caaf59a68..a871d0d51a 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, diff --git a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index ae1b6fc5a4..e5bf3b861a 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.references import EntityReference +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec diff --git a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index f5b625b10f..98e2d264c6 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -6,10 +6,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import TimeDimensionReference +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import MetricFlowQuerySpec, MetricSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index 4f1e3a9575..771a85efad 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -4,11 +4,11 @@ from _pytest.fixtures import FixtureRequest from metricflow.execution.dataflow_to_execution import DataflowToExecutionPlanConverter +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index 09bd155aa0..ec74f20fe1 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -10,6 +10,7 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.dataflow_plan import ( @@ -30,7 +31,6 @@ from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/plan_conversion/test_time_spine.py b/tests/plan_conversion/test_time_spine.py index 34e56faa96..f8e00aa0dd 100644 --- a/tests/plan_conversion/test_time_spine.py +++ b/tests/plan_conversion/test_time_spine.py @@ -2,9 +2,9 @@ from pandas import DataFrame +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.time.time_constants import ISO8601_PYTHON_TS_FORMAT diff --git a/tests/populate_persistent_source_schemas.py b/tests/populate_persistent_source_schemas.py index 14f2b0bfa6..c4628d71db 100644 --- a/tests/populate_persistent_source_schemas.py +++ b/tests/populate_persistent_source_schemas.py @@ -7,7 +7,7 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted -from metricflow.semantics.protocols.sql_client import SqlEngine +from metricflow.protocols.sql_client import SqlEngine from tests.generate_snapshots import ( MetricFlowTestConfiguration, run_cli, diff --git a/tests/query_rendering/compare_rendered_query.py b/tests/query_rendering/compare_rendered_query.py index e1fda8e07a..1dc18d4583 100644 --- a/tests/query_rendering/compare_rendered_query.py +++ b/tests/query_rendering/compare_rendered_query.py @@ -4,10 +4,10 @@ from _pytest.fixtures import FixtureRequest +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.dataflow_plan import BaseOutput from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests/query_rendering/test_cumulative_metric_rendering.py index 1788db330c..5de1fe3654 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests/query_rendering/test_cumulative_metric_rendering.py @@ -11,10 +11,10 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index 5d4b187bf9..56787a8c69 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -9,11 +9,11 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index fcf3fd87a1..ddf1c6939b 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -12,10 +12,10 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests/query_rendering/test_granularity_date_part_rendering.py index b99ad4e48c..2a8956976e 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests/query_rendering/test_granularity_date_part_rendering.py @@ -11,10 +11,10 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, diff --git a/tests/query_rendering/test_metric_filter_rendering.py b/tests/query_rendering/test_metric_filter_rendering.py index 077b7dd87e..6cf9c066a5 100644 --- a/tests/query_rendering/test_metric_filter_rendering.py +++ b/tests/query_rendering/test_metric_filter_rendering.py @@ -4,9 +4,9 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.query.query_parser import MetricFlowQueryParser from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_metric_time_without_metrics.py b/tests/query_rendering/test_metric_time_without_metrics.py index 91bbc75ee2..95d40f0fb5 100644 --- a/tests/query_rendering/test_metric_time_without_metrics.py +++ b/tests/query_rendering/test_metric_time_without_metrics.py @@ -7,10 +7,10 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index 07b4325462..f4ddd80727 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -16,11 +16,11 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests/query_rendering/test_time_spine_join_rendering.py index 080bef12db..628404ab5e 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests/query_rendering/test_time_spine_join_rendering.py @@ -12,10 +12,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index 0fb8239a95..78a058cb4c 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -8,12 +8,12 @@ from _pytest.fixtures import FixtureRequest from metricflow.execution.execution_plan import ExecutionPlan +from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.dag.mf_dag import MetricFlowDag from metricflow.semantics.dataflow.dataflow_plan import DataflowPlan from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.linkable_spec_resolver import LinkableElementSet from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet from metricflow.semantics.test_helpers import assert_snapshot_text_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker diff --git a/tests/source_schema_tools.py b/tests/source_schema_tools.py index eaa40c2130..a3cd78f558 100644 --- a/tests/source_schema_tools.py +++ b/tests/source_schema_tools.py @@ -2,7 +2,7 @@ import logging -from metricflow.semantics.protocols.sql_client import SqlEngine +from metricflow.protocols.sql_client import SqlEngine from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods from tests.table_snapshot.table_snapshots import ( diff --git a/tests/sql/compare_sql_plan.py b/tests/sql/compare_sql_plan.py index a682945f08..79de37e733 100644 --- a/tests/sql/compare_sql_plan.py +++ b/tests/sql/compare_sql_plan.py @@ -2,8 +2,8 @@ from _pytest.fixtures import FixtureRequest +from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer from metricflow.sql.sql_plan import SqlQueryPlan, SqlQueryPlanNode from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker diff --git a/tests/sql/test_engine_specific_rendering.py b/tests/sql/test_engine_specific_rendering.py index 246d0a09f8..60a56fc758 100644 --- a/tests/sql/test_engine_specific_rendering.py +++ b/tests/sql/test_engine_specific_rendering.py @@ -5,7 +5,7 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.protocols.sql_client import SqlClient from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlColumnReference, diff --git a/tests/sql/test_sql_plan_render.py b/tests/sql/test_sql_plan_render.py index 52455b1219..6e21dcfc82 100644 --- a/tests/sql/test_sql_plan_render.py +++ b/tests/sql/test_sql_plan_render.py @@ -6,7 +6,7 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.protocols.sql_client import SqlClient from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, diff --git a/tests/sql_clients/test_date_time_operations.py b/tests/sql_clients/test_date_time_operations.py index c56b20ec11..60d77f6bae 100644 --- a/tests/sql_clients/test_date_time_operations.py +++ b/tests/sql_clients/test_date_time_operations.py @@ -23,7 +23,7 @@ import pytest from dbt_semantic_interfaces.type_enums.date_part import DatePart -from metricflow.semantics.protocols.sql_client import SqlClient +from metricflow.protocols.sql_client import SqlClient from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlDateTruncExpression, diff --git a/tests/sql_clients/test_sql_client.py b/tests/sql_clients/test_sql_client.py index c15d3c81c9..1c673c34c8 100644 --- a/tests/sql_clients/test_sql_client.py +++ b/tests/sql_clients/test_sql_client.py @@ -6,7 +6,7 @@ import pandas as pd import pytest -from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine +from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.random_id import random_id from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable diff --git a/tests/table_snapshot/test_source_schema.py b/tests/table_snapshot/test_source_schema.py index 68f38c1d08..1da5cb36e2 100644 --- a/tests/table_snapshot/test_source_schema.py +++ b/tests/table_snapshot/test_source_schema.py @@ -5,7 +5,7 @@ import pytest -from metricflow.semantics.protocols.sql_client import SqlClient, SqlEngine +from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/table_snapshot/test_table_snapshots.py b/tests/table_snapshot/test_table_snapshots.py index 5c092fd107..5970051fcc 100644 --- a/tests/table_snapshot/test_table_snapshots.py +++ b/tests/table_snapshot/test_table_snapshots.py @@ -7,7 +7,7 @@ import pytest from dbt_semantic_interfaces.test_utils import as_datetime -from metricflow.semantics.protocols.sql_client import SqlEngine +from metricflow.protocols.sql_client import SqlEngine from metricflow.semantics.random_id import random_id from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration From 8724f02c3fb0d0f668f1a7978715ef95a0883b42 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 16:31:45 -0700 Subject: [PATCH 31/80] Move out plan_conversion. --- CONTRIBUTING.md | 2 +- metricflow/engine/metricflow_engine.py | 4 +- .../execution/convert_to_execution_plan.py | 2 +- metricflow/execution/dataflow_to_execution.py | 4 +- .../plan_conversion/__init__.py | 0 .../plan_conversion/column_resolver.py | 0 .../plan_conversion/convert_to_sql_plan.py | 0 .../plan_conversion/dataflow_to_sql.py | 70 +++++++++---------- .../plan_conversion/instance_converters.py | 2 +- .../plan_conversion/node_processor.py | 0 .../plan_conversion/select_column_gen.py | 0 .../plan_conversion/spec_transforms.py | 4 +- .../sql_expression_builders.py | 0 .../plan_conversion/sql_join_builder.py | 2 +- .../plan_conversion/time_spine.py | 0 .../dataflow/builder/dataflow_plan_builder.py | 2 +- .../dataflow/builder/node_data_set.py | 2 +- .../dataflow/builder/node_evaluator.py | 2 +- .../dataset/convert_semantic_model.py | 2 +- .../model/data_warehouse_model_validator.py | 6 +- .../model/semantic_manifest_lookup.py | 2 +- tests/dataflow/builder/test_node_data_set.py | 4 +- tests/dataflow/builder/test_node_evaluator.py | 4 +- tests/examples/test_node_sql.py | 4 +- tests/fixtures/cli_fixtures.py | 2 +- tests/fixtures/dataflow_fixtures.py | 2 +- tests/fixtures/manifest_fixtures.py | 4 +- tests/fixtures/sql_fixtures.py | 2 +- tests/integration/conftest.py | 4 +- tests/integration/test_configured_cases.py | 6 +- tests/integration/test_rendered_query.py | 2 +- .../test_conversion_metrics_to_sql.py | 2 +- .../test_distinct_values_to_sql.py | 2 +- .../test_metric_time_dimension_to_sql.py | 2 +- ...select_columns_with_measures_aggregated.py | 10 +-- ...create_validity_window_join_description.py | 2 +- .../test_dataflow_to_execution.py | 4 +- .../test_dataflow_to_sql_plan.py | 2 +- tests/query/test_suggestions.py | 2 +- .../query_rendering/compare_rendered_query.py | 2 +- .../test_cumulative_metric_rendering.py | 2 +- .../test_derived_metric_rendering.py | 2 +- .../test_fill_nulls_with_rendering.py | 2 +- .../test_granularity_date_part_rendering.py | 2 +- .../test_metric_filter_rendering.py | 2 +- .../test_metric_time_without_metrics.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- .../test_time_spine_join_rendering.py | 2 +- 48 files changed, 92 insertions(+), 92 deletions(-) rename metricflow/{semantics => }/plan_conversion/__init__.py (100%) rename metricflow/{semantics => }/plan_conversion/column_resolver.py (100%) rename metricflow/{semantics => }/plan_conversion/convert_to_sql_plan.py (100%) rename metricflow/{semantics => }/plan_conversion/dataflow_to_sql.py (99%) rename metricflow/{semantics => }/plan_conversion/instance_converters.py (99%) rename metricflow/{semantics => }/plan_conversion/node_processor.py (100%) rename metricflow/{semantics => }/plan_conversion/select_column_gen.py (100%) rename metricflow/{semantics => }/plan_conversion/spec_transforms.py (95%) rename metricflow/{semantics => }/plan_conversion/sql_expression_builders.py (100%) rename metricflow/{semantics => }/plan_conversion/sql_join_builder.py (99%) rename metricflow/{semantics => }/plan_conversion/time_spine.py (100%) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1cca6aa3e1..f58ab62caa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,7 +48,7 @@ When running any one of the hatch commands, the environment is automatically set - These are generally laid out in a similar hierarchy to the main package. - Let's try them out: - Run the [dataflow plan to sql plan conversion tests](tests/plan_conversion/test_dataflow_to_sql_plan.py): `hatch run dev-env:pytest tests/plan_conversion/test_dataflow_to_sql_plan.py`. - - Modify something in the [dataflow to sql plan converter logic](metricflow/semantics/plan_conversion/dataflow_to_sql.py). I like to throw exceptions just to make sure things blow up. + - Modify something in the [dataflow to sql plan converter logic](metricflow/plan_conversion/dataflow_to_sql.py). I like to throw exceptions just to make sure things blow up. - Run the test again. Did anything break? - Remember to clean up when you're done playing with the tests! 3. Make changes to the codebase and verify them through further testing, including test runs against other warehouse engines. diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 6fe93d7ee7..413be9f0b2 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -21,6 +21,8 @@ ) from metricflow.execution.execution_plan import ExecutionPlan, SqlQuery from metricflow.execution.executor import SequentialPlanExecutor +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder @@ -44,8 +46,6 @@ ) from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName -from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter from metricflow.semantics.query.query_exceptions import InvalidQueryException from metricflow.semantics.query.query_parser import MetricFlowQueryParser diff --git a/metricflow/execution/convert_to_execution_plan.py b/metricflow/execution/convert_to_execution_plan.py index 39de7e3054..c67c11c2ee 100644 --- a/metricflow/execution/convert_to_execution_plan.py +++ b/metricflow/execution/convert_to_execution_plan.py @@ -3,7 +3,7 @@ from dataclasses import dataclass from metricflow.execution.execution_plan import ExecutionPlan -from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult +from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult diff --git a/metricflow/execution/dataflow_to_execution.py b/metricflow/execution/dataflow_to_execution.py index fcc5a2ac2f..1590157d17 100644 --- a/metricflow/execution/dataflow_to_execution.py +++ b/metricflow/execution/dataflow_to_execution.py @@ -10,6 +10,8 @@ SelectSqlQueryToDataFrameTask, SelectSqlQueryToTableTask, ) +from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.dataflow_plan import ( DataflowPlan, @@ -18,8 +20,6 @@ ) from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode -from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult, SqlQueryPlanRenderer logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/plan_conversion/__init__.py b/metricflow/plan_conversion/__init__.py similarity index 100% rename from metricflow/semantics/plan_conversion/__init__.py rename to metricflow/plan_conversion/__init__.py diff --git a/metricflow/semantics/plan_conversion/column_resolver.py b/metricflow/plan_conversion/column_resolver.py similarity index 100% rename from metricflow/semantics/plan_conversion/column_resolver.py rename to metricflow/plan_conversion/column_resolver.py diff --git a/metricflow/semantics/plan_conversion/convert_to_sql_plan.py b/metricflow/plan_conversion/convert_to_sql_plan.py similarity index 100% rename from metricflow/semantics/plan_conversion/convert_to_sql_plan.py rename to metricflow/plan_conversion/convert_to_sql_plan.py diff --git a/metricflow/semantics/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py similarity index 99% rename from metricflow/semantics/plan_conversion/dataflow_to_sql.py rename to metricflow/plan_conversion/dataflow_to_sql.py index 271d722671..83b3978a4b 100644 --- a/metricflow/semantics/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -12,6 +12,41 @@ from dbt_semantic_interfaces.type_enums.conversion_calculation_type import ConversionCalculationType from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords +from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult +from metricflow.plan_conversion.instance_converters import ( + AddGroupByMetrics, + AddLinkToLinkableElements, + AddMetadata, + AddMetrics, + AliasAggregatedMeasures, + ChangeAssociatedColumns, + ChangeMeasureAggregationState, + ConvertToMetadata, + CreateSelectColumnForCombineOutputNode, + CreateSelectColumnsForInstances, + CreateSelectColumnsWithMeasuresAggregated, + CreateSqlColumnReferencesForInstances, + FilterElements, + FilterLinkableInstancesWithLeadingLink, + RemoveMeasures, + RemoveMetrics, + UpdateMeasureFillNullsWith, + create_select_columns_for_instance_sets, +) +from metricflow.plan_conversion.select_column_gen import ( + SelectColumnSet, +) +from metricflow.plan_conversion.spec_transforms import ( + CreateColumnAssociations, + CreateSelectCoalescedColumnsForLinkableSpecs, + SelectOnlyLinkableSpecs, +) +from metricflow.plan_conversion.sql_join_builder import ( + AnnotatedSqlDataSet, + ColumnEqualityDescription, + SqlQueryPlanJoinBuilder, +) +from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.protocols.sql_client import SqlEngine from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.dag.id_prefix import StaticIdPrefix @@ -52,41 +87,6 @@ ) from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult -from metricflow.semantics.plan_conversion.instance_converters import ( - AddGroupByMetrics, - AddLinkToLinkableElements, - AddMetadata, - AddMetrics, - AliasAggregatedMeasures, - ChangeAssociatedColumns, - ChangeMeasureAggregationState, - ConvertToMetadata, - CreateSelectColumnForCombineOutputNode, - CreateSelectColumnsForInstances, - CreateSelectColumnsWithMeasuresAggregated, - CreateSqlColumnReferencesForInstances, - FilterElements, - FilterLinkableInstancesWithLeadingLink, - RemoveMeasures, - RemoveMetrics, - UpdateMeasureFillNullsWith, - create_select_columns_for_instance_sets, -) -from metricflow.semantics.plan_conversion.select_column_gen import ( - SelectColumnSet, -) -from metricflow.semantics.plan_conversion.spec_transforms import ( - CreateColumnAssociations, - CreateSelectCoalescedColumnsForLinkableSpecs, - SelectOnlyLinkableSpecs, -) -from metricflow.semantics.plan_conversion.sql_join_builder import ( - AnnotatedSqlDataSet, - ColumnEqualityDescription, - SqlQueryPlanJoinBuilder, -) -from metricflow.semantics.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.semantics.specs.column_assoc import ( ColumnAssociation, ColumnAssociationResolver, diff --git a/metricflow/semantics/plan_conversion/instance_converters.py b/metricflow/plan_conversion/instance_converters.py similarity index 99% rename from metricflow/semantics/plan_conversion/instance_converters.py rename to metricflow/plan_conversion/instance_converters.py index 4417884133..e1540a7ad7 100644 --- a/metricflow/semantics/plan_conversion/instance_converters.py +++ b/metricflow/plan_conversion/instance_converters.py @@ -14,6 +14,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from more_itertools import bucket +from metricflow.plan_conversion.select_column_gen import SelectColumnSet from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription @@ -31,7 +32,6 @@ ) from metricflow.semantics.model.semantics.metric_lookup import MetricLookup from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.semantics.plan_conversion.select_column_gen import SelectColumnSet from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/metricflow/semantics/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py similarity index 100% rename from metricflow/semantics/plan_conversion/node_processor.py rename to metricflow/plan_conversion/node_processor.py diff --git a/metricflow/semantics/plan_conversion/select_column_gen.py b/metricflow/plan_conversion/select_column_gen.py similarity index 100% rename from metricflow/semantics/plan_conversion/select_column_gen.py rename to metricflow/plan_conversion/select_column_gen.py diff --git a/metricflow/semantics/plan_conversion/spec_transforms.py b/metricflow/plan_conversion/spec_transforms.py similarity index 95% rename from metricflow/semantics/plan_conversion/spec_transforms.py rename to metricflow/plan_conversion/spec_transforms.py index c2bb602989..7acb630e39 100644 --- a/metricflow/semantics/plan_conversion/spec_transforms.py +++ b/metricflow/plan_conversion/spec_transforms.py @@ -2,8 +2,8 @@ from typing import List, Sequence -from metricflow.semantics.plan_conversion.select_column_gen import SelectColumnSet -from metricflow.semantics.plan_conversion.sql_expression_builders import make_coalesced_expr +from metricflow.plan_conversion.select_column_gen import SelectColumnSet +from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr from metricflow.semantics.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( InstanceSpecSet, diff --git a/metricflow/semantics/plan_conversion/sql_expression_builders.py b/metricflow/plan_conversion/sql_expression_builders.py similarity index 100% rename from metricflow/semantics/plan_conversion/sql_expression_builders.py rename to metricflow/plan_conversion/sql_expression_builders.py diff --git a/metricflow/semantics/plan_conversion/sql_join_builder.py b/metricflow/plan_conversion/sql_join_builder.py similarity index 99% rename from metricflow/semantics/plan_conversion/sql_join_builder.py rename to metricflow/plan_conversion/sql_join_builder.py index ef6373a5f4..7c402b1532 100644 --- a/metricflow/semantics/plan_conversion/sql_join_builder.py +++ b/metricflow/plan_conversion/sql_join_builder.py @@ -6,13 +6,13 @@ from dbt_semantic_interfaces.protocols.metric import MetricTimeWindow from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode from metricflow.semantics.dataset.sql_dataset import SqlDataSet -from metricflow.semantics.plan_conversion.sql_expression_builders import make_coalesced_expr from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, diff --git a/metricflow/semantics/plan_conversion/time_spine.py b/metricflow/plan_conversion/time_spine.py similarity index 100% rename from metricflow/semantics/plan_conversion/time_spine.py rename to metricflow/plan_conversion/time_spine.py diff --git a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py index c8b751d1e4..5b687c3faa 100644 --- a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py @@ -22,6 +22,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords +from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -60,7 +61,6 @@ from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.mf_logging.runtime import log_runtime from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, diff --git a/metricflow/semantics/dataflow/builder/node_data_set.py b/metricflow/semantics/dataflow/builder/node_data_set.py index ed79205b79..23745cd1f7 100644 --- a/metricflow/semantics/dataflow/builder/node_data_set.py +++ b/metricflow/semantics/dataflow/builder/node_data_set.py @@ -2,12 +2,12 @@ from typing import TYPE_CHECKING, Dict, Optional, Sequence +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.dataflow.dataflow_plan import ( DataflowPlanNode, ) from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.mf_logging.runtime import log_block_runtime -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver if TYPE_CHECKING: diff --git a/metricflow/semantics/dataflow/builder/node_evaluator.py b/metricflow/semantics/dataflow/builder/node_evaluator.py index c89a306ec1..ba479ac287 100644 --- a/metricflow/semantics/dataflow/builder/node_evaluator.py +++ b/metricflow/semantics/dataflow/builder/node_evaluator.py @@ -23,6 +23,7 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME +from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.partitions import ( PartitionDimensionJoinDescription, @@ -40,7 +41,6 @@ from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.semantics.plan_conversion.instance_converters import CreateValidityWindowJoinDescription from metricflow.semantics.specs.spec_classes import ( InstanceSpecSet, LinkableInstanceSpec, diff --git a/metricflow/semantics/dataset/convert_semantic_model.py b/metricflow/semantics/dataset/convert_semantic_model.py index 1ce7c3edc2..48467c84d8 100644 --- a/metricflow/semantics/dataset/convert_semantic_model.py +++ b/metricflow/semantics/dataset/convert_semantic_model.py @@ -16,6 +16,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.dag.id_prefix import DynamicIdPrefix, StaticIdPrefix from metricflow.semantics.dag.sequential_id import SequentialIdGenerator @@ -30,7 +31,6 @@ ) from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.model.spec_converters import MeasureConverter -from metricflow.semantics.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( DEFAULT_TIME_GRANULARITY, diff --git a/metricflow/semantics/model/data_warehouse_model_validator.py b/metricflow/semantics/model/data_warehouse_model_validator.py index a441f24bf9..5751260fbe 100644 --- a/metricflow/semantics/model/data_warehouse_model_validator.py +++ b/metricflow/semantics/model/data_warehouse_model_validator.py @@ -30,6 +30,9 @@ ) from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder @@ -38,9 +41,6 @@ from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec from metricflow.sql.sql_bind_parameters import SqlBindParameters diff --git a/metricflow/semantics/model/semantic_manifest_lookup.py b/metricflow/semantics/model/semantic_manifest_lookup.py index 1ccbf14d02..aac2335e9c 100644 --- a/metricflow/semantics/model/semantic_manifest_lookup.py +++ b/metricflow/semantics/model/semantic_manifest_lookup.py @@ -5,10 +5,10 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.type_enums import TimeGranularity +from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.metric_lookup import MetricLookup from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index c30d1c20d2..5fd670f2f8 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -6,6 +6,8 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelElementReference +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode @@ -16,8 +18,6 @@ MeasureInstance, ) from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey from metricflow.semantics.specs.spec_classes import ( LinklessEntitySpec, diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index c993a1cad7..42e45388d3 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -6,6 +6,8 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.node_evaluator import ( JoinLinkableInstancesRecipe, @@ -17,8 +19,6 @@ from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.semantics.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index 8d23ca30cb..e9bda04b48 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -6,6 +6,8 @@ from dbt_semantic_interfaces.references import SemanticModelReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode @@ -14,8 +16,6 @@ from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer diff --git a/tests/fixtures/cli_fixtures.py b/tests/fixtures/cli_fixtures.py index c0f1ecbe66..866e2113aa 100644 --- a/tests/fixtures/cli_fixtures.py +++ b/tests/fixtures/cli_fixtures.py @@ -15,9 +15,9 @@ from dbt_metricflow.cli.cli_context import CLIContext from dbt_metricflow.cli.dbt_connectors.dbt_config_accessor import dbtArtifacts, dbtProjectMetadata from metricflow.engine.metricflow_engine import MetricFlowEngine +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import dbt_project_dir diff --git a/tests/fixtures/dataflow_fixtures.py b/tests/fixtures/dataflow_fixtures.py index 1ae26f1a6b..1c4363fbb6 100644 --- a/tests/fixtures/dataflow_fixtures.py +++ b/tests/fixtures/dataflow_fixtures.py @@ -4,9 +4,9 @@ import pytest +from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index 354caf5ab3..22b2a78b9c 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -18,6 +18,8 @@ from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator from metricflow.engine.metricflow_engine import MetricFlowEngine +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -26,8 +28,6 @@ from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.test_helpers import ConfigurableTimeSource diff --git a/tests/fixtures/sql_fixtures.py b/tests/fixtures/sql_fixtures.py index 91f2d4c1be..c14a5fd78e 100644 --- a/tests/fixtures/sql_fixtures.py +++ b/tests/fixtures/sql_fixtures.py @@ -4,7 +4,7 @@ import pytest -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index f077bc95fd..641b8c499d 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -6,10 +6,10 @@ from dbt_semantic_interfaces.test_utils import as_datetime from metricflow.engine.metricflow_engine import MetricFlowEngine +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.semantics.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/integration/test_configured_cases.py b/tests/integration/test_configured_cases.py index 90212e15c0..bc88e7ae44 100644 --- a/tests/integration/test_configured_cases.py +++ b/tests/integration/test_configured_cases.py @@ -15,11 +15,11 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest -from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.column_resolver import ( +from metricflow.plan_conversion.column_resolver import ( DunderColumnAssociationResolver, ) +from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.protocols.query_parameter import DimensionOrEntityQueryParameter from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter from metricflow.semantics.test_helpers import ( diff --git a/tests/integration/test_rendered_query.py b/tests/integration/test_rendered_query.py index 55ff464c34..851acb423d 100644 --- a/tests/integration/test_rendered_query.py +++ b/tests/integration/test_rendered_query.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.test_utils import as_datetime from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers diff --git a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py index a871d0d51a..80af323bf6 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, diff --git a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index e5bf3b861a..76d3f06ee3 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.references import EntityReference +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec diff --git a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index 98e2d264c6..09d43b4f86 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -6,10 +6,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import TimeDimensionReference +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import MetricFlowQuerySpec, MetricSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py index 0e39e025fc..99afc3d6fe 100644 --- a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py +++ b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py @@ -2,14 +2,14 @@ from typing import Mapping -from metricflow.semantics.instances import InstanceSet -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.semantics.plan_conversion.instance_converters import ( +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.plan_conversion.instance_converters import ( CreateSelectColumnsWithMeasuresAggregated, FilterElements, ) -from metricflow.semantics.plan_conversion.select_column_gen import SelectColumnSet +from metricflow.plan_conversion.select_column_gen import SelectColumnSet +from metricflow.semantics.instances import InstanceSet +from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec, MetricInputMeasureSpec from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, diff --git a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py index bfdcd86bcc..1b9d240880 100644 --- a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py +++ b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py @@ -5,10 +5,10 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.instances import InstanceSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.instance_converters import CreateValidityWindowJoinDescription from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index 771a85efad..7c8c8e801f 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -4,11 +4,11 @@ from _pytest.fixtures import FixtureRequest from metricflow.execution.dataflow_to_execution import DataflowToExecutionPlanConverter +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import ( DimensionSpec, EntityReference, diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index ec74f20fe1..23cd753d5c 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -10,6 +10,7 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder @@ -30,7 +31,6 @@ from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/query/test_suggestions.py b/tests/query/test_suggestions.py index 76dcd96446..4ca4c4b740 100644 --- a/tests/query/test_suggestions.py +++ b/tests/query/test_suggestions.py @@ -12,8 +12,8 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.semantics.query.query_exceptions import InvalidQueryException from metricflow.semantics.query.query_parser import MetricFlowQueryParser from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query_rendering/compare_rendered_query.py b/tests/query_rendering/compare_rendered_query.py index 1dc18d4583..03b2e5e377 100644 --- a/tests/query_rendering/compare_rendered_query.py +++ b/tests/query_rendering/compare_rendered_query.py @@ -4,10 +4,10 @@ from _pytest.fixtures import FixtureRequest +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dataflow.dataflow_plan import BaseOutput -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests/query_rendering/test_cumulative_metric_rendering.py index 5de1fe3654..da1e62fd2b 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests/query_rendering/test_cumulative_metric_rendering.py @@ -11,10 +11,10 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index 56787a8c69..d37959bb55 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -9,11 +9,11 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index ddf1c6939b..a1d69f3fe2 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -12,10 +12,10 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests/query_rendering/test_granularity_date_part_rendering.py index 2a8956976e..f706a045af 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests/query_rendering/test_granularity_date_part_rendering.py @@ -11,10 +11,10 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, diff --git a/tests/query_rendering/test_metric_filter_rendering.py b/tests/query_rendering/test_metric_filter_rendering.py index 6cf9c066a5..49aba572e1 100644 --- a/tests/query_rendering/test_metric_filter_rendering.py +++ b/tests/query_rendering/test_metric_filter_rendering.py @@ -4,9 +4,9 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.query.query_parser import MetricFlowQueryParser from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_metric_time_without_metrics.py b/tests/query_rendering/test_metric_time_without_metrics.py index 95d40f0fb5..03a3ea8dc8 100644 --- a/tests/query_rendering/test_metric_time_without_metrics.py +++ b/tests/query_rendering/test_metric_time_without_metrics.py @@ -7,10 +7,10 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index f4ddd80727..b725e4937c 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -16,11 +16,11 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests/query_rendering/test_time_spine_join_rendering.py index 628404ab5e..6afac297a2 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests/query_rendering/test_time_spine_join_rendering.py @@ -12,10 +12,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataset.dataset_classes import DataSet -from metricflow.semantics.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, From 9c094dcd2de88555a4927f1a780f6fc0e97293b9 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 16:34:03 -0700 Subject: [PATCH 32/80] Move out dataset. --- metricflow/{semantics => }/dataset/__init__.py | 0 .../{semantics => }/dataset/convert_semantic_model.py | 4 ++-- metricflow/{semantics => }/dataset/dataset_classes.py | 0 .../{semantics => }/dataset/semantic_model_adapter.py | 2 +- metricflow/{semantics => }/dataset/sql_dataset.py | 2 +- metricflow/engine/metricflow_engine.py | 6 +++--- metricflow/plan_conversion/dataflow_to_sql.py | 4 ++-- metricflow/plan_conversion/sql_join_builder.py | 2 +- .../semantics/dataflow/builder/dataflow_plan_builder.py | 2 +- metricflow/semantics/dataflow/builder/node_data_set.py | 2 +- metricflow/semantics/dataflow/builder/node_evaluator.py | 4 ++-- metricflow/semantics/dataflow/builder/partitions.py | 2 +- metricflow/semantics/dataflow/builder/source_node.py | 4 ++-- metricflow/semantics/dataflow/nodes/read_sql_source.py | 2 +- .../semantics/model/data_warehouse_model_validator.py | 4 ++-- .../semantics/model/semantics/linkable_spec_resolver.py | 2 +- tests/dataflow/builder/test_dataflow_plan_builder.py | 2 +- tests/dataflow/builder/test_node_data_set.py | 2 +- tests/dataflow/builder/test_node_evaluator.py | 2 +- .../optimizer/source_scan/test_source_scan_optimizer.py | 2 +- tests/examples/test_node_sql.py | 2 +- tests/fixtures/manifest_fixtures.py | 4 ++-- tests/query_rendering/test_fill_nulls_with_rendering.py | 2 +- .../query_rendering/test_granularity_date_part_rendering.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- tests/query_rendering/test_time_spine_join_rendering.py | 2 +- tests/time/metric_time_dimension.py | 2 +- 27 files changed, 33 insertions(+), 33 deletions(-) rename metricflow/{semantics => }/dataset/__init__.py (100%) rename metricflow/{semantics => }/dataset/convert_semantic_model.py (99%) rename metricflow/{semantics => }/dataset/dataset_classes.py (100%) rename metricflow/{semantics => }/dataset/semantic_model_adapter.py (94%) rename metricflow/{semantics => }/dataset/sql_dataset.py (98%) diff --git a/metricflow/semantics/dataset/__init__.py b/metricflow/dataset/__init__.py similarity index 100% rename from metricflow/semantics/dataset/__init__.py rename to metricflow/dataset/__init__.py diff --git a/metricflow/semantics/dataset/convert_semantic_model.py b/metricflow/dataset/convert_semantic_model.py similarity index 99% rename from metricflow/semantics/dataset/convert_semantic_model.py rename to metricflow/dataset/convert_semantic_model.py index 48467c84d8..91b83f10f5 100644 --- a/metricflow/semantics/dataset/convert_semantic_model.py +++ b/metricflow/dataset/convert_semantic_model.py @@ -16,12 +16,12 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet +from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.dag.id_prefix import DynamicIdPrefix, StaticIdPrefix from metricflow.semantics.dag.sequential_id import SequentialIdGenerator -from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet -from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.instances import ( DimensionInstance, EntityInstance, diff --git a/metricflow/semantics/dataset/dataset_classes.py b/metricflow/dataset/dataset_classes.py similarity index 100% rename from metricflow/semantics/dataset/dataset_classes.py rename to metricflow/dataset/dataset_classes.py diff --git a/metricflow/semantics/dataset/semantic_model_adapter.py b/metricflow/dataset/semantic_model_adapter.py similarity index 94% rename from metricflow/semantics/dataset/semantic_model_adapter.py rename to metricflow/dataset/semantic_model_adapter.py index 8377d08744..91dba9268e 100644 --- a/metricflow/semantics/dataset/semantic_model_adapter.py +++ b/metricflow/dataset/semantic_model_adapter.py @@ -3,7 +3,7 @@ from dbt_semantic_interfaces.references import SemanticModelReference from typing_extensions import override -from metricflow.semantics.dataset.sql_dataset import SqlDataSet +from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.semantics.instances import InstanceSet from metricflow.sql.sql_plan import SqlSelectStatementNode diff --git a/metricflow/semantics/dataset/sql_dataset.py b/metricflow/dataset/sql_dataset.py similarity index 98% rename from metricflow/semantics/dataset/sql_dataset.py rename to metricflow/dataset/sql_dataset.py index 3a3812b929..404da4131c 100644 --- a/metricflow/semantics/dataset/sql_dataset.py +++ b/metricflow/dataset/sql_dataset.py @@ -5,8 +5,8 @@ from dbt_semantic_interfaces.references import SemanticModelReference from typing_extensions import override +from metricflow.dataset.dataset_classes import DataSet from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set -from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.instances import ( InstanceSet, ) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 413be9f0b2..e6e3f25d8c 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -13,6 +13,9 @@ from dbt_semantic_interfaces.references import EntityReference, MeasureReference, MetricReference from dbt_semantic_interfaces.type_enums import DimensionType +from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter +from metricflow.dataset.dataset_classes import DataSet +from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.engine.models import Dimension, Entity, Measure, Metric, SavedQuery from metricflow.engine.time_source import ServerTimeSource from metricflow.execution.convert_to_execution_plan import ConvertToExecutionPlanResult @@ -32,9 +35,6 @@ from metricflow.semantics.dataflow.optimizer.source_scan.source_scan_optimizer import ( SourceScanOptimizer, ) -from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter -from metricflow.semantics.dataset.dataset_classes import DataSet -from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.errors.error_classes import ExecutionException from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.mf_logging.formatting import indent diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index 83b3978a4b..f6641ad6d7 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -12,6 +12,8 @@ from dbt_semantic_interfaces.type_enums.conversion_calculation_type import ConversionCalculationType from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords +from metricflow.dataset.dataset_classes import DataSet +from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.plan_conversion.instance_converters import ( AddGroupByMetrics, @@ -75,8 +77,6 @@ from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode -from metricflow.semantics.dataset.dataset_classes import DataSet -from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.instances import ( GroupByMetricInstance, diff --git a/metricflow/plan_conversion/sql_join_builder.py b/metricflow/plan_conversion/sql_join_builder.py index 7c402b1532..d734d5137c 100644 --- a/metricflow/plan_conversion/sql_join_builder.py +++ b/metricflow/plan_conversion/sql_join_builder.py @@ -6,13 +6,13 @@ from dbt_semantic_interfaces.protocols.metric import MetricTimeWindow from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, diff --git a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py index 5b687c3faa..90d26a9d89 100644 --- a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py @@ -22,6 +22,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords +from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId @@ -54,7 +55,6 @@ from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.semantics.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer -from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.errors.error_classes import UnableToSatisfyQueryError from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.mf_logging.formatting import indent diff --git a/metricflow/semantics/dataflow/builder/node_data_set.py b/metricflow/semantics/dataflow/builder/node_data_set.py index 23745cd1f7..0a5f866adf 100644 --- a/metricflow/semantics/dataflow/builder/node_data_set.py +++ b/metricflow/semantics/dataflow/builder/node_data_set.py @@ -2,11 +2,11 @@ from typing import TYPE_CHECKING, Dict, Optional, Sequence +from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.dataflow.dataflow_plan import ( DataflowPlanNode, ) -from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.mf_logging.runtime import log_block_runtime from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/semantics/dataflow/builder/node_evaluator.py b/metricflow/semantics/dataflow/builder/node_evaluator.py index ba479ac287..12e6d5cdca 100644 --- a/metricflow/semantics/dataflow/builder/node_evaluator.py +++ b/metricflow/semantics/dataflow/builder/node_evaluator.py @@ -23,6 +23,8 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME +from metricflow.dataset.dataset_classes import DataSet +from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.partitions import ( @@ -35,8 +37,6 @@ from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, ValidityWindowJoinDescription from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.semantics.dataset.dataset_classes import DataSet -from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.instances import InstanceSet from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator diff --git a/metricflow/semantics/dataflow/builder/partitions.py b/metricflow/semantics/dataflow/builder/partitions.py index 19887c183c..a930e0c575 100644 --- a/metricflow/semantics/dataflow/builder/partitions.py +++ b/metricflow/semantics/dataflow/builder/partitions.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from typing import List, Sequence, Tuple -from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/metricflow/semantics/dataflow/builder/source_node.py b/metricflow/semantics/dataflow/builder/source_node.py index ef97d65484..989dd69edc 100644 --- a/metricflow/semantics/dataflow/builder/source_node.py +++ b/metricflow/semantics/dataflow/builder/source_node.py @@ -5,13 +5,13 @@ from dbt_semantic_interfaces.references import TimeDimensionReference +from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter +from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.dataflow.dataflow_plan import ( BaseOutput, ) from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter -from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/semantics/dataflow/nodes/read_sql_source.py b/metricflow/semantics/dataflow/nodes/read_sql_source.py index c7e8cb8917..44495e0472 100644 --- a/metricflow/semantics/dataflow/nodes/read_sql_source.py +++ b/metricflow/semantics/dataflow/nodes/read_sql_source.py @@ -5,10 +5,10 @@ import jinja2 +from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/model/data_warehouse_model_validator.py b/metricflow/semantics/model/data_warehouse_model_validator.py index 5751260fbe..cc782df0e4 100644 --- a/metricflow/semantics/model/data_warehouse_model_validator.py +++ b/metricflow/semantics/model/data_warehouse_model_validator.py @@ -29,6 +29,8 @@ ValidationWarning, ) +from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter +from metricflow.dataset.dataset_classes import DataSet from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter @@ -38,8 +40,6 @@ from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder from metricflow.semantics.dataflow.dataflow_plan import BaseOutput from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter -from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec from metricflow.sql.sql_bind_parameters import SqlBindParameters diff --git a/metricflow/semantics/model/semantics/linkable_spec_resolver.py b/metricflow/semantics/model/semantics/linkable_spec_resolver.py index e8ebd0e9c7..1be51d4b4f 100644 --- a/metricflow/semantics/model/semantics/linkable_spec_resolver.py +++ b/metricflow/semantics/model/semantics/linkable_spec_resolver.py @@ -19,7 +19,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.dataset.dataset_classes import DataSet from metricflow.semantics.errors.error_classes import UnknownMetricLinkingError from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.linkable_element import ( diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index 04114a1bca..e163c7eba4 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -9,8 +9,8 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataset.dataset_classes import DataSet from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.errors.error_classes import UnableToSatisfyQueryError from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.query.query_parser import MetricFlowQueryParser diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index 5fd670f2f8..dadd906207 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -6,13 +6,13 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelElementReference +from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.semantics.dataset.sql_dataset import SqlDataSet from metricflow.semantics.instances import ( InstanceSet, MeasureInstance, diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index 42e45388d3..0e3caca047 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -6,6 +6,7 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -17,7 +18,6 @@ from metricflow.semantics.dataflow.builder.partitions import PartitionTimeDimensionJoinDescription from metricflow.semantics.dataflow.builder.source_node import SourceNodeSet from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription -from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index 32a886332f..610a1c9b39 100644 --- a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -7,6 +7,7 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataset.dataset_classes import DataSet from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.dataflow.dataflow_plan import ( DataflowPlan, @@ -32,7 +33,6 @@ from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.semantics.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer -from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index e9bda04b48..37d2ef0c2a 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -6,6 +6,7 @@ from dbt_semantic_interfaces.references import SemanticModelReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient @@ -13,7 +14,6 @@ from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index 22b2a78b9c..05933a8716 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -17,6 +17,8 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator +from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter +from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.engine.metricflow_engine import MetricFlowEngine from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter @@ -25,8 +27,6 @@ from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder, SourceNodeSet from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.semantics.dataset.convert_semantic_model import SemanticModelToDataSetConverter -from metricflow.semantics.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index a1d69f3fe2..d2425316f1 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -12,10 +12,10 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests/query_rendering/test_granularity_date_part_rendering.py index f706a045af..59bb2a53a8 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests/query_rendering/test_granularity_date_part_rendering.py @@ -11,10 +11,10 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index b725e4937c..36a7f5e879 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -16,10 +16,10 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests/query_rendering/test_time_spine_join_rendering.py index 6afac297a2..5219020c75 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests/query_rendering/test_time_spine_join_rendering.py @@ -12,10 +12,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.dataset.dataset_classes import DataSet from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, diff --git a/tests/time/metric_time_dimension.py b/tests/time/metric_time_dimension.py index 02e519390f..ac7ea7d9be 100644 --- a/tests/time/metric_time_dimension.py +++ b/tests/time/metric_time_dimension.py @@ -2,7 +2,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.semantics.dataset.dataset_classes import DataSet +from metricflow.dataset.dataset_classes import DataSet # Shortcuts for referring to the metric time dimension. MTD = DataSet.metric_time_dimension_name() From 73580a400dadb958fce1a4e01371cde32c638ed4 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 16:39:58 -0700 Subject: [PATCH 33/80] Move out dataflow. --- .../{semantics => }/dataflow/__init__.py | 0 .../dataflow/builder/__init__.py | 0 .../dataflow/builder/dataflow_plan_builder.py | 50 +++++++++---------- .../dataflow/builder/measure_additiveness.py | 0 .../dataflow/builder/node_data_set.py | 6 +-- .../dataflow/builder/node_evaluator.py | 20 ++++---- .../dataflow/builder/partitions.py | 0 .../dataflow/builder/source_node.py | 10 ++-- .../{semantics => }/dataflow/dataflow_plan.py | 36 ++++++------- .../dataflow/nodes/__init__.py | 0 .../dataflow/nodes/add_generated_uuid.py | 2 +- .../dataflow/nodes/aggregate_measures.py | 2 +- .../nodes/combine_aggregated_outputs.py | 4 +- .../dataflow/nodes/compute_metrics.py | 6 +-- .../dataflow/nodes/constrain_time.py | 4 +- .../dataflow/nodes/filter_elements.py | 2 +- .../dataflow/nodes/join_conversion_events.py | 2 +- .../dataflow/nodes/join_over_time.py | 2 +- .../dataflow/nodes/join_to_base.py | 8 +-- .../dataflow/nodes/join_to_time_spine.py | 2 +- .../dataflow/nodes/metric_time_transform.py | 2 +- .../{semantics => }/dataflow/nodes/min_max.py | 2 +- .../dataflow/nodes/order_by_limit.py | 6 +-- .../dataflow/nodes/read_sql_source.py | 2 +- .../dataflow/nodes/semi_additive_join.py | 2 +- .../dataflow/nodes/where_filter.py | 4 +- .../dataflow/nodes/write_to_dataframe.py | 4 +- .../dataflow/nodes/write_to_table.py | 4 +- .../dataflow/optimizer/__init__.py | 0 .../optimizer/dataflow_plan_optimizer.py | 2 +- .../optimizer/source_scan/__init__.py | 0 .../source_scan/cm_branch_combiner.py | 40 +++++++-------- .../source_scan/matching_linkable_specs.py | 0 .../source_scan/source_scan_optimizer.py | 46 ++++++++--------- metricflow/engine/metricflow_engine.py | 14 +++--- metricflow/execution/dataflow_to_execution.py | 14 +++--- metricflow/plan_conversion/dataflow_to_sql.py | 46 ++++++++--------- .../plan_conversion/instance_converters.py | 2 +- metricflow/plan_conversion/node_processor.py | 14 +++--- .../plan_conversion/sql_join_builder.py | 8 +-- .../model/data_warehouse_model_validator.py | 8 +-- tests/dataflow/builder/test_cyclic_join.py | 2 +- .../builder/test_dataflow_plan_builder.py | 2 +- .../builder/test_measure_additiveness.py | 2 +- tests/dataflow/builder/test_node_data_set.py | 6 +-- tests/dataflow/builder/test_node_evaluator.py | 16 +++--- .../source_scan/test_cm_branch_combiner.py | 12 ++--- .../source_scan/test_source_scan_optimizer.py | 44 ++++++++-------- tests/examples/test_node_sql.py | 8 +-- tests/fixtures/dataflow_fixtures.py | 2 +- tests/fixtures/manifest_fixtures.py | 8 +-- .../test_conversion_metrics_to_sql.py | 2 +- .../test_distinct_values_to_sql.py | 2 +- .../test_metric_time_dimension_to_sql.py | 4 +- ...create_validity_window_join_description.py | 2 +- .../test_dataflow_to_execution.py | 2 +- .../test_dataflow_to_sql_plan.py | 34 ++++++------- .../query_rendering/compare_rendered_query.py | 2 +- .../test_cumulative_metric_rendering.py | 2 +- .../test_derived_metric_rendering.py | 2 +- .../test_fill_nulls_with_rendering.py | 2 +- .../test_granularity_date_part_rendering.py | 2 +- .../test_metric_filter_rendering.py | 2 +- .../test_metric_time_without_metrics.py | 2 +- tests/query_rendering/test_query_rendering.py | 2 +- .../test_time_spine_join_rendering.py | 2 +- tests/snapshot_utils.py | 2 +- 67 files changed, 272 insertions(+), 272 deletions(-) rename metricflow/{semantics => }/dataflow/__init__.py (100%) rename metricflow/{semantics => }/dataflow/builder/__init__.py (100%) rename metricflow/{semantics => }/dataflow/builder/dataflow_plan_builder.py (97%) rename metricflow/{semantics => }/dataflow/builder/measure_additiveness.py (100%) rename metricflow/{semantics => }/dataflow/builder/node_data_set.py (98%) rename metricflow/{semantics => }/dataflow/builder/node_evaluator.py (97%) rename metricflow/{semantics => }/dataflow/builder/partitions.py (100%) rename metricflow/{semantics => }/dataflow/builder/source_node.py (94%) rename metricflow/{semantics => }/dataflow/dataflow_plan.py (82%) rename metricflow/{semantics => }/dataflow/nodes/__init__.py (100%) rename metricflow/{semantics => }/dataflow/nodes/add_generated_uuid.py (93%) rename metricflow/{semantics => }/dataflow/nodes/aggregate_measures.py (96%) rename metricflow/{semantics => }/dataflow/nodes/combine_aggregated_outputs.py (96%) rename metricflow/{semantics => }/dataflow/nodes/compute_metrics.py (98%) rename metricflow/{semantics => }/dataflow/nodes/constrain_time.py (92%) rename metricflow/{semantics => }/dataflow/nodes/filter_elements.py (96%) rename metricflow/{semantics => }/dataflow/nodes/join_conversion_events.py (98%) rename metricflow/{semantics => }/dataflow/nodes/join_over_time.py (97%) rename metricflow/{semantics => }/dataflow/nodes/join_to_base.py (96%) rename metricflow/{semantics => }/dataflow/nodes/join_to_time_spine.py (98%) rename metricflow/{semantics => }/dataflow/nodes/metric_time_transform.py (96%) rename metricflow/{semantics => }/dataflow/nodes/min_max.py (92%) rename metricflow/{semantics => }/dataflow/nodes/order_by_limit.py (98%) rename metricflow/{semantics => }/dataflow/nodes/read_sql_source.py (95%) rename metricflow/{semantics => }/dataflow/nodes/semi_additive_join.py (98%) rename metricflow/{semantics => }/dataflow/nodes/where_filter.py (91%) rename metricflow/{semantics => }/dataflow/nodes/write_to_dataframe.py (96%) rename metricflow/{semantics => }/dataflow/nodes/write_to_table.py (97%) rename metricflow/{semantics => }/dataflow/optimizer/__init__.py (100%) rename metricflow/{semantics => }/dataflow/optimizer/dataflow_plan_optimizer.py (84%) rename metricflow/{semantics => }/dataflow/optimizer/source_scan/__init__.py (100%) rename metricflow/{semantics => }/dataflow/optimizer/source_scan/cm_branch_combiner.py (91%) rename metricflow/{semantics => }/dataflow/optimizer/source_scan/matching_linkable_specs.py (100%) rename metricflow/{semantics => }/dataflow/optimizer/source_scan/source_scan_optimizer.py (88%) diff --git a/metricflow/semantics/dataflow/__init__.py b/metricflow/dataflow/__init__.py similarity index 100% rename from metricflow/semantics/dataflow/__init__.py rename to metricflow/dataflow/__init__.py diff --git a/metricflow/semantics/dataflow/builder/__init__.py b/metricflow/dataflow/builder/__init__.py similarity index 100% rename from metricflow/semantics/dataflow/builder/__init__.py rename to metricflow/dataflow/builder/__init__.py diff --git a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py similarity index 97% rename from metricflow/semantics/dataflow/builder/dataflow_plan_builder.py rename to metricflow/dataflow/builder/dataflow_plan_builder.py index 90d26a9d89..0f5997fe7a 100644 --- a/metricflow/semantics/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -22,39 +22,39 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.dataset.dataset_classes import DataSet -from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.semantics.dataflow.builder.node_evaluator import ( +from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.dataflow.builder.node_evaluator import ( JoinLinkableInstancesRecipe, LinkableInstanceSatisfiabilityEvaluation, NodeEvaluatorForLinkableInstances, ) -from metricflow.semantics.dataflow.builder.source_node import SourceNodeSet -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.builder.source_node import SourceNodeSet +from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlan, SinkOutput, ) -from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode -from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode -from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode -from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode -from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode -from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode -from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.semantics.dataflow.nodes.min_max import MinMaxNode -from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode -from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode -from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode -from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode -from metricflow.semantics.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer +from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode +from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode +from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode +from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode +from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode +from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode +from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode +from metricflow.dataflow.nodes.min_max import MinMaxNode +from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode +from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode +from metricflow.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode +from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer +from metricflow.dataset.dataset_classes import DataSet +from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.errors.error_classes import UnableToSatisfyQueryError from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.mf_logging.formatting import indent diff --git a/metricflow/semantics/dataflow/builder/measure_additiveness.py b/metricflow/dataflow/builder/measure_additiveness.py similarity index 100% rename from metricflow/semantics/dataflow/builder/measure_additiveness.py rename to metricflow/dataflow/builder/measure_additiveness.py diff --git a/metricflow/semantics/dataflow/builder/node_data_set.py b/metricflow/dataflow/builder/node_data_set.py similarity index 98% rename from metricflow/semantics/dataflow/builder/node_data_set.py rename to metricflow/dataflow/builder/node_data_set.py index 0a5f866adf..6ce9d3263d 100644 --- a/metricflow/semantics/dataflow/builder/node_data_set.py +++ b/metricflow/dataflow/builder/node_data_set.py @@ -2,11 +2,11 @@ from typing import TYPE_CHECKING, Dict, Optional, Sequence -from metricflow.dataset.sql_dataset import SqlDataSet -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.dataflow_plan import ( DataflowPlanNode, ) +from metricflow.dataset.sql_dataset import SqlDataSet +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.semantics.mf_logging.runtime import log_block_runtime from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/semantics/dataflow/builder/node_evaluator.py b/metricflow/dataflow/builder/node_evaluator.py similarity index 97% rename from metricflow/semantics/dataflow/builder/node_evaluator.py rename to metricflow/dataflow/builder/node_evaluator.py index 12e6d5cdca..d7105e660c 100644 --- a/metricflow/semantics/dataflow/builder/node_evaluator.py +++ b/metricflow/dataflow/builder/node_evaluator.py @@ -23,20 +23,20 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow.dataset.dataset_classes import DataSet -from metricflow.dataset.sql_dataset import SqlDataSet -from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription -from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.semantics.dataflow.builder.partitions import ( +from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.dataflow.builder.partitions import ( PartitionDimensionJoinDescription, PartitionJoinResolver, PartitionTimeDimensionJoinDescription, ) -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput -from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, ValidityWindowJoinDescription -from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.dataflow.dataflow_plan import BaseOutput +from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.dataflow.nodes.join_to_base import JoinDescription, ValidityWindowJoinDescription +from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.dataset.dataset_classes import DataSet +from metricflow.dataset.sql_dataset import SqlDataSet +from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription from metricflow.semantics.instances import InstanceSet from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator diff --git a/metricflow/semantics/dataflow/builder/partitions.py b/metricflow/dataflow/builder/partitions.py similarity index 100% rename from metricflow/semantics/dataflow/builder/partitions.py rename to metricflow/dataflow/builder/partitions.py diff --git a/metricflow/semantics/dataflow/builder/source_node.py b/metricflow/dataflow/builder/source_node.py similarity index 94% rename from metricflow/semantics/dataflow/builder/source_node.py rename to metricflow/dataflow/builder/source_node.py index 989dd69edc..b08ed990ec 100644 --- a/metricflow/semantics/dataflow/builder/source_node.py +++ b/metricflow/dataflow/builder/source_node.py @@ -5,13 +5,13 @@ from dbt_semantic_interfaces.references import TimeDimensionReference -from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter -from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.dataflow_plan import ( BaseOutput, ) -from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode +from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode +from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter +from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/metricflow/semantics/dataflow/dataflow_plan.py b/metricflow/dataflow/dataflow_plan.py similarity index 82% rename from metricflow/semantics/dataflow/dataflow_plan.py rename to metricflow/dataflow/dataflow_plan.py index 12daa311ea..7c97706542 100644 --- a/metricflow/semantics/dataflow/dataflow_plan.py +++ b/metricflow/dataflow/dataflow_plan.py @@ -12,24 +12,24 @@ from metricflow.semantics.visitor import Visitable, VisitorOutputT if typing.TYPE_CHECKING: - from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode - from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode - from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode - from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode - from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode - from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode - from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode - from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode - from metricflow.semantics.dataflow.nodes.join_to_base import JoinToBaseOutputNode - from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode - from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode - from metricflow.semantics.dataflow.nodes.min_max import MinMaxNode - from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode - from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode - from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode - from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode - from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode - from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode + from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode + from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode + from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode + from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode + from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode + from metricflow.dataflow.nodes.filter_elements import FilterElementsNode + from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode + from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode + from metricflow.dataflow.nodes.join_to_base import JoinToBaseOutputNode + from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode + from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode + from metricflow.dataflow.nodes.min_max import MinMaxNode + from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode + from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode + from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode + from metricflow.dataflow.nodes.where_filter import WhereConstraintNode + from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode + from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dataflow/nodes/__init__.py b/metricflow/dataflow/nodes/__init__.py similarity index 100% rename from metricflow/semantics/dataflow/nodes/__init__.py rename to metricflow/dataflow/nodes/__init__.py diff --git a/metricflow/semantics/dataflow/nodes/add_generated_uuid.py b/metricflow/dataflow/nodes/add_generated_uuid.py similarity index 93% rename from metricflow/semantics/dataflow/nodes/add_generated_uuid.py rename to metricflow/dataflow/nodes/add_generated_uuid.py index 20c1ccee46..63c4a94b43 100644 --- a/metricflow/semantics/dataflow/nodes/add_generated_uuid.py +++ b/metricflow/dataflow/nodes/add_generated_uuid.py @@ -2,9 +2,9 @@ from typing import Sequence +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/aggregate_measures.py b/metricflow/dataflow/nodes/aggregate_measures.py similarity index 96% rename from metricflow/semantics/dataflow/nodes/aggregate_measures.py rename to metricflow/dataflow/nodes/aggregate_measures.py index f003f5483e..80410ecc35 100644 --- a/metricflow/semantics/dataflow/nodes/aggregate_measures.py +++ b/metricflow/dataflow/nodes/aggregate_measures.py @@ -3,8 +3,8 @@ from abc import ABC from typing import Sequence, Tuple +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import MetricInputMeasureSpec from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py b/metricflow/dataflow/nodes/combine_aggregated_outputs.py similarity index 96% rename from metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py rename to metricflow/dataflow/nodes/combine_aggregated_outputs.py index af47b10564..6f4493cd58 100644 --- a/metricflow/semantics/dataflow/nodes/combine_aggregated_outputs.py +++ b/metricflow/dataflow/nodes/combine_aggregated_outputs.py @@ -2,13 +2,13 @@ from typing import Sequence, Union -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.dataflow_plan import ( BaseOutput, ComputedMetricsOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/compute_metrics.py b/metricflow/dataflow/nodes/compute_metrics.py similarity index 98% rename from metricflow/semantics/dataflow/nodes/compute_metrics.py rename to metricflow/dataflow/nodes/compute_metrics.py index 2d2ea052b4..a5bac5d750 100644 --- a/metricflow/semantics/dataflow/nodes/compute_metrics.py +++ b/metricflow/dataflow/nodes/compute_metrics.py @@ -2,14 +2,14 @@ from typing import Sequence -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.dataflow_plan import ( BaseOutput, ComputedMetricsOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.specs.spec_classes import MetricSpec from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/constrain_time.py b/metricflow/dataflow/nodes/constrain_time.py similarity index 92% rename from metricflow/semantics/dataflow/nodes/constrain_time.py rename to metricflow/dataflow/nodes/constrain_time.py index 5570ce1120..0af3fc89ea 100644 --- a/metricflow/semantics/dataflow/nodes/constrain_time.py +++ b/metricflow/dataflow/nodes/constrain_time.py @@ -2,10 +2,10 @@ from typing import Sequence +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/filter_elements.py b/metricflow/dataflow/nodes/filter_elements.py similarity index 96% rename from metricflow/semantics/dataflow/nodes/filter_elements.py rename to metricflow/dataflow/nodes/filter_elements.py index 11c943af1e..feefbb6d68 100644 --- a/metricflow/semantics/dataflow/nodes/filter_elements.py +++ b/metricflow/dataflow/nodes/filter_elements.py @@ -2,9 +2,9 @@ from typing import Optional, Sequence, Tuple +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.specs.spec_classes import InstanceSpecSet from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/join_conversion_events.py b/metricflow/dataflow/nodes/join_conversion_events.py similarity index 98% rename from metricflow/semantics/dataflow/nodes/join_conversion_events.py rename to metricflow/dataflow/nodes/join_conversion_events.py index bdf3354b5f..4793bbe2fb 100644 --- a/metricflow/semantics/dataflow/nodes/join_conversion_events.py +++ b/metricflow/dataflow/nodes/join_conversion_events.py @@ -4,9 +4,9 @@ from dbt_semantic_interfaces.protocols import MetricTimeWindow +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import ( ConstantPropertySpec, EntitySpec, diff --git a/metricflow/semantics/dataflow/nodes/join_over_time.py b/metricflow/dataflow/nodes/join_over_time.py similarity index 97% rename from metricflow/semantics/dataflow/nodes/join_over_time.py rename to metricflow/dataflow/nodes/join_over_time.py index b63b639fd7..dc4b7112fb 100644 --- a/metricflow/semantics/dataflow/nodes/join_over_time.py +++ b/metricflow/dataflow/nodes/join_over_time.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.protocols import MetricTimeWindow from dbt_semantic_interfaces.type_enums import TimeGranularity +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty, NodeId -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/join_to_base.py b/metricflow/dataflow/nodes/join_to_base.py similarity index 96% rename from metricflow/semantics/dataflow/nodes/join_to_base.py rename to metricflow/dataflow/nodes/join_to_base.py index fea10c2508..c94dd6c5f9 100644 --- a/metricflow/semantics/dataflow/nodes/join_to_base.py +++ b/metricflow/dataflow/nodes/join_to_base.py @@ -3,13 +3,13 @@ from dataclasses import dataclass from typing import List, Optional, Sequence, Tuple -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty, NodeId -from metricflow.semantics.dataflow.builder.partitions import ( +from metricflow.dataflow.builder.partitions import ( PartitionDimensionJoinDescription, PartitionTimeDimensionJoinDescription, ) -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty, NodeId from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec from metricflow.semantics.visitor import VisitorOutputT from metricflow.sql.sql_plan import SqlJoinType diff --git a/metricflow/semantics/dataflow/nodes/join_to_time_spine.py b/metricflow/dataflow/nodes/join_to_time_spine.py similarity index 98% rename from metricflow/semantics/dataflow/nodes/join_to_time_spine.py rename to metricflow/dataflow/nodes/join_to_time_spine.py index c51d77f392..03311a748f 100644 --- a/metricflow/semantics/dataflow/nodes/join_to_time_spine.py +++ b/metricflow/dataflow/nodes/join_to_time_spine.py @@ -6,9 +6,9 @@ from dbt_semantic_interfaces.protocols import MetricTimeWindow from dbt_semantic_interfaces.type_enums import TimeGranularity +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/metric_time_transform.py b/metricflow/dataflow/nodes/metric_time_transform.py similarity index 96% rename from metricflow/semantics/dataflow/nodes/metric_time_transform.py rename to metricflow/dataflow/nodes/metric_time_transform.py index 4dfc9c316d..1094bd6201 100644 --- a/metricflow/semantics/dataflow/nodes/metric_time_transform.py +++ b/metricflow/dataflow/nodes/metric_time_transform.py @@ -4,9 +4,9 @@ from dbt_semantic_interfaces.references import TimeDimensionReference +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/min_max.py b/metricflow/dataflow/nodes/min_max.py similarity index 92% rename from metricflow/semantics/dataflow/nodes/min_max.py rename to metricflow/dataflow/nodes/min_max.py index daee902bed..616bc384dd 100644 --- a/metricflow/semantics/dataflow/nodes/min_max.py +++ b/metricflow/dataflow/nodes/min_max.py @@ -2,8 +2,8 @@ from typing import Sequence +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/order_by_limit.py b/metricflow/dataflow/nodes/order_by_limit.py similarity index 98% rename from metricflow/semantics/dataflow/nodes/order_by_limit.py rename to metricflow/dataflow/nodes/order_by_limit.py index ab149b1a2f..2dda37d447 100644 --- a/metricflow/semantics/dataflow/nodes/order_by_limit.py +++ b/metricflow/dataflow/nodes/order_by_limit.py @@ -2,14 +2,14 @@ from typing import Optional, Sequence, Union -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.dataflow_plan import ( BaseOutput, ComputedMetricsOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.specs.spec_classes import OrderBySpec from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/read_sql_source.py b/metricflow/dataflow/nodes/read_sql_source.py similarity index 95% rename from metricflow/semantics/dataflow/nodes/read_sql_source.py rename to metricflow/dataflow/nodes/read_sql_source.py index 44495e0472..02760c63c2 100644 --- a/metricflow/semantics/dataflow/nodes/read_sql_source.py +++ b/metricflow/dataflow/nodes/read_sql_source.py @@ -5,10 +5,10 @@ import jinja2 +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/semi_additive_join.py b/metricflow/dataflow/nodes/semi_additive_join.py similarity index 98% rename from metricflow/semantics/dataflow/nodes/semi_additive_join.py rename to metricflow/dataflow/nodes/semi_additive_join.py index 6ade6d0bf4..dfcf221bd5 100644 --- a/metricflow/semantics/dataflow/nodes/semi_additive_join.py +++ b/metricflow/dataflow/nodes/semi_additive_join.py @@ -4,9 +4,9 @@ from dbt_semantic_interfaces.type_enums import AggregationType +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/where_filter.py b/metricflow/dataflow/nodes/where_filter.py similarity index 91% rename from metricflow/semantics/dataflow/nodes/where_filter.py rename to metricflow/dataflow/nodes/where_filter.py index 983d3c5ecf..11eca03302 100644 --- a/metricflow/semantics/dataflow/nodes/where_filter.py +++ b/metricflow/dataflow/nodes/where_filter.py @@ -2,10 +2,10 @@ from typing import Sequence +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor +from metricflow.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput from metricflow.semantics.specs.spec_classes import WhereFilterSpec from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/write_to_dataframe.py b/metricflow/dataflow/nodes/write_to_dataframe.py similarity index 96% rename from metricflow/semantics/dataflow/nodes/write_to_dataframe.py rename to metricflow/dataflow/nodes/write_to_dataframe.py index 266a2c4736..63c7244c90 100644 --- a/metricflow/semantics/dataflow/nodes/write_to_dataframe.py +++ b/metricflow/dataflow/nodes/write_to_dataframe.py @@ -2,14 +2,14 @@ from typing import Sequence -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor, SinkNodeVisitor, SinkOutput, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.visitor import VisitorOutputT diff --git a/metricflow/semantics/dataflow/nodes/write_to_table.py b/metricflow/dataflow/nodes/write_to_table.py similarity index 97% rename from metricflow/semantics/dataflow/nodes/write_to_table.py rename to metricflow/dataflow/nodes/write_to_table.py index 7c644cdd9c..53072036af 100644 --- a/metricflow/semantics/dataflow/nodes/write_to_table.py +++ b/metricflow/dataflow/nodes/write_to_table.py @@ -2,14 +2,14 @@ from typing import Sequence -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor, SinkNodeVisitor, SinkOutput, ) +from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.visitor import VisitorOutputT from metricflow.sql.sql_table import SqlTable diff --git a/metricflow/semantics/dataflow/optimizer/__init__.py b/metricflow/dataflow/optimizer/__init__.py similarity index 100% rename from metricflow/semantics/dataflow/optimizer/__init__.py rename to metricflow/dataflow/optimizer/__init__.py diff --git a/metricflow/semantics/dataflow/optimizer/dataflow_plan_optimizer.py b/metricflow/dataflow/optimizer/dataflow_plan_optimizer.py similarity index 84% rename from metricflow/semantics/dataflow/optimizer/dataflow_plan_optimizer.py rename to metricflow/dataflow/optimizer/dataflow_plan_optimizer.py index 78eca94472..a43488c27c 100644 --- a/metricflow/semantics/dataflow/optimizer/dataflow_plan_optimizer.py +++ b/metricflow/dataflow/optimizer/dataflow_plan_optimizer.py @@ -2,7 +2,7 @@ from abc import ABC, abstractmethod -from metricflow.semantics.dataflow.dataflow_plan import DataflowPlan +from metricflow.dataflow.dataflow_plan import DataflowPlan class DataflowPlanOptimizer(ABC): diff --git a/metricflow/semantics/dataflow/optimizer/source_scan/__init__.py b/metricflow/dataflow/optimizer/source_scan/__init__.py similarity index 100% rename from metricflow/semantics/dataflow/optimizer/source_scan/__init__.py rename to metricflow/dataflow/optimizer/source_scan/__init__.py diff --git a/metricflow/semantics/dataflow/optimizer/source_scan/cm_branch_combiner.py b/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py similarity index 91% rename from metricflow/semantics/dataflow/optimizer/source_scan/cm_branch_combiner.py rename to metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py index 88e3f8bbaa..d057e3f74d 100644 --- a/metricflow/semantics/dataflow/optimizer/source_scan/cm_branch_combiner.py +++ b/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py @@ -4,30 +4,30 @@ from dataclasses import dataclass from typing import List, Optional, Sequence -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode -from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode -from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode -from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode -from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode -from metricflow.semantics.dataflow.nodes.join_to_base import JoinToBaseOutputNode -from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.semantics.dataflow.nodes.min_max import MinMaxNode -from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode -from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode -from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode -from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode -from metricflow.semantics.dataflow.optimizer.source_scan.matching_linkable_specs import MatchingLinkableSpecsTransform +from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode +from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode +from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode +from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode +from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode +from metricflow.dataflow.nodes.join_to_base import JoinToBaseOutputNode +from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode +from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.dataflow.nodes.min_max import MinMaxNode +from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode +from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode +from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode +from metricflow.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode +from metricflow.dataflow.optimizer.source_scan.matching_linkable_specs import MatchingLinkableSpecsTransform from metricflow.semantics.specs.spec_classes import MetricSpec logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dataflow/optimizer/source_scan/matching_linkable_specs.py b/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py similarity index 100% rename from metricflow/semantics/dataflow/optimizer/source_scan/matching_linkable_specs.py rename to metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py diff --git a/metricflow/semantics/dataflow/optimizer/source_scan/source_scan_optimizer.py b/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py similarity index 88% rename from metricflow/semantics/dataflow/optimizer/source_scan/source_scan_optimizer.py rename to metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py index 293b6d8591..464346105f 100644 --- a/metricflow/semantics/dataflow/optimizer/source_scan/source_scan_optimizer.py +++ b/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py @@ -4,38 +4,38 @@ from dataclasses import dataclass from typing import List, Optional, Sequence -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlan, DataflowPlanNode, DataflowPlanNodeVisitor, SinkOutput, ) -from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode -from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode -from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode -from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode -from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode -from metricflow.semantics.dataflow.nodes.join_to_base import JoinToBaseOutputNode -from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.semantics.dataflow.nodes.min_max import MinMaxNode -from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode -from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode -from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode -from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode -from metricflow.semantics.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer -from metricflow.semantics.dataflow.optimizer.source_scan.cm_branch_combiner import ( +from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode +from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode +from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode +from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode +from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode +from metricflow.dataflow.nodes.join_to_base import JoinToBaseOutputNode +from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode +from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.dataflow.nodes.min_max import MinMaxNode +from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode +from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode +from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode +from metricflow.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode +from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer +from metricflow.dataflow.optimizer.source_scan.cm_branch_combiner import ( ComputeMetricsBranchCombiner, ComputeMetricsBranchCombinerResult, ) +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId logger = logging.getLogger(__name__) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index e6e3f25d8c..f4c29709f4 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -13,6 +13,13 @@ from dbt_semantic_interfaces.references import EntityReference, MeasureReference, MetricReference from dbt_semantic_interfaces.type_enums import DimensionType +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.dataflow.builder.source_node import SourceNodeBuilder +from metricflow.dataflow.dataflow_plan import DataflowPlan +from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import ( + SourceScanOptimizer, +) from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.dataset_classes import DataSet from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet @@ -28,13 +35,6 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.sequential_id import SequentialIdGenerator -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder -from metricflow.semantics.dataflow.dataflow_plan import DataflowPlan -from metricflow.semantics.dataflow.optimizer.source_scan.source_scan_optimizer import ( - SourceScanOptimizer, -) from metricflow.semantics.errors.error_classes import ExecutionException from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.mf_logging.formatting import indent diff --git a/metricflow/execution/dataflow_to_execution.py b/metricflow/execution/dataflow_to_execution.py index 1590157d17..1773e0ce39 100644 --- a/metricflow/execution/dataflow_to_execution.py +++ b/metricflow/execution/dataflow_to_execution.py @@ -4,6 +4,13 @@ from typing_extensions import override +from metricflow.dataflow.dataflow_plan import ( + DataflowPlan, + DataflowPlanNode, + SinkNodeVisitor, +) +from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.execution.convert_to_execution_plan import ConvertToExecutionPlanResult from metricflow.execution.execution_plan import ( ExecutionPlan, @@ -13,13 +20,6 @@ from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.dataflow_plan import ( - DataflowPlan, - DataflowPlanNode, - SinkNodeVisitor, -) -from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderResult, SqlQueryPlanRenderer logger = logging.getLogger(__name__) diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index f6641ad6d7..c4f8b2a0c3 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -12,6 +12,29 @@ from dbt_semantic_interfaces.type_enums.conversion_calculation_type import ConversionCalculationType from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords +from metricflow.dataflow.dataflow_plan import ( + BaseOutput, + DataflowPlanNode, + DataflowPlanNodeVisitor, +) +from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode +from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode +from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode +from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode +from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode +from metricflow.dataflow.nodes.join_to_base import JoinToBaseOutputNode +from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode +from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.dataflow.nodes.min_max import MinMaxNode +from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode +from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode +from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode +from metricflow.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.dataset.dataset_classes import DataSet from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.convert_to_sql_plan import ConvertToSqlPlanResult @@ -54,29 +77,6 @@ from metricflow.semantics.dag.id_prefix import StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.dag.sequential_id import SequentialIdGenerator -from metricflow.semantics.dataflow.dataflow_plan import ( - BaseOutput, - DataflowPlanNode, - DataflowPlanNodeVisitor, -) -from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode -from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode -from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode -from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode -from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode -from metricflow.semantics.dataflow.nodes.join_to_base import JoinToBaseOutputNode -from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.semantics.dataflow.nodes.min_max import MinMaxNode -from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode -from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode -from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode -from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.instances import ( GroupByMetricInstance, diff --git a/metricflow/plan_conversion/instance_converters.py b/metricflow/plan_conversion/instance_converters.py index e1540a7ad7..f3e0f5b160 100644 --- a/metricflow/plan_conversion/instance_converters.py +++ b/metricflow/plan_conversion/instance_converters.py @@ -14,10 +14,10 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from more_itertools import bucket +from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.plan_conversion.select_column_gen import SelectColumnSet from metricflow.semantics.aggregation_properties import AggregationState from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set -from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.instances import ( DimensionInstance, EntityInstance, diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index 3b68fba6c3..bb3db41db6 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -6,15 +6,15 @@ from dbt_semantic_interfaces.references import EntityReference, TimeDimensionReference -from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.semantics.dataflow.builder.partitions import PartitionJoinResolver -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.dataflow.builder.partitions import PartitionJoinResolver +from metricflow.dataflow.dataflow_plan import ( BaseOutput, ) -from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode -from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode +from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS, SemanticModelJoinEvaluator diff --git a/metricflow/plan_conversion/sql_join_builder.py b/metricflow/plan_conversion/sql_join_builder.py index d734d5137c..f4e72d0692 100644 --- a/metricflow/plan_conversion/sql_join_builder.py +++ b/metricflow/plan_conversion/sql_join_builder.py @@ -6,13 +6,13 @@ from dbt_semantic_interfaces.protocols.metric import MetricTimeWindow from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode +from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode +from metricflow.dataflow.nodes.join_to_base import JoinDescription +from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set -from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode -from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode -from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription -from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, diff --git a/metricflow/semantics/model/data_warehouse_model_validator.py b/metricflow/semantics/model/data_warehouse_model_validator.py index cc782df0e4..ff42fd1c3d 100644 --- a/metricflow/semantics/model/data_warehouse_model_validator.py +++ b/metricflow/semantics/model/data_warehouse_model_validator.py @@ -29,6 +29,10 @@ ValidationWarning, ) +from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.dataflow.builder.source_node import SourceNodeBuilder +from metricflow.dataflow.dataflow_plan import BaseOutput +from metricflow.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.dataset_classes import DataSet from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest @@ -36,10 +40,6 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput -from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec from metricflow.sql.sql_bind_parameters import SqlBindParameters diff --git a/tests/dataflow/builder/test_cyclic_join.py b/tests/dataflow/builder/test_cyclic_join.py index bca8250eeb..28c4119c9c 100644 --- a/tests/dataflow/builder/test_cyclic_join.py +++ b/tests/dataflow/builder/test_cyclic_join.py @@ -7,7 +7,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import EntityReference -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index e163c7eba4..74af882859 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -9,8 +9,8 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.errors.error_classes import UnableToSatisfyQueryError from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.query.query_parser import MetricFlowQueryParser diff --git a/tests/dataflow/builder/test_measure_additiveness.py b/tests/dataflow/builder/test_measure_additiveness.py index 1f19e92fe5..9faf91d7d8 100644 --- a/tests/dataflow/builder/test_measure_additiveness.py +++ b/tests/dataflow/builder/test_measure_additiveness.py @@ -2,7 +2,7 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType -from metricflow.semantics.dataflow.builder.measure_additiveness import group_measure_specs_by_additiveness +from metricflow.dataflow.builder.measure_additiveness import group_measure_specs_by_additiveness from metricflow.semantics.specs.spec_classes import MeasureSpec, NonAdditiveDimensionSpec diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index dadd906207..0c8746fe0b 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -6,13 +6,13 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelElementReference +from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode +from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.aggregation_properties import AggregationState -from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode -from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.semantics.instances import ( InstanceSet, MeasureInstance, diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index 0e3caca047..47f1eff1d4 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -6,18 +6,18 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataset.dataset_classes import DataSet -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor -from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.semantics.dataflow.builder.node_evaluator import ( +from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.dataflow.builder.node_evaluator import ( JoinLinkableInstancesRecipe, LinkableInstanceSatisfiabilityEvaluation, NodeEvaluatorForLinkableInstances, ) -from metricflow.semantics.dataflow.builder.partitions import PartitionTimeDimensionJoinDescription -from metricflow.semantics.dataflow.builder.source_node import SourceNodeSet -from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription +from metricflow.dataflow.builder.partitions import PartitionTimeDimensionJoinDescription +from metricflow.dataflow.builder.source_node import SourceNodeSet +from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription +from metricflow.dataset.dataset_classes import DataSet +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py index d76010ed26..e7a1df5124 100644 --- a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py +++ b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py @@ -5,18 +5,18 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlan, ) -from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.semantics.dataflow.optimizer.source_scan.cm_branch_combiner import ( +from metricflow.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.dataflow.optimizer.source_scan.cm_branch_combiner import ( ComputeMetricsBranchCombiner, ComputeMetricsBranchCombinerResult, ) +from metricflow.semantics.dag.id_prefix import StaticIdPrefix +from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index 610a1c9b39..93e90d186c 100644 --- a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -7,32 +7,32 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.dataset.dataset_classes import DataSet -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.dataflow.dataflow_plan import ( DataflowPlan, DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.semantics.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode -from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode -from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode -from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.semantics.dataflow.nodes.join_conversion_events import JoinConversionEventsNode -from metricflow.semantics.dataflow.nodes.join_over_time import JoinOverTimeRangeNode -from metricflow.semantics.dataflow.nodes.join_to_base import JoinToBaseOutputNode -from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.semantics.dataflow.nodes.min_max import MinMaxNode -from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode -from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode -from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode -from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode -from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode -from metricflow.semantics.dataflow.nodes.write_to_table import WriteToResultTableNode -from metricflow.semantics.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer +from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode +from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode +from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode +from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode +from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode +from metricflow.dataflow.nodes.join_to_base import JoinToBaseOutputNode +from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode +from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.dataflow.nodes.min_max import MinMaxNode +from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode +from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode +from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode +from metricflow.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode +from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer +from metricflow.dataset.dataset_classes import DataSet from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import ( diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index 37d2ef0c2a..f599b77e84 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -6,14 +6,14 @@ from dbt_semantic_interfaces.references import SemanticModelReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec diff --git a/tests/fixtures/dataflow_fixtures.py b/tests/fixtures/dataflow_fixtures.py index 1c4363fbb6..5e6fe07466 100644 --- a/tests/fixtures/dataflow_fixtures.py +++ b/tests/fixtures/dataflow_fixtures.py @@ -4,9 +4,9 @@ import pytest +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index 05933a8716..e1c7bdb4ec 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -17,16 +17,16 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.dataflow.builder.source_node import SourceNodeBuilder, SourceNodeSet +from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.engine.metricflow_engine import MetricFlowEngine from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver -from metricflow.semantics.dataflow.builder.source_node import SourceNodeBuilder, SourceNodeSet -from metricflow.semantics.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py index 80af323bf6..7c651e34f9 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, diff --git a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index 76d3f06ee3..d7ea005d22 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.references import EntityReference +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec diff --git a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index 09d43b4f86..8a7c886990 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -6,10 +6,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import TimeDimensionReference +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.semantics.specs.spec_classes import MetricFlowQuerySpec, MetricSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py index 1b9d240880..155428fd0a 100644 --- a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py +++ b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py @@ -5,8 +5,8 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription -from metricflow.semantics.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.semantics.instances import InstanceSet from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import TimeDimensionSpec diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index 7c8c8e801f..3aecc2dedf 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -3,11 +3,11 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.execution.dataflow_to_execution import DataflowToExecutionPlanConverter from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index 23cd753d5c..14ac8269c7 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -10,26 +10,26 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.dataflow.dataflow_plan import ( +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlan, ) -from metricflow.semantics.dataflow.nodes.aggregate_measures import AggregateMeasuresNode -from metricflow.semantics.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode -from metricflow.semantics.dataflow.nodes.compute_metrics import ComputeMetricsNode -from metricflow.semantics.dataflow.nodes.constrain_time import ConstrainTimeRangeNode -from metricflow.semantics.dataflow.nodes.filter_elements import FilterElementsNode -from metricflow.semantics.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode -from metricflow.semantics.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode -from metricflow.semantics.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.semantics.dataflow.nodes.order_by_limit import OrderByLimitNode -from metricflow.semantics.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode -from metricflow.semantics.dataflow.nodes.where_filter import WhereConstraintNode -from metricflow.semantics.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode +from metricflow.dataflow.nodes.combine_aggregated_outputs import CombineAggregatedOutputsNode +from metricflow.dataflow.nodes.compute_metrics import ComputeMetricsNode +from metricflow.dataflow.nodes.constrain_time import ConstrainTimeRangeNode +from metricflow.dataflow.nodes.filter_elements import FilterElementsNode +from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode +from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode +from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.dataflow.nodes.order_by_limit import OrderByLimitNode +from metricflow.dataflow.nodes.semi_additive_join import SemiAdditiveJoinNode +from metricflow.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/tests/query_rendering/compare_rendered_query.py b/tests/query_rendering/compare_rendered_query.py index 03b2e5e377..ee6ecad8fc 100644 --- a/tests/query_rendering/compare_rendered_query.py +++ b/tests/query_rendering/compare_rendered_query.py @@ -4,10 +4,10 @@ from _pytest.fixtures import FixtureRequest +from metricflow.dataflow.dataflow_plan import BaseOutput from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.dataflow.dataflow_plan import BaseOutput from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests/query_rendering/test_cumulative_metric_rendering.py index da1e62fd2b..3af3fed849 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests/query_rendering/test_cumulative_metric_rendering.py @@ -11,9 +11,9 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index d37959bb55..3001360616 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -9,9 +9,9 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme from metricflow.semantics.query.query_parser import MetricFlowQueryParser diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index d2425316f1..43fda0a5d0 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -12,10 +12,10 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.spec_classes import ( DimensionSpec, diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests/query_rendering/test_granularity_date_part_rendering.py index 59bb2a53a8..a5b08dc7be 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests/query_rendering/test_granularity_date_part_rendering.py @@ -11,10 +11,10 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, diff --git a/tests/query_rendering/test_metric_filter_rendering.py b/tests/query_rendering/test_metric_filter_rendering.py index 49aba572e1..8e68134ebd 100644 --- a/tests/query_rendering/test_metric_filter_rendering.py +++ b/tests/query_rendering/test_metric_filter_rendering.py @@ -4,9 +4,9 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.query.query_parser import MetricFlowQueryParser from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_metric_time_without_metrics.py b/tests/query_rendering/test_metric_time_without_metrics.py index 03a3ea8dc8..2a4db8d66d 100644 --- a/tests/query_rendering/test_metric_time_without_metrics.py +++ b/tests/query_rendering/test_metric_time_without_metrics.py @@ -7,9 +7,9 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index 36a7f5e879..59ebeba58c 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -16,10 +16,10 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.query.query_parser import MetricFlowQueryParser from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests/query_rendering/test_time_spine_join_rendering.py index 5219020c75..9f585ae15f 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests/query_rendering/test_time_spine_join_rendering.py @@ -12,10 +12,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index 78a058cb4c..51eaceeea9 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -7,10 +7,10 @@ import tabulate from _pytest.fixtures import FixtureRequest +from metricflow.dataflow.dataflow_plan import DataflowPlan from metricflow.execution.execution_plan import ExecutionPlan from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.dag.mf_dag import MetricFlowDag -from metricflow.semantics.dataflow.dataflow_plan import DataflowPlan from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.linkable_spec_resolver import LinkableElementSet from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme From 249cd1bbe779415f9af5c55c0c4aa5fe4178fb92 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 16:58:24 -0700 Subject: [PATCH 34/80] Move out time. --- metricflow/engine/metricflow_engine.py | 2 +- metricflow/engine/time_source.py | 2 +- metricflow/plan_conversion/dataflow_to_sql.py | 2 +- metricflow/semantics/filters/time_constraint.py | 2 +- metricflow/semantics/query/query_parser.py | 2 +- metricflow/semantics/test_helpers.py | 2 +- metricflow/{ => semantics}/time/__init__.py | 0 metricflow/{ => semantics}/time/time_constants.py | 0 metricflow/{ => semantics}/time/time_granularity.py | 0 metricflow/{ => semantics}/time/time_source.py | 0 tests/plan_conversion/test_time_spine.py | 2 +- tests/sql_clients/test_date_time_operations.py | 2 +- 12 files changed, 8 insertions(+), 8 deletions(-) rename metricflow/{ => semantics}/time/__init__.py (100%) rename metricflow/{ => semantics}/time/time_constants.py (100%) rename metricflow/{ => semantics}/time/time_granularity.py (100%) rename metricflow/{ => semantics}/time/time_source.py (100%) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index f4c29709f4..1d9f1bee88 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -53,11 +53,11 @@ from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.query_param_implementations import SavedQueryParameter from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec +from metricflow.semantics.time.time_source import TimeSource from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.sql_table import SqlTable from metricflow.telemetry.models import TelemetryLevel from metricflow.telemetry.reporter import TelemetryReporter, log_call -from metricflow.time.time_source import TimeSource logger = logging.getLogger(__name__) _telemetry_reporter = TelemetryReporter(report_levels_higher_or_equal_to=TelemetryLevel.USAGE) diff --git a/metricflow/engine/time_source.py b/metricflow/engine/time_source.py index 7b021f2736..076098079a 100644 --- a/metricflow/engine/time_source.py +++ b/metricflow/engine/time_source.py @@ -2,7 +2,7 @@ import datetime as dt -from metricflow.time.time_source import TimeSource +from metricflow.semantics.time.time_source import TimeSource class ServerTimeSource(TimeSource): diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index c4f8b2a0c3..194f53c56e 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -100,6 +100,7 @@ MetricSpec, TimeDimensionSpec, ) +from metricflow.semantics.time.time_constants import ISO8601_PYTHON_FORMAT from metricflow.sql.optimizer.optimization_levels import ( SqlQueryOptimizationLevel, SqlQueryOptimizerConfiguration, @@ -137,7 +138,6 @@ SqlSelectStatementNode, SqlTableFromClauseNode, ) -from metricflow.time.time_constants import ISO8601_PYTHON_FORMAT logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/filters/time_constraint.py b/metricflow/semantics/filters/time_constraint.py index b7a00ef6cb..00e5244816 100644 --- a/metricflow/semantics/filters/time_constraint.py +++ b/metricflow/semantics/filters/time_constraint.py @@ -9,7 +9,7 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.time.time_granularity import offset_period +from metricflow.semantics.time.time_granularity import offset_period logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/query/query_parser.py b/metricflow/semantics/query/query_parser.py index 424df96c70..0c03050564 100644 --- a/metricflow/semantics/query/query_parser.py +++ b/metricflow/semantics/query/query_parser.py @@ -60,7 +60,7 @@ MetricFlowQuerySpec, TimeDimensionSpec, ) -from metricflow.time.time_granularity import ( +from metricflow.semantics.time.time_granularity import ( adjust_to_end_of_period, adjust_to_start_of_period, is_period_end, diff --git a/metricflow/semantics/test_helpers.py b/metricflow/semantics/test_helpers.py index 3603bb4276..8aead38a48 100644 --- a/metricflow/semantics/test_helpers.py +++ b/metricflow/semantics/test_helpers.py @@ -11,7 +11,7 @@ import _pytest.fixtures -from metricflow.time.time_source import TimeSource +from metricflow.semantics.time.time_source import TimeSource logger = logging.getLogger(__name__) diff --git a/metricflow/time/__init__.py b/metricflow/semantics/time/__init__.py similarity index 100% rename from metricflow/time/__init__.py rename to metricflow/semantics/time/__init__.py diff --git a/metricflow/time/time_constants.py b/metricflow/semantics/time/time_constants.py similarity index 100% rename from metricflow/time/time_constants.py rename to metricflow/semantics/time/time_constants.py diff --git a/metricflow/time/time_granularity.py b/metricflow/semantics/time/time_granularity.py similarity index 100% rename from metricflow/time/time_granularity.py rename to metricflow/semantics/time/time_granularity.py diff --git a/metricflow/time/time_source.py b/metricflow/semantics/time/time_source.py similarity index 100% rename from metricflow/time/time_source.py rename to metricflow/semantics/time/time_source.py diff --git a/tests/plan_conversion/test_time_spine.py b/tests/plan_conversion/test_time_spine.py index f8e00aa0dd..c55fb0e39a 100644 --- a/tests/plan_conversion/test_time_spine.py +++ b/tests/plan_conversion/test_time_spine.py @@ -5,7 +5,7 @@ from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.time.time_constants import ISO8601_PYTHON_TS_FORMAT +from metricflow.semantics.time.time_constants import ISO8601_PYTHON_TS_FORMAT def test_date_spine_date_range( # noqa: D103 diff --git a/tests/sql_clients/test_date_time_operations.py b/tests/sql_clients/test_date_time_operations.py index 60d77f6bae..9387214501 100644 --- a/tests/sql_clients/test_date_time_operations.py +++ b/tests/sql_clients/test_date_time_operations.py @@ -24,13 +24,13 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.time.time_granularity import TimeGranularity from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlDateTruncExpression, SqlExtractExpression, SqlStringLiteralExpression, ) -from metricflow.time.time_granularity import TimeGranularity logger = logging.getLogger(__name__) From 89bef6f1291fd517acde93e40fea05b55c184a67 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 17:06:53 -0700 Subject: [PATCH 35/80] Move out `data_warehouse_model_validator.py`. --- dbt-metricflow/dbt_metricflow/cli/main.py | 2 +- metricflow/validation/__init__.py | 0 .../model => validation}/data_warehouse_model_validator.py | 0 tests/model/test_data_warehouse_tasks.py | 4 ++-- 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 metricflow/validation/__init__.py rename metricflow/{semantics/model => validation}/data_warehouse_model_validator.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/main.py b/dbt-metricflow/dbt_metricflow/cli/main.py index 357628296d..9fc1893b03 100644 --- a/dbt-metricflow/dbt_metricflow/cli/main.py +++ b/dbt-metricflow/dbt_metricflow/cli/main.py @@ -37,9 +37,9 @@ ) from metricflow.engine.metricflow_engine import MetricFlowExplainResult, MetricFlowQueryRequest, MetricFlowQueryResult from metricflow.semantics.dag.dag_visualization import display_dag_as_svg -from metricflow.semantics.model.data_warehouse_model_validator import DataWarehouseModelValidator from metricflow.telemetry.models import TelemetryLevel from metricflow.telemetry.reporter import TelemetryReporter, log_call +from metricflow.validation.data_warehouse_model_validator import DataWarehouseModelValidator logger = logging.getLogger(__name__) diff --git a/metricflow/validation/__init__.py b/metricflow/validation/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metricflow/semantics/model/data_warehouse_model_validator.py b/metricflow/validation/data_warehouse_model_validator.py similarity index 100% rename from metricflow/semantics/model/data_warehouse_model_validator.py rename to metricflow/validation/data_warehouse_model_validator.py diff --git a/tests/model/test_data_warehouse_tasks.py b/tests/model/test_data_warehouse_tasks.py index e900e3ba62..d3731bf4a6 100644 --- a/tests/model/test_data_warehouse_tasks.py +++ b/tests/model/test_data_warehouse_tasks.py @@ -16,12 +16,12 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.model.data_warehouse_model_validator import ( +from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.validation.data_warehouse_model_validator import ( DataWarehouseModelValidator, DataWarehouseTaskBuilder, DataWarehouseValidationTask, ) -from metricflow.sql.sql_bind_parameters import SqlBindParameters from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import ( assert_sql_snapshot_equal, From e629e9db3d50288aff3af5ff83884179f753a6a3 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 17:11:03 -0700 Subject: [PATCH 36/80] Move `sql_bind_parameters.py.` --- .../dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py | 2 +- metricflow/execution/execution_plan.py | 2 +- metricflow/protocols/sql_client.py | 2 +- metricflow/semantics/specs/spec_classes.py | 2 +- metricflow/semantics/specs/where_filter_transform.py | 2 +- metricflow/semantics/sql/__init__.py | 0 metricflow/{ => semantics}/sql/sql_bind_parameters.py | 0 metricflow/sql/render/big_query.py | 2 +- metricflow/sql/render/duckdb_renderer.py | 2 +- metricflow/sql/render/expr_renderer.py | 2 +- metricflow/sql/render/postgres.py | 2 +- metricflow/sql/render/redshift.py | 2 +- metricflow/sql/render/snowflake.py | 2 +- metricflow/sql/render/sql_plan_renderer.py | 2 +- metricflow/sql/render/trino.py | 2 +- metricflow/sql/sql_exprs.py | 2 +- metricflow/validation/data_warehouse_model_validator.py | 2 +- tests/execution/test_tasks.py | 2 +- tests/fixtures/sql_clients/base_sql_client_implementation.py | 2 +- tests/fixtures/sql_clients/sqlalchemy_dialect.py | 2 +- tests/model/test_data_warehouse_tasks.py | 2 +- tests/plan_conversion/test_dataflow_to_sql_plan.py | 2 +- tests/sql/test_bind_parameter_serialization.py | 2 +- tests/sql_clients/test_sql_client.py | 2 +- 24 files changed, 22 insertions(+), 22 deletions(-) create mode 100644 metricflow/semantics/sql/__init__.py rename metricflow/{ => semantics}/sql/sql_bind_parameters.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py index 4f536a30ef..e90b6173fd 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py @@ -14,6 +14,7 @@ from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.random_id import random_id +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.big_query import BigQuerySqlQueryPlanRenderer from metricflow.sql.render.databricks import DatabricksSqlQueryPlanRenderer from metricflow.sql.render.duckdb_renderer import DuckDbSqlQueryPlanRenderer @@ -22,7 +23,6 @@ from metricflow.sql.render.snowflake import SnowflakeSqlQueryPlanRenderer from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer from metricflow.sql.render.trino import TrinoSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql_request.sql_request_attributes import SqlRequestId logger = logging.getLogger(__name__) diff --git a/metricflow/execution/execution_plan.py b/metricflow/execution/execution_plan.py index 591945ff00..59f90b7641 100644 --- a/metricflow/execution/execution_plan.py +++ b/metricflow/execution/execution_plan.py @@ -11,8 +11,8 @@ from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.semantics.visitor import Visitable -from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/protocols/sql_client.py b/metricflow/protocols/sql_client.py index 6f026eff21..d9d7e5457c 100644 --- a/metricflow/protocols/sql_client.py +++ b/metricflow/protocols/sql_client.py @@ -6,8 +6,8 @@ from pandas import DataFrame +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters class SqlEngine(Enum): diff --git a/metricflow/semantics/specs/spec_classes.py b/metricflow/semantics/specs/spec_classes.py index 9c3f12af8c..aa10488fa3 100644 --- a/metricflow/semantics/specs/spec_classes.py +++ b/metricflow/semantics/specs/spec_classes.py @@ -42,8 +42,8 @@ from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ) +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.semantics.visitor import VisitorOutputT -from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_column_type import SqlColumnType from metricflow.sql.sql_plan import SqlJoinType diff --git a/metricflow/semantics/specs/where_filter_transform.py b/metricflow/semantics/specs/where_filter_transform.py index 5b18d35882..ef27c5cc36 100644 --- a/metricflow/semantics/specs/where_filter_transform.py +++ b/metricflow/semantics/specs/where_filter_transform.py @@ -18,7 +18,7 @@ from metricflow.semantics.specs.where_filter_entity import WhereFilterEntityFactory from metricflow.semantics.specs.where_filter_metric import WhereFilterMetricFactory from metricflow.semantics.specs.where_filter_time_dimension import WhereFilterTimeDimensionFactory -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/sql/__init__.py b/metricflow/semantics/sql/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metricflow/sql/sql_bind_parameters.py b/metricflow/semantics/sql/sql_bind_parameters.py similarity index 100% rename from metricflow/sql/sql_bind_parameters.py rename to metricflow/semantics/sql/sql_bind_parameters.py diff --git a/metricflow/sql/render/big_query.py b/metricflow/sql/render/big_query.py index 58d8e76c13..aeb1045fea 100644 --- a/metricflow/sql/render/big_query.py +++ b/metricflow/sql/render/big_query.py @@ -9,13 +9,13 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlDateTruncExpression, diff --git a/metricflow/sql/render/duckdb_renderer.py b/metricflow/sql/render/duckdb_renderer.py index 451fb05398..349a55f861 100644 --- a/metricflow/sql/render/duckdb_renderer.py +++ b/metricflow/sql/render/duckdb_renderer.py @@ -6,13 +6,13 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_exprs import ( SqlGenerateUuidExpression, SqlPercentileExpression, diff --git a/metricflow/sql/render/expr_renderer.py b/metricflow/sql/render/expr_renderer.py index 3f699f2516..af87e3f61c 100644 --- a/metricflow/sql/render/expr_renderer.py +++ b/metricflow/sql/render/expr_renderer.py @@ -13,8 +13,8 @@ from typing_extensions import override from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.rendering_constants import SqlRenderingConstants -from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlBetweenExpression, diff --git a/metricflow/sql/render/postgres.py b/metricflow/sql/render/postgres.py index cce02295b4..125603fea3 100644 --- a/metricflow/sql/render/postgres.py +++ b/metricflow/sql/render/postgres.py @@ -7,13 +7,13 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_exprs import ( SqlGenerateUuidExpression, SqlPercentileExpression, diff --git a/metricflow/sql/render/redshift.py b/metricflow/sql/render/redshift.py index e971bc2b1f..ead0bf050f 100644 --- a/metricflow/sql/render/redshift.py +++ b/metricflow/sql/render/redshift.py @@ -7,13 +7,13 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_exprs import ( SqlExtractExpression, SqlGenerateUuidExpression, diff --git a/metricflow/sql/render/snowflake.py b/metricflow/sql/render/snowflake.py index 12edaacf4f..4eebe82cda 100644 --- a/metricflow/sql/render/snowflake.py +++ b/metricflow/sql/render/snowflake.py @@ -7,13 +7,13 @@ from typing_extensions import override from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_exprs import ( SqlGenerateUuidExpression, SqlPercentileExpression, diff --git a/metricflow/sql/render/sql_plan_renderer.py b/metricflow/sql/render/sql_plan_renderer.py index c5618aee8c..1dfbe56e38 100644 --- a/metricflow/sql/render/sql_plan_renderer.py +++ b/metricflow/sql/render/sql_plan_renderer.py @@ -8,13 +8,13 @@ from typing import List, Optional, Sequence, Tuple from metricflow.semantics.mf_logging.formatting import indent +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) from metricflow.sql.render.rendering_constants import SqlRenderingConstants -from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, diff --git a/metricflow/sql/render/trino.py b/metricflow/sql/render/trino.py index b767240f21..6c4981b0e7 100644 --- a/metricflow/sql/render/trino.py +++ b/metricflow/sql/render/trino.py @@ -8,13 +8,13 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult, ) from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_exprs import ( SqlBetweenExpression, SqlGenerateUuidExpression, diff --git a/metricflow/sql/sql_exprs.py b/metricflow/sql/sql_exprs.py index f1384f49bd..eab2789667 100644 --- a/metricflow/sql/sql_exprs.py +++ b/metricflow/sql/sql_exprs.py @@ -17,8 +17,8 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagNode, DisplayedProperty, NodeId +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.semantics.visitor import Visitable, VisitorOutputT -from metricflow.sql.sql_bind_parameters import SqlBindParameters class SqlExpressionNode(DagNode, Visitable, ABC): diff --git a/metricflow/validation/data_warehouse_model_validator.py b/metricflow/validation/data_warehouse_model_validator.py index ff42fd1c3d..f6535df314 100644 --- a/metricflow/validation/data_warehouse_model_validator.py +++ b/metricflow/validation/data_warehouse_model_validator.py @@ -42,7 +42,7 @@ from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters @dataclass diff --git a/tests/execution/test_tasks.py b/tests/execution/test_tasks.py index 1f3882731d..d15b8cd74c 100644 --- a/tests/execution/test_tasks.py +++ b/tests/execution/test_tasks.py @@ -11,7 +11,7 @@ from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.dag.mf_dag import DagId from metricflow.semantics.random_id import random_id -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/fixtures/sql_clients/base_sql_client_implementation.py b/tests/fixtures/sql_clients/base_sql_client_implementation.py index 6e6a5af5e5..d90c971cc4 100644 --- a/tests/fixtures/sql_clients/base_sql_client_implementation.py +++ b/tests/fixtures/sql_clients/base_sql_client_implementation.py @@ -13,7 +13,7 @@ from metricflow.semantics.mf_logging.formatting import indent from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.random_id import random_id -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from metricflow.sql_request.sql_request_attributes import SqlRequestId diff --git a/tests/fixtures/sql_clients/sqlalchemy_dialect.py b/tests/fixtures/sql_clients/sqlalchemy_dialect.py index 885d5726c7..04d50e20cc 100644 --- a/tests/fixtures/sql_clients/sqlalchemy_dialect.py +++ b/tests/fixtures/sql_clients/sqlalchemy_dialect.py @@ -9,7 +9,7 @@ import pandas as pd import sqlalchemy -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from tests.fixtures.sql_clients.base_sql_client_implementation import BaseSqlClientImplementation diff --git a/tests/model/test_data_warehouse_tasks.py b/tests/model/test_data_warehouse_tasks.py index d3731bf4a6..3409945240 100644 --- a/tests/model/test_data_warehouse_tasks.py +++ b/tests/model/test_data_warehouse_tasks.py @@ -16,7 +16,7 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from metricflow.protocols.sql_client import SqlClient -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.validation.data_warehouse_model_validator import ( DataWarehouseModelValidator, DataWarehouseTaskBuilder, diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index 14ac8269c7..a92412491c 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -47,8 +47,8 @@ TimeDimensionSpec, WhereFilterSpec, ) +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel -from metricflow.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_plan import SqlJoinType from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/sql/test_bind_parameter_serialization.py b/tests/sql/test_bind_parameter_serialization.py index 9d0c4d9a81..ea45dc243e 100644 --- a/tests/sql/test_bind_parameter_serialization.py +++ b/tests/sql/test_bind_parameter_serialization.py @@ -3,7 +3,7 @@ import pytest from dbt_semantic_interfaces.dataclass_serialization import DataClassDeserializer, DataclassSerializer -from metricflow.sql.sql_bind_parameters import SqlBindParameter, SqlBindParameters, SqlBindParameterValue +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameter, SqlBindParameters, SqlBindParameterValue @pytest.fixture diff --git a/tests/sql_clients/test_sql_client.py b/tests/sql_clients/test_sql_client.py index 1c673c34c8..f9955980a8 100644 --- a/tests/sql_clients/test_sql_client.py +++ b/tests/sql_clients/test_sql_client.py @@ -8,7 +8,7 @@ from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.semantics.random_id import random_id -from metricflow.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration From 471a7bdcd2154e73b8e46de95f4c34f62896c162 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 17:29:12 -0700 Subject: [PATCH 37/80] Update `linkable_spec_resolver.py` to use metric time from DSI. --- .../semantics/model/semantics/linkable_spec_resolver.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/metricflow/semantics/model/semantics/linkable_spec_resolver.py b/metricflow/semantics/model/semantics/linkable_spec_resolver.py index 1be51d4b4f..c274f91712 100644 --- a/metricflow/semantics/model/semantics/linkable_spec_resolver.py +++ b/metricflow/semantics/model/semantics/linkable_spec_resolver.py @@ -18,8 +18,8 @@ from dbt_semantic_interfaces.type_enums import MetricType from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.dataset.dataset_classes import DataSet from metricflow.semantics.errors.error_classes import UnknownMetricLinkingError from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.linkable_element import ( @@ -412,7 +412,7 @@ def _get_metric_time_elements(self, measure_reference: Optional[MeasureReference for date_part in possible_date_parts: path_key = ElementPathKey( - element_name=DataSet.metric_time_dimension_name(), + element_name=MetricFlowReservedKeywords.METRIC_TIME.value, element_type=LinkableElementType.TIME_DIMENSION, entity_links=(), time_granularity=time_granularity, @@ -421,7 +421,7 @@ def _get_metric_time_elements(self, measure_reference: Optional[MeasureReference path_key_to_linkable_dimensions[path_key].append( LinkableDimension( semantic_model_origin=measure_semantic_model.reference if measure_semantic_model else None, - element_name=DataSet.metric_time_dimension_name(), + element_name=MetricFlowReservedKeywords.METRIC_TIME.value, dimension_type=DimensionType.TIME, entity_links=(), join_path=(), From 33752c7f6939b0fc3732560919e6a6a8f6b9ee8b Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 17:48:18 -0700 Subject: [PATCH 38/80] Separate and move `SqlJoinType`. --- .../dataflow/builder/dataflow_plan_builder.py | 2 +- metricflow/dataflow/builder/node_evaluator.py | 2 +- metricflow/dataflow/nodes/join_to_base.py | 2 +- .../dataflow/nodes/join_to_time_spine.py | 2 +- metricflow/plan_conversion/dataflow_to_sql.py | 2 +- metricflow/plan_conversion/node_processor.py | 2 +- metricflow/plan_conversion/sql_join_builder.py | 3 ++- metricflow/semantics/specs/spec_classes.py | 2 +- metricflow/semantics/sql/sql_join_type.py | 18 ++++++++++++++++++ metricflow/sql/sql_plan.py | 17 +---------------- tests/dataflow/builder/test_node_data_set.py | 2 +- tests/dataflow/builder/test_node_evaluator.py | 2 +- .../test_dataflow_to_sql_plan.py | 2 +- tests/sql/optimizer/test_column_pruner.py | 2 +- .../test_rewriting_sub_query_reducer.py | 2 +- tests/sql/optimizer/test_sub_query_reducer.py | 2 +- .../optimizer/test_table_alias_simplifier.py | 2 +- tests/sql/test_sql_plan_render.py | 2 +- 18 files changed, 36 insertions(+), 32 deletions(-) create mode 100644 metricflow/semantics/sql/sql_join_type.py diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index 0f5997fe7a..8cb35dc2bb 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -86,7 +86,7 @@ WhereFilterSpec, ) from metricflow.semantics.specs.where_filter_transform import WhereSpecFactory -from metricflow.sql.sql_plan import SqlJoinType +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/dataflow/builder/node_evaluator.py b/metricflow/dataflow/builder/node_evaluator.py index d7105e660c..38f6f96e89 100644 --- a/metricflow/dataflow/builder/node_evaluator.py +++ b/metricflow/dataflow/builder/node_evaluator.py @@ -47,7 +47,7 @@ LinkableSpecSet, LinklessEntitySpec, ) -from metricflow.sql.sql_plan import SqlJoinType +from metricflow.semantics.sql.sql_join_type import SqlJoinType logger = logging.getLogger(__name__) diff --git a/metricflow/dataflow/nodes/join_to_base.py b/metricflow/dataflow/nodes/join_to_base.py index c94dd6c5f9..8bb93dcfca 100644 --- a/metricflow/dataflow/nodes/join_to_base.py +++ b/metricflow/dataflow/nodes/join_to_base.py @@ -11,8 +11,8 @@ from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DisplayedProperty, NodeId from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.semantics.visitor import VisitorOutputT -from metricflow.sql.sql_plan import SqlJoinType @dataclass(frozen=True) diff --git a/metricflow/dataflow/nodes/join_to_time_spine.py b/metricflow/dataflow/nodes/join_to_time_spine.py index 03311a748f..53d292eca8 100644 --- a/metricflow/dataflow/nodes/join_to_time_spine.py +++ b/metricflow/dataflow/nodes/join_to_time_spine.py @@ -11,8 +11,8 @@ from metricflow.semantics.dag.mf_dag import DisplayedProperty from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.specs.spec_classes import TimeDimensionSpec +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.semantics.visitor import VisitorOutputT -from metricflow.sql.sql_plan import SqlJoinType class JoinToTimeSpineNode(BaseOutput, ABC): diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index 194f53c56e..da3e3a5883 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -100,6 +100,7 @@ MetricSpec, TimeDimensionSpec, ) +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.semantics.time.time_constants import ISO8601_PYTHON_FORMAT from metricflow.sql.optimizer.optimization_levels import ( SqlQueryOptimizationLevel, @@ -130,7 +131,6 @@ from metricflow.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, - SqlJoinType, SqlOrderByDescription, SqlQueryPlan, SqlQueryPlanNode, diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index bb3db41db6..54f76f73fe 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -21,7 +21,7 @@ from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec from metricflow.semantics.specs.spec_set_transforms import ToElementNameSet -from metricflow.sql.sql_plan import SqlJoinType +from metricflow.semantics.sql.sql_join_type import SqlJoinType logger = logging.getLogger(__name__) diff --git a/metricflow/plan_conversion/sql_join_builder.py b/metricflow/plan_conversion/sql_join_builder.py index f4e72d0692..01fd860fa5 100644 --- a/metricflow/plan_conversion/sql_join_builder.py +++ b/metricflow/plan_conversion/sql_join_builder.py @@ -13,6 +13,7 @@ from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, @@ -24,7 +25,7 @@ SqlLogicalOperator, SqlSubtractTimeIntervalExpression, ) -from metricflow.sql.sql_plan import SqlExpressionNode, SqlJoinDescription, SqlJoinType, SqlSelectStatementNode +from metricflow.sql.sql_plan import SqlExpressionNode, SqlJoinDescription, SqlSelectStatementNode @dataclass(frozen=True) diff --git a/metricflow/semantics/specs/spec_classes.py b/metricflow/semantics/specs/spec_classes.py index aa10488fa3..4a9aaa06cc 100644 --- a/metricflow/semantics/specs/spec_classes.py +++ b/metricflow/semantics/specs/spec_classes.py @@ -43,9 +43,9 @@ FilterSpecResolutionLookUp, ) from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.semantics.visitor import VisitorOutputT from metricflow.sql.sql_column_type import SqlColumnType -from metricflow.sql.sql_plan import SqlJoinType if TYPE_CHECKING: from metricflow.semantics.model.semantics.metric_lookup import MetricLookup diff --git a/metricflow/semantics/sql/sql_join_type.py b/metricflow/semantics/sql/sql_join_type.py new file mode 100644 index 0000000000..b547994484 --- /dev/null +++ b/metricflow/semantics/sql/sql_join_type.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +from enum import Enum + + +class SqlJoinType(Enum): + """Enumerates the different kinds of SQL joins. + + The value is the SQL string to be used when rendering the join. + """ + + LEFT_OUTER = "LEFT OUTER JOIN" + FULL_OUTER = "FULL OUTER JOIN" + INNER = "INNER JOIN" + CROSS_JOIN = "CROSS JOIN" + + def __repr__(self) -> str: # noqa: D105 + return f"{self.__class__.__name__}.{self.name}" diff --git a/metricflow/sql/sql_plan.py b/metricflow/sql/sql_plan.py index 1a02ec2836..dd32dfedf9 100644 --- a/metricflow/sql/sql_plan.py +++ b/metricflow/sql/sql_plan.py @@ -5,13 +5,13 @@ import logging from abc import ABC, abstractmethod from dataclasses import dataclass -from enum import Enum from typing import Generic, List, Optional, Sequence, Tuple from typing_extensions import override from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.semantics.visitor import VisitorOutputT from metricflow.sql.sql_exprs import SqlExpressionNode from metricflow.sql.sql_table import SqlTable @@ -91,21 +91,6 @@ class SqlSelectColumn: column_alias: str -class SqlJoinType(Enum): - """Enumerates the different kinds of SQL joins. - - The value is the SQL string to be used when rendering the join. - """ - - LEFT_OUTER = "LEFT OUTER JOIN" - FULL_OUTER = "FULL OUTER JOIN" - INNER = "INNER JOIN" - CROSS_JOIN = "CROSS JOIN" - - def __repr__(self) -> str: # noqa: D105 - return f"{self.__class__.__name__}.{self.name}" - - @dataclass(frozen=True) class SqlJoinDescription: """Describes how sources should be joined together.""" diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index 0c8746fe0b..c247ae6b14 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -23,9 +23,9 @@ LinklessEntitySpec, MeasureSpec, ) +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression from metricflow.sql.sql_plan import ( - SqlJoinType, SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode, diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index 47f1eff1d4..4dcb54929b 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -27,7 +27,7 @@ LinklessEntitySpec, TimeDimensionSpec, ) -from metricflow.sql.sql_plan import SqlJoinType +from metricflow.semantics.sql.sql_join_type import SqlJoinType from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup logger = logging.getLogger(__name__) diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index a92412491c..5311ed192c 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -48,8 +48,8 @@ WhereFilterSpec, ) from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel -from metricflow.sql.sql_plan import SqlJoinType from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/sql/optimizer/test_column_pruner.py b/tests/sql/optimizer/test_column_pruner.py index c58b43cae7..69b9b450cd 100644 --- a/tests/sql/optimizer/test_column_pruner.py +++ b/tests/sql/optimizer/test_column_pruner.py @@ -3,6 +3,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.column_pruner import SqlColumnPrunerOptimizer from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer from metricflow.sql.sql_exprs import ( @@ -15,7 +16,6 @@ ) from metricflow.sql.sql_plan import ( SqlJoinDescription, - SqlJoinType, SqlQueryPlanNode, SqlSelectColumn, SqlSelectStatementNode, diff --git a/tests/sql/optimizer/test_rewriting_sub_query_reducer.py b/tests/sql/optimizer/test_rewriting_sub_query_reducer.py index b5c7b08dd0..8a51f4d5fb 100644 --- a/tests/sql/optimizer/test_rewriting_sub_query_reducer.py +++ b/tests/sql/optimizer/test_rewriting_sub_query_reducer.py @@ -3,6 +3,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.rewriting_sub_query_reducer import SqlRewritingSubQueryReducer from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, @@ -16,7 +17,6 @@ ) from metricflow.sql.sql_plan import ( SqlJoinDescription, - SqlJoinType, SqlOrderByDescription, SqlSelectColumn, SqlSelectStatementNode, diff --git a/tests/sql/optimizer/test_sub_query_reducer.py b/tests/sql/optimizer/test_sub_query_reducer.py index 366193c2ff..8bb5952259 100644 --- a/tests/sql/optimizer/test_sub_query_reducer.py +++ b/tests/sql/optimizer/test_sub_query_reducer.py @@ -3,6 +3,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.sub_query_reducer import SqlSubQueryReducer from metricflow.sql.sql_exprs import ( SqlColumnReference, @@ -12,7 +13,6 @@ ) from metricflow.sql.sql_plan import ( SqlJoinDescription, - SqlJoinType, SqlOrderByDescription, SqlSelectColumn, SqlSelectStatementNode, diff --git a/tests/sql/optimizer/test_table_alias_simplifier.py b/tests/sql/optimizer/test_table_alias_simplifier.py index 737a61cb5a..232c8b6be5 100644 --- a/tests/sql/optimizer/test_table_alias_simplifier.py +++ b/tests/sql/optimizer/test_table_alias_simplifier.py @@ -3,6 +3,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.table_alias_simplifier import SqlTableAliasSimplifier from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer from metricflow.sql.sql_exprs import ( @@ -13,7 +14,6 @@ ) from metricflow.sql.sql_plan import ( SqlJoinDescription, - SqlJoinType, SqlSelectColumn, SqlSelectStatementNode, SqlTableFromClauseNode, diff --git a/tests/sql/test_sql_plan_render.py b/tests/sql/test_sql_plan_render.py index 6e21dcfc82..e8c259e027 100644 --- a/tests/sql/test_sql_plan_render.py +++ b/tests/sql/test_sql_plan_render.py @@ -7,6 +7,7 @@ from _pytest.fixtures import FixtureRequest from metricflow.protocols.sql_client import SqlClient +from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, @@ -19,7 +20,6 @@ from metricflow.sql.sql_plan import ( SqlCreateTableAsNode, SqlJoinDescription, - SqlJoinType, SqlOrderByDescription, SqlSelectColumn, SqlSelectStatementNode, From fce72e9e8c69b24c4bb816aa814c67c7b571a196 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 17:49:12 -0700 Subject: [PATCH 39/80] Move `sql_join_type.py`. --- metricflow/semantics/specs/spec_classes.py | 2 +- metricflow/semantics/sql/sql_bind_parameters.py | 2 +- metricflow/{ => semantics}/sql/sql_column_type.py | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename metricflow/{ => semantics}/sql/sql_column_type.py (100%) diff --git a/metricflow/semantics/specs/spec_classes.py b/metricflow/semantics/specs/spec_classes.py index 4a9aaa06cc..442b3a8243 100644 --- a/metricflow/semantics/specs/spec_classes.py +++ b/metricflow/semantics/specs/spec_classes.py @@ -43,9 +43,9 @@ FilterSpecResolutionLookUp, ) from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow.semantics.sql.sql_column_type import SqlColumnType from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.semantics.visitor import VisitorOutputT -from metricflow.sql.sql_column_type import SqlColumnType if TYPE_CHECKING: from metricflow.semantics.model.semantics.metric_lookup import MetricLookup diff --git a/metricflow/semantics/sql/sql_bind_parameters.py b/metricflow/semantics/sql/sql_bind_parameters.py index cd61b50da5..337a763f60 100644 --- a/metricflow/semantics/sql/sql_bind_parameters.py +++ b/metricflow/semantics/sql/sql_bind_parameters.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set -from metricflow.sql.sql_column_type import SqlColumnType +from metricflow.semantics.sql.sql_column_type import SqlColumnType @dataclass(frozen=True) diff --git a/metricflow/sql/sql_column_type.py b/metricflow/semantics/sql/sql_column_type.py similarity index 100% rename from metricflow/sql/sql_column_type.py rename to metricflow/semantics/sql/sql_column_type.py From 2ef2163678aa4dc093c8f0648fa89e3c0ce90f71 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 17:53:28 -0700 Subject: [PATCH 40/80] Remove `SemanticManifestLookup.time_spine_source`. --- metricflow/dataflow/builder/source_node.py | 3 ++- metricflow/engine/metricflow_engine.py | 3 ++- metricflow/plan_conversion/dataflow_to_sql.py | 2 +- metricflow/plan_conversion/time_spine.py | 26 ++++++++++++++++++ .../model/semantic_manifest_lookup.py | 27 ------------------- .../data_warehouse_model_validator.py | 2 +- tests/fixtures/table_fixtures.py | 3 ++- tests/integration/test_configured_cases.py | 9 +++++-- tests/plan_conversion/test_time_spine.py | 3 ++- 9 files changed, 43 insertions(+), 35 deletions(-) diff --git a/metricflow/dataflow/builder/source_node.py b/metricflow/dataflow/builder/source_node.py index b08ed990ec..3a5769e913 100644 --- a/metricflow/dataflow/builder/source_node.py +++ b/metricflow/dataflow/builder/source_node.py @@ -12,6 +12,7 @@ from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet +from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver @@ -54,7 +55,7 @@ def __init__( # noqa: D107 ) -> None: self._semantic_manifest_lookup = semantic_manifest_lookup data_set_converter = SemanticModelToDataSetConverter(column_association_resolver) - time_spine_source = self._semantic_manifest_lookup.time_spine_source + time_spine_source = TimeSpineSource.create_from_manifest(semantic_manifest_lookup.semantic_manifest) time_spine_data_set = data_set_converter.build_time_spine_source_data_set(time_spine_source) time_dim_reference = TimeDimensionReference(element_name=time_spine_source.time_column_name) self._time_spine_source_node = MetricTimeDimensionTransformNode( diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 1d9f1bee88..c5334b4b7e 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -33,6 +33,7 @@ from metricflow.execution.executor import SequentialPlanExecutor from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.dag.sequential_id import SequentialIdGenerator from metricflow.semantics.errors.error_classes import ExecutionException @@ -365,7 +366,7 @@ def __init__( DunderColumnAssociationResolver(semantic_manifest_lookup) ) self._time_source = time_source - self._time_spine_source = semantic_manifest_lookup.time_spine_source + self._time_spine_source = TimeSpineSource.create_from_manifest(semantic_manifest_lookup.semantic_manifest) self._source_data_sets: List[SemanticModelDataSet] = [] converter = SemanticModelToDataSetConverter(column_association_resolver=self._column_association_resolver) for semantic_model in sorted( diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index da3e3a5883..c5663a8162 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -182,7 +182,7 @@ def __init__( self._semantic_manifest_lookup = semantic_manifest_lookup self._metric_lookup = semantic_manifest_lookup.metric_lookup self._semantic_model_lookup = semantic_manifest_lookup.semantic_model_lookup - self._time_spine_source = semantic_manifest_lookup.time_spine_source + self._time_spine_source = TimeSpineSource.create_from_manifest(semantic_manifest_lookup.semantic_manifest) @property def column_association_resolver(self) -> ColumnAssociationResolver: # noqa: D102 diff --git a/metricflow/plan_conversion/time_spine.py b/metricflow/plan_conversion/time_spine.py index 927753a058..062be7afce 100644 --- a/metricflow/plan_conversion/time_spine.py +++ b/metricflow/plan_conversion/time_spine.py @@ -3,8 +3,10 @@ import logging from dataclasses import dataclass +from dbt_semantic_interfaces.protocols import SemanticManifest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) @@ -27,3 +29,27 @@ class TimeSpineSource: def spine_table(self) -> SqlTable: """Table containing all dates.""" return SqlTable(schema_name=self.schema_name, table_name=self.table_name) + + @staticmethod + def create_from_manifest(semantic_manifest: SemanticManifest) -> TimeSpineSource: + """Creates a time spine source based on what's in the manifest.""" + time_spine_table_configurations = semantic_manifest.project_configuration.time_spine_table_configurations + + if not ( + len(time_spine_table_configurations) == 1 + and time_spine_table_configurations[0].grain == TimeGranularity.DAY + ): + raise NotImplementedError( + f"Only a single time spine table configuration with {TimeGranularity.DAY} is currently " + f"supported. Got:\n" + f"{mf_pformat(time_spine_table_configurations)}" + ) + + time_spine_table_configuration = time_spine_table_configurations[0] + time_spine_table = SqlTable.from_string(time_spine_table_configuration.location) + return TimeSpineSource( + schema_name=time_spine_table.schema_name, + table_name=time_spine_table.table_name, + time_column_name=time_spine_table_configuration.column_name, + time_column_granularity=time_spine_table_configuration.grain, + ) diff --git a/metricflow/semantics/model/semantic_manifest_lookup.py b/metricflow/semantics/model/semantic_manifest_lookup.py index aac2335e9c..2ebfeaad5d 100644 --- a/metricflow/semantics/model/semantic_manifest_lookup.py +++ b/metricflow/semantics/model/semantic_manifest_lookup.py @@ -3,13 +3,9 @@ import logging from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest -from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.plan_conversion.time_spine import TimeSpineSource -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.semantics.model.semantics.metric_lookup import MetricLookup from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) @@ -33,26 +29,3 @@ def semantic_model_lookup(self) -> SemanticModelLookup: # noqa: D102 @property def metric_lookup(self) -> MetricLookup: # noqa: D102 return self._metric_lookup - - @property - def time_spine_source(self) -> TimeSpineSource: # noqa: D102 - time_spine_table_configurations = self._semantic_manifest.project_configuration.time_spine_table_configurations - - if not ( - len(time_spine_table_configurations) == 1 - and time_spine_table_configurations[0].grain == TimeGranularity.DAY - ): - raise NotImplementedError( - f"Only a single time spine table configuration with {TimeGranularity.DAY} is currently " - f"supported. Got:\n" - f"{mf_pformat(time_spine_table_configurations)}" - ) - - time_spine_table_configuration = time_spine_table_configurations[0] - time_spine_table = SqlTable.from_string(time_spine_table_configuration.location) - return TimeSpineSource( - schema_name=time_spine_table.schema_name, - table_name=time_spine_table.table_name, - time_column_name=time_spine_table_configuration.column_name, - time_column_granularity=time_spine_table_configuration.grain, - ) diff --git a/metricflow/validation/data_warehouse_model_validator.py b/metricflow/validation/data_warehouse_model_validator.py index f6535df314..ccbc41f168 100644 --- a/metricflow/validation/data_warehouse_model_validator.py +++ b/metricflow/validation/data_warehouse_model_validator.py @@ -65,7 +65,7 @@ def __init__(self, manifest: SemanticManifest) -> None: # noqa: D107 column_association_resolver=DunderColumnAssociationResolver(self.semantic_manifest_lookup), semantic_manifest_lookup=self.semantic_manifest_lookup, ) - self.time_spine_source = self.semantic_manifest_lookup.time_spine_source + self.time_spine_source = TimeSpineSource.create_from_manifest(manifest) self.converter = SemanticModelToDataSetConverter( column_association_resolver=DunderColumnAssociationResolver( semantic_manifest_lookup=self.semantic_manifest_lookup diff --git a/tests/fixtures/table_fixtures.py b/tests/fixtures/table_fixtures.py index b107a3a9c6..08421bfd65 100644 --- a/tests/fixtures/table_fixtures.py +++ b/tests/fixtures/table_fixtures.py @@ -6,6 +6,7 @@ import pytest +from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods @@ -40,7 +41,7 @@ def check_time_spine_source( The time spine table is defined in a table snapshot YAML file and is restored to the source schema based on that definition. The definition in the YAML should align with the definition in the time_spine_source fixture. """ - time_spine_source = simple_semantic_manifest_lookup.time_spine_source + time_spine_source = TimeSpineSource.create_from_manifest(simple_semantic_manifest_lookup.semantic_manifest) assert ( time_spine_source.schema_name == mf_test_configuration.mf_source_schema ), "The time spine source table should be in the source schema" diff --git a/tests/integration/test_configured_cases.py b/tests/integration/test_configured_cases.py index bc88e7ae44..0941cec83f 100644 --- a/tests/integration/test_configured_cases.py +++ b/tests/integration/test_configured_cases.py @@ -18,6 +18,7 @@ from metricflow.plan_conversion.column_resolver import ( DunderColumnAssociationResolver, ) +from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.protocols.query_parameter import DimensionOrEntityQueryParameter @@ -319,7 +320,9 @@ def test_case( render_date_trunc=check_query_helpers.render_date_trunc, render_extract=check_query_helpers.render_extract, render_percentile_expr=check_query_helpers.render_percentile_expr, - mf_time_spine_source=semantic_manifest_lookup.time_spine_source.spine_table.sql, + mf_time_spine_source=TimeSpineSource.create_from_manifest( + semantic_manifest_lookup.semantic_manifest + ).spine_table.sql, double_data_type_name=check_query_helpers.double_data_type_name, render_dimension_template=check_query_helpers.render_dimension_template, render_entity_template=check_query_helpers.render_entity_template, @@ -352,7 +355,9 @@ def test_case( render_date_trunc=check_query_helpers.render_date_trunc, render_extract=check_query_helpers.render_extract, render_percentile_expr=check_query_helpers.render_percentile_expr, - mf_time_spine_source=semantic_manifest_lookup.time_spine_source.spine_table.sql, + mf_time_spine_source=TimeSpineSource.create_from_manifest( + semantic_manifest_lookup.semantic_manifest + ).spine_table.sql, double_data_type_name=check_query_helpers.double_data_type_name, generate_random_uuid=check_query_helpers.generate_random_uuid, cast_to_ts=check_query_helpers.cast_to_ts, diff --git a/tests/plan_conversion/test_time_spine.py b/tests/plan_conversion/test_time_spine.py index c55fb0e39a..c9cab9be7b 100644 --- a/tests/plan_conversion/test_time_spine.py +++ b/tests/plan_conversion/test_time_spine.py @@ -2,6 +2,7 @@ from pandas import DataFrame +from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from metricflow.semantics.filters.time_constraint import TimeRangeConstraint from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup @@ -13,7 +14,7 @@ def test_date_spine_date_range( # noqa: D103 simple_semantic_manifest_lookup: SemanticManifestLookup, create_source_tables: None, ) -> None: - time_spine_source = simple_semantic_manifest_lookup.time_spine_source + time_spine_source = TimeSpineSource.create_from_manifest(simple_semantic_manifest_lookup.semantic_manifest) range_df: DataFrame = sql_client.query( f"""\ SELECT From 77bd647a3abcf87319ffb88b9027de44255fc4d9 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 18:11:33 -0700 Subject: [PATCH 41/80] Move semantic tests. --- tests/cli/test_cli.py | 2 +- tests/{collection_helpers => semantics}/__init__.py | 0 .../collection_helpers}/__init__.py | 0 tests/{ => semantics}/collection_helpers/test_merger.py | 0 .../collection_helpers/test_pretty_print.py | 0 tests/{model => semantics/mf_logging}/__init__.py | 0 tests/{ => semantics}/mf_logging/test_dag_to_text.py | 0 tests/{model/modify => semantics/model}/__init__.py | 0 .../model/example_project_configuration.py | 0 .../semantics => semantics/model/modify}/__init__.py | 0 .../model/modify/modify_input_measure_filter.py | 0 .../model/modify/modify_input_metric_filter.py | 0 tests/{ => semantics}/model/modify/modify_manifest.py | 0 .../{ => semantics}/model/modify/modify_metric_filter.py | 0 tests/{naming => semantics/model/semantics}/__init__.py | 0 .../model/semantics/test_linkable_element_set.py | 0 .../model/semantics/test_linkable_spec_resolver.py | 0 .../model/semantics/test_semantic_model_join_evaluator.py | 0 tests/{ => semantics}/model/test_data_warehouse_tasks.py | 0 .../model/test_semantic_model_container.py | 0 tests/{ => semantics}/model/test_where_filter_spec.py | 2 +- tests/{query => semantics/naming}/__init__.py | 0 tests/{ => semantics}/naming/conftest.py | 0 tests/{ => semantics}/naming/test_dunder_naming_scheme.py | 0 tests/{ => semantics}/naming/test_metric_name_scheme.py | 0 .../naming/test_object_builder_naming_scheme.py | 0 .../{query/group_by_item => semantics/query}/__init__.py | 0 .../query/group_by_item}/__init__.py | 0 .../query/group_by_item/ambiguous_resolution_query_id.py | 0 tests/{ => semantics}/query/group_by_item/conftest.py | 2 +- .../group_by_item/filter_spec_resolution}/__init__.py | 0 .../filter_spec_resolution/test_spec_lookup.py | 8 ++++---- .../query/group_by_item/resolution_dag}/__init__.py | 0 .../group_by_item/resolution_dag/test_resolution_dags.py | 2 +- .../query/group_by_item/test_available_group_by_items.py | 2 +- .../query/group_by_item/test_matching_item_for_filters.py | 2 +- .../group_by_item/test_matching_item_for_querying.py | 2 +- tests/{ => semantics}/query/test_ambiguous_entity_path.py | 0 tests/{ => semantics}/query/test_query_parser.py | 2 +- tests/{ => semantics}/query/test_suggestions.py | 4 ++-- tests/{specs/patterns => semantics/specs}/__init__.py | 0 tests/{ => semantics}/specs/conftest.py | 0 tests/semantics/specs/patterns/__init__.py | 0 .../specs/patterns/test_entity_link_pattern.py | 0 .../{ => semantics}/specs/patterns/test_typed_patterns.py | 0 tests/{ => semantics}/specs/test_time_dimension_spec.py | 0 tests/{ => semantics}/specs/test_where_filter_entity.py | 2 +- tests/semantics/sql/__init__.py | 0 .../sql/test_bind_parameter_serialization.py | 0 tests/{ => semantics}/test_specs.py | 0 50 files changed, 15 insertions(+), 15 deletions(-) rename tests/{collection_helpers => semantics}/__init__.py (100%) rename tests/{mf_logging => semantics/collection_helpers}/__init__.py (100%) rename tests/{ => semantics}/collection_helpers/test_merger.py (100%) rename tests/{ => semantics}/collection_helpers/test_pretty_print.py (100%) rename tests/{model => semantics/mf_logging}/__init__.py (100%) rename tests/{ => semantics}/mf_logging/test_dag_to_text.py (100%) rename tests/{model/modify => semantics/model}/__init__.py (100%) rename tests/{ => semantics}/model/example_project_configuration.py (100%) rename tests/{model/semantics => semantics/model/modify}/__init__.py (100%) rename tests/{ => semantics}/model/modify/modify_input_measure_filter.py (100%) rename tests/{ => semantics}/model/modify/modify_input_metric_filter.py (100%) rename tests/{ => semantics}/model/modify/modify_manifest.py (100%) rename tests/{ => semantics}/model/modify/modify_metric_filter.py (100%) rename tests/{naming => semantics/model/semantics}/__init__.py (100%) rename tests/{ => semantics}/model/semantics/test_linkable_element_set.py (100%) rename tests/{ => semantics}/model/semantics/test_linkable_spec_resolver.py (100%) rename tests/{ => semantics}/model/semantics/test_semantic_model_join_evaluator.py (100%) rename tests/{ => semantics}/model/test_data_warehouse_tasks.py (100%) rename tests/{ => semantics}/model/test_semantic_model_container.py (100%) rename tests/{ => semantics}/model/test_where_filter_spec.py (99%) rename tests/{query => semantics/naming}/__init__.py (100%) rename tests/{ => semantics}/naming/conftest.py (100%) rename tests/{ => semantics}/naming/test_dunder_naming_scheme.py (100%) rename tests/{ => semantics}/naming/test_metric_name_scheme.py (100%) rename tests/{ => semantics}/naming/test_object_builder_naming_scheme.py (100%) rename tests/{query/group_by_item => semantics/query}/__init__.py (100%) rename tests/{query/group_by_item/filter_spec_resolution => semantics/query/group_by_item}/__init__.py (100%) rename tests/{ => semantics}/query/group_by_item/ambiguous_resolution_query_id.py (100%) rename tests/{ => semantics}/query/group_by_item/conftest.py (97%) rename tests/{query/group_by_item/resolution_dag => semantics/query/group_by_item/filter_spec_resolution}/__init__.py (100%) rename tests/{ => semantics}/query/group_by_item/filter_spec_resolution/test_spec_lookup.py (96%) rename tests/{specs => semantics/query/group_by_item/resolution_dag}/__init__.py (100%) rename tests/{ => semantics}/query/group_by_item/resolution_dag/test_resolution_dags.py (92%) rename tests/{ => semantics}/query/group_by_item/test_available_group_by_items.py (94%) rename tests/{ => semantics}/query/group_by_item/test_matching_item_for_filters.py (96%) rename tests/{ => semantics}/query/group_by_item/test_matching_item_for_querying.py (98%) rename tests/{ => semantics}/query/test_ambiguous_entity_path.py (100%) rename tests/{ => semantics}/query/test_query_parser.py (99%) rename tests/{ => semantics}/query/test_suggestions.py (97%) rename tests/{specs/patterns => semantics/specs}/__init__.py (100%) rename tests/{ => semantics}/specs/conftest.py (100%) create mode 100644 tests/semantics/specs/patterns/__init__.py rename tests/{ => semantics}/specs/patterns/test_entity_link_pattern.py (100%) rename tests/{ => semantics}/specs/patterns/test_typed_patterns.py (100%) rename tests/{ => semantics}/specs/test_time_dimension_spec.py (100%) rename tests/{ => semantics}/specs/test_where_filter_entity.py (93%) create mode 100644 tests/semantics/sql/__init__.py rename tests/{ => semantics}/sql/test_bind_parameter_serialization.py (100%) rename tests/{ => semantics}/test_specs.py (100%) diff --git a/tests/cli/test_cli.py b/tests/cli/test_cli.py index f39cf9154a..c4a4d1ecba 100644 --- a/tests/cli/test_cli.py +++ b/tests/cli/test_cli.py @@ -29,7 +29,7 @@ from metricflow.protocols.sql_client import SqlClient, SqlEngine from tests.fixtures.cli_fixtures import MetricFlowCliRunner from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.model.example_project_configuration import EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE +from tests.semantics.model.example_project_configuration import EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE from tests.snapshot_utils import assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/collection_helpers/__init__.py b/tests/semantics/__init__.py similarity index 100% rename from tests/collection_helpers/__init__.py rename to tests/semantics/__init__.py diff --git a/tests/mf_logging/__init__.py b/tests/semantics/collection_helpers/__init__.py similarity index 100% rename from tests/mf_logging/__init__.py rename to tests/semantics/collection_helpers/__init__.py diff --git a/tests/collection_helpers/test_merger.py b/tests/semantics/collection_helpers/test_merger.py similarity index 100% rename from tests/collection_helpers/test_merger.py rename to tests/semantics/collection_helpers/test_merger.py diff --git a/tests/collection_helpers/test_pretty_print.py b/tests/semantics/collection_helpers/test_pretty_print.py similarity index 100% rename from tests/collection_helpers/test_pretty_print.py rename to tests/semantics/collection_helpers/test_pretty_print.py diff --git a/tests/model/__init__.py b/tests/semantics/mf_logging/__init__.py similarity index 100% rename from tests/model/__init__.py rename to tests/semantics/mf_logging/__init__.py diff --git a/tests/mf_logging/test_dag_to_text.py b/tests/semantics/mf_logging/test_dag_to_text.py similarity index 100% rename from tests/mf_logging/test_dag_to_text.py rename to tests/semantics/mf_logging/test_dag_to_text.py diff --git a/tests/model/modify/__init__.py b/tests/semantics/model/__init__.py similarity index 100% rename from tests/model/modify/__init__.py rename to tests/semantics/model/__init__.py diff --git a/tests/model/example_project_configuration.py b/tests/semantics/model/example_project_configuration.py similarity index 100% rename from tests/model/example_project_configuration.py rename to tests/semantics/model/example_project_configuration.py diff --git a/tests/model/semantics/__init__.py b/tests/semantics/model/modify/__init__.py similarity index 100% rename from tests/model/semantics/__init__.py rename to tests/semantics/model/modify/__init__.py diff --git a/tests/model/modify/modify_input_measure_filter.py b/tests/semantics/model/modify/modify_input_measure_filter.py similarity index 100% rename from tests/model/modify/modify_input_measure_filter.py rename to tests/semantics/model/modify/modify_input_measure_filter.py diff --git a/tests/model/modify/modify_input_metric_filter.py b/tests/semantics/model/modify/modify_input_metric_filter.py similarity index 100% rename from tests/model/modify/modify_input_metric_filter.py rename to tests/semantics/model/modify/modify_input_metric_filter.py diff --git a/tests/model/modify/modify_manifest.py b/tests/semantics/model/modify/modify_manifest.py similarity index 100% rename from tests/model/modify/modify_manifest.py rename to tests/semantics/model/modify/modify_manifest.py diff --git a/tests/model/modify/modify_metric_filter.py b/tests/semantics/model/modify/modify_metric_filter.py similarity index 100% rename from tests/model/modify/modify_metric_filter.py rename to tests/semantics/model/modify/modify_metric_filter.py diff --git a/tests/naming/__init__.py b/tests/semantics/model/semantics/__init__.py similarity index 100% rename from tests/naming/__init__.py rename to tests/semantics/model/semantics/__init__.py diff --git a/tests/model/semantics/test_linkable_element_set.py b/tests/semantics/model/semantics/test_linkable_element_set.py similarity index 100% rename from tests/model/semantics/test_linkable_element_set.py rename to tests/semantics/model/semantics/test_linkable_element_set.py diff --git a/tests/model/semantics/test_linkable_spec_resolver.py b/tests/semantics/model/semantics/test_linkable_spec_resolver.py similarity index 100% rename from tests/model/semantics/test_linkable_spec_resolver.py rename to tests/semantics/model/semantics/test_linkable_spec_resolver.py diff --git a/tests/model/semantics/test_semantic_model_join_evaluator.py b/tests/semantics/model/semantics/test_semantic_model_join_evaluator.py similarity index 100% rename from tests/model/semantics/test_semantic_model_join_evaluator.py rename to tests/semantics/model/semantics/test_semantic_model_join_evaluator.py diff --git a/tests/model/test_data_warehouse_tasks.py b/tests/semantics/model/test_data_warehouse_tasks.py similarity index 100% rename from tests/model/test_data_warehouse_tasks.py rename to tests/semantics/model/test_data_warehouse_tasks.py diff --git a/tests/model/test_semantic_model_container.py b/tests/semantics/model/test_semantic_model_container.py similarity index 100% rename from tests/model/test_semantic_model_container.py rename to tests/semantics/model/test_semantic_model_container.py diff --git a/tests/model/test_where_filter_spec.py b/tests/semantics/model/test_where_filter_spec.py similarity index 99% rename from tests/model/test_where_filter_spec.py rename to tests/semantics/model/test_where_filter_spec.py index a43487c0d2..5f459dabee 100644 --- a/tests/model/test_where_filter_spec.py +++ b/tests/semantics/model/test_where_filter_spec.py @@ -45,7 +45,7 @@ WhereFilterSpec, ) from metricflow.semantics.specs.where_filter_transform import WhereSpecFactory -from tests.specs.conftest import EXAMPLE_FILTER_LOCATION +from tests.semantics.specs.conftest import EXAMPLE_FILTER_LOCATION logger = logging.getLogger(__name__) diff --git a/tests/query/__init__.py b/tests/semantics/naming/__init__.py similarity index 100% rename from tests/query/__init__.py rename to tests/semantics/naming/__init__.py diff --git a/tests/naming/conftest.py b/tests/semantics/naming/conftest.py similarity index 100% rename from tests/naming/conftest.py rename to tests/semantics/naming/conftest.py diff --git a/tests/naming/test_dunder_naming_scheme.py b/tests/semantics/naming/test_dunder_naming_scheme.py similarity index 100% rename from tests/naming/test_dunder_naming_scheme.py rename to tests/semantics/naming/test_dunder_naming_scheme.py diff --git a/tests/naming/test_metric_name_scheme.py b/tests/semantics/naming/test_metric_name_scheme.py similarity index 100% rename from tests/naming/test_metric_name_scheme.py rename to tests/semantics/naming/test_metric_name_scheme.py diff --git a/tests/naming/test_object_builder_naming_scheme.py b/tests/semantics/naming/test_object_builder_naming_scheme.py similarity index 100% rename from tests/naming/test_object_builder_naming_scheme.py rename to tests/semantics/naming/test_object_builder_naming_scheme.py diff --git a/tests/query/group_by_item/__init__.py b/tests/semantics/query/__init__.py similarity index 100% rename from tests/query/group_by_item/__init__.py rename to tests/semantics/query/__init__.py diff --git a/tests/query/group_by_item/filter_spec_resolution/__init__.py b/tests/semantics/query/group_by_item/__init__.py similarity index 100% rename from tests/query/group_by_item/filter_spec_resolution/__init__.py rename to tests/semantics/query/group_by_item/__init__.py diff --git a/tests/query/group_by_item/ambiguous_resolution_query_id.py b/tests/semantics/query/group_by_item/ambiguous_resolution_query_id.py similarity index 100% rename from tests/query/group_by_item/ambiguous_resolution_query_id.py rename to tests/semantics/query/group_by_item/ambiguous_resolution_query_id.py diff --git a/tests/query/group_by_item/conftest.py b/tests/semantics/query/group_by_item/conftest.py similarity index 97% rename from tests/query/group_by_item/conftest.py rename to tests/semantics/query/group_by_item/conftest.py index e5bd062ca7..d276baa290 100644 --- a/tests/query/group_by_item/conftest.py +++ b/tests/semantics/query/group_by_item/conftest.py @@ -17,7 +17,7 @@ from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.semantics.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId +from tests.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId def _build_resolution_dag( diff --git a/tests/query/group_by_item/resolution_dag/__init__.py b/tests/semantics/query/group_by_item/filter_spec_resolution/__init__.py similarity index 100% rename from tests/query/group_by_item/resolution_dag/__init__.py rename to tests/semantics/query/group_by_item/filter_spec_resolution/__init__.py diff --git a/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py b/tests/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py similarity index 96% rename from tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py rename to tests/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py index c9d006e95e..784dbb4415 100644 --- a/tests/query/group_by_item/filter_spec_resolution/test_spec_lookup.py +++ b/tests/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py @@ -32,10 +32,10 @@ from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_resolver import WhereFilterSpecResolver from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform -from tests.model.modify.modify_manifest import modify_manifest -from tests.model.modify.modify_metric_filter import ModifyMetricFilterTransform -from tests.query.group_by_item.conftest import AmbiguousResolutionQueryId, _build_resolution_dag +from tests.semantics.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform +from tests.semantics.model.modify.modify_manifest import modify_manifest +from tests.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform +from tests.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId, _build_resolution_dag from tests.snapshot_utils import assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/specs/__init__.py b/tests/semantics/query/group_by_item/resolution_dag/__init__.py similarity index 100% rename from tests/specs/__init__.py rename to tests/semantics/query/group_by_item/resolution_dag/__init__.py diff --git a/tests/query/group_by_item/resolution_dag/test_resolution_dags.py b/tests/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py similarity index 92% rename from tests/query/group_by_item/resolution_dag/test_resolution_dags.py rename to tests/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py index e467bcadbb..ef1493305f 100644 --- a/tests/query/group_by_item/resolution_dag/test_resolution_dags.py +++ b/tests/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py @@ -9,7 +9,7 @@ from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId +from tests.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_plan_snapshot_text_equal logger = logging.getLogger(__name__) diff --git a/tests/query/group_by_item/test_available_group_by_items.py b/tests/semantics/query/group_by_item/test_available_group_by_items.py similarity index 94% rename from tests/query/group_by_item/test_available_group_by_items.py rename to tests/semantics/query/group_by_item/test_available_group_by_items.py index c1fb9be12e..080ee7715d 100644 --- a/tests/query/group_by_item/test_available_group_by_items.py +++ b/tests/semantics/query/group_by_item/test_available_group_by_items.py @@ -11,7 +11,7 @@ from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow.semantics.specs.spec_classes import LinkableSpecSet from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.query.group_by_item.conftest import AmbiguousResolutionQueryId +from tests.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_linkable_spec_set_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/query/group_by_item/test_matching_item_for_filters.py b/tests/semantics/query/group_by_item/test_matching_item_for_filters.py similarity index 96% rename from tests/query/group_by_item/test_matching_item_for_filters.py rename to tests/semantics/query/group_by_item/test_matching_item_for_filters.py index 938cdb0a9f..8f28287286 100644 --- a/tests/query/group_by_item/test_matching_item_for_filters.py +++ b/tests/semantics/query/group_by_item/test_matching_item_for_filters.py @@ -13,7 +13,7 @@ from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.query.group_by_item.conftest import AmbiguousResolutionQueryId +from tests.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_object_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/query/group_by_item/test_matching_item_for_querying.py b/tests/semantics/query/group_by_item/test_matching_item_for_querying.py similarity index 98% rename from tests/query/group_by_item/test_matching_item_for_querying.py rename to tests/semantics/query/group_by_item/test_matching_item_for_querying.py index 829cf04147..c4ae947019 100644 --- a/tests/query/group_by_item/test_matching_item_for_querying.py +++ b/tests/semantics/query/group_by_item/test_matching_item_for_querying.py @@ -18,7 +18,7 @@ MetricGroupByItemResolutionNode, ) from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.query.group_by_item.conftest import AmbiguousResolutionQueryId +from tests.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_object_snapshot_equal from tests.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_YEAR diff --git a/tests/query/test_ambiguous_entity_path.py b/tests/semantics/query/test_ambiguous_entity_path.py similarity index 100% rename from tests/query/test_ambiguous_entity_path.py rename to tests/semantics/query/test_ambiguous_entity_path.py diff --git a/tests/query/test_query_parser.py b/tests/semantics/query/test_query_parser.py similarity index 99% rename from tests/query/test_query_parser.py rename to tests/semantics/query/test_query_parser.py index 5fbfc5c480..25d2aa206b 100644 --- a/tests/query/test_query_parser.py +++ b/tests/semantics/query/test_query_parser.py @@ -31,7 +31,7 @@ OrderBySpec, TimeDimensionSpec, ) -from tests.model.example_project_configuration import EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE +from tests.semantics.model.example_project_configuration import EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE from tests.time.metric_time_dimension import MTD logger = logging.getLogger(__name__) diff --git a/tests/query/test_suggestions.py b/tests/semantics/query/test_suggestions.py similarity index 97% rename from tests/query/test_suggestions.py rename to tests/semantics/query/test_suggestions.py index 4ca4c4b740..b664737e51 100644 --- a/tests/query/test_suggestions.py +++ b/tests/semantics/query/test_suggestions.py @@ -17,8 +17,8 @@ from metricflow.semantics.query.query_exceptions import InvalidQueryException from metricflow.semantics.query.query_parser import MetricFlowQueryParser from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.model.modify.modify_manifest import modify_manifest -from tests.model.modify.modify_metric_filter import ModifyMetricFilterTransform +from tests.semantics.model.modify.modify_manifest import modify_manifest +from tests.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform from tests.snapshot_utils import assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/specs/patterns/__init__.py b/tests/semantics/specs/__init__.py similarity index 100% rename from tests/specs/patterns/__init__.py rename to tests/semantics/specs/__init__.py diff --git a/tests/specs/conftest.py b/tests/semantics/specs/conftest.py similarity index 100% rename from tests/specs/conftest.py rename to tests/semantics/specs/conftest.py diff --git a/tests/semantics/specs/patterns/__init__.py b/tests/semantics/specs/patterns/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/specs/patterns/test_entity_link_pattern.py b/tests/semantics/specs/patterns/test_entity_link_pattern.py similarity index 100% rename from tests/specs/patterns/test_entity_link_pattern.py rename to tests/semantics/specs/patterns/test_entity_link_pattern.py diff --git a/tests/specs/patterns/test_typed_patterns.py b/tests/semantics/specs/patterns/test_typed_patterns.py similarity index 100% rename from tests/specs/patterns/test_typed_patterns.py rename to tests/semantics/specs/patterns/test_typed_patterns.py diff --git a/tests/specs/test_time_dimension_spec.py b/tests/semantics/specs/test_time_dimension_spec.py similarity index 100% rename from tests/specs/test_time_dimension_spec.py rename to tests/semantics/specs/test_time_dimension_spec.py diff --git a/tests/specs/test_where_filter_entity.py b/tests/semantics/specs/test_where_filter_entity.py similarity index 93% rename from tests/specs/test_where_filter_entity.py rename to tests/semantics/specs/test_where_filter_entity.py index efdcbbc61e..6d8312be79 100644 --- a/tests/specs/test_where_filter_entity.py +++ b/tests/semantics/specs/test_where_filter_entity.py @@ -9,7 +9,7 @@ from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker from metricflow.semantics.specs.where_filter_entity import WhereFilterEntity -from tests.specs.conftest import EXAMPLE_FILTER_LOCATION +from tests.semantics.specs.conftest import EXAMPLE_FILTER_LOCATION def test_descending_cannot_be_set( # noqa diff --git a/tests/semantics/sql/__init__.py b/tests/semantics/sql/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/sql/test_bind_parameter_serialization.py b/tests/semantics/sql/test_bind_parameter_serialization.py similarity index 100% rename from tests/sql/test_bind_parameter_serialization.py rename to tests/semantics/sql/test_bind_parameter_serialization.py diff --git a/tests/test_specs.py b/tests/semantics/test_specs.py similarity index 100% rename from tests/test_specs.py rename to tests/semantics/test_specs.py From cfc2eefebee06badd98a3f3fb30595544f4706a4 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Tue, 23 Apr 2024 23:30:55 -0700 Subject: [PATCH 42/80] Add `metricflow-semantics` package skeleton. --- metricflow-semantics/LICENSE | 90 +++++++++++++++++++++++++++++ metricflow-semantics/README.md | 16 +++++ metricflow-semantics/pyproject.toml | 53 +++++++++++++++++ 3 files changed, 159 insertions(+) create mode 100644 metricflow-semantics/LICENSE create mode 100644 metricflow-semantics/README.md create mode 100644 metricflow-semantics/pyproject.toml diff --git a/metricflow-semantics/LICENSE b/metricflow-semantics/LICENSE new file mode 100644 index 0000000000..5bfefb53d1 --- /dev/null +++ b/metricflow-semantics/LICENSE @@ -0,0 +1,90 @@ +License text copyright © 2017 MariaDB Corporation Ab, All Rights Reserved. +“Business Source License” is a trademark of MariaDB Corporation Ab. + +Licensed Work: dbt MetricFlow + +Change Date: The change date for each release of the Licensed Work will +be the 3rd anniversary of the initial release date of that +release of the Licensed Work. + +Change License: Apache 2.0 https://www.apache.org/licenses/LICENSE-2.0 + +Additional Use Grant: The Licensor hereby grants you the right to use the +Licensed Work for production purposes that consist of +your internal business purposes, but not for the purpose +of providing managed services or software-as-a-service +to others. + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited production +use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under the +terms of the Change License, and the rights granted in the paragraph above +terminate. + +If your use of the Licensed Work does not comply with the requirements currently +in effect as described in this License, you must purchase a commercial license +from the Licensor, its affiliated entities, or authorized resellers, or you must +refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works of +the Licensed Work, are subject to this License. This License applies separately +for each version of the Licensed Work and the Change Date may vary for each +version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy of +the Licensed Work. If you receive the Licensed Work in original or modified form +from a third party, the terms and conditions set forth in this License apply to +your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other versions +of the Licensed Work. + +This License does not grant you any right in any trademark or logo of Licensor +or its affiliates (provided that you may use a trademark or logo of Licensor as +expressly required by this License).TO THE EXTENT PERMITTED BY APPLICABLE LAW, +THE LICENSED WORK IS PROVIDED ON AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL +WARRANTIES AND CONDITIONS, EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, +NON-INFRINGEMENT, AND TITLE.MariaDB hereby grants you permission to use this +License’s text to license your works, and to refer to it using the trademark +“Business Source License”, as long as you comply with the Covenants of Licensor +below. + +Covenants of Licensor + +In consideration of the right to use this License’s text and the “Business +Source License” name and trademark, Licensor covenants to MariaDB, and to all +other recipients of the licensed work to be provided by Licensor: + +To specify as the Change License the GPL Version 2.0 or any later version, or a +license that is compatible with GPL Version 2.0 or a later version, where +“compatible” means that software provided under the Change License can be +included in a program with software provided under GPL Version 2.0 or a later +version. Licensor may specify additional Change Licenses without limitation. + +To either: (a) specify an additional grant of rights to use that does not impose +any additional restriction on the right granted in this License, as the +Additional Use Grant; or (b) insert the text “None”. + +To specify a Change Date. + +Not to modify this License in any other way. + +Notice + +The Business Source License (this document, or the “License”) is not an Open +Source license. However, the Licensed Work will eventually be made available +under an Open Source License, as stated in this License. + +For more information on the use of the Business Source License for MariaDB +products, please visit the MariaDB Business Source License FAQ. For more +information on the use of the Business Source License generally, please visit +the Adopting and Developing Business Source License FAQ. diff --git a/metricflow-semantics/README.md b/metricflow-semantics/README.md new file mode 100644 index 0000000000..89ac3de1ef --- /dev/null +++ b/metricflow-semantics/README.md @@ -0,0 +1,16 @@ +

+ + + + + + + +

+ +# Welcome to metricflow-semantics + +This repo encapsulates the modules needed for semantic resolution for MetricFlow queries. + +## Repo use cases +- Resolving the dbt model dependencies of a (saved) query in MetricFlow for DAG dependency management. diff --git a/metricflow-semantics/pyproject.toml b/metricflow-semantics/pyproject.toml new file mode 100644 index 0000000000..bf26d084cb --- /dev/null +++ b/metricflow-semantics/pyproject.toml @@ -0,0 +1,53 @@ +[build-system] +requires = ["hatchling~=1.14.0"] +build-backend = "hatchling.build" + +[project] +name = "metricflow-semantics" +version = "0.1.0" +description = "Modules for semantic understanding of a MetricFlow query." +readme = "README.md" +requires-python = ">=3.8,<3.12" +license = "BUSL-1.1" +authors = [ + { name = "dbt Labs", email = "info@dbtlabs.com" }, +] + +classifiers = [ + "Development Status :: 4 - Beta", + "Programming Language :: Python", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", +] +dependencies = [ + "Jinja2>=3.1.3", + "PyYAML>=6.0, <7.0.0", + "dbt-semantic-interfaces>=0.5.1, <0.6.0", + "graphviz>=0.18.2, <0.21", + "more-itertools>=8.10.0, <10.2.0", + "pandas>=1.5.0, <1.6.0", + "pydantic>=1.10.0, <1.11.0", + "python-dateutil>=2.8.2, <2.9.0", + "rapidfuzz>=3.0, <4.0", + "ruamel.yaml>=0.17.21, <0.18.0", + "tabulate>=0.8.9", + "typing_extensions>=4.4, <5.0", +] + +[project.urls] +"Source Code" = "https://github.com/dbt-labs/metricflow/tree/main/metricflow-semanitcs" + +[tool.hatch.build.targets.sdist] +exclude = [ + "/.github", + "/.changes", + ".changie.yaml", + ".gitignore", + ".pre-commit-config.yaml", + "CONTRIBUTING.md", + "MAKEFILE", +] From 58f631cf42eee1c88f367bb390b9ded70a9a28f1 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 00:15:55 -0700 Subject: [PATCH 43/80] Move metricflow.semantics. --- .../dbt_metricflow/cli/cli_context.py | 2 +- .../dbt_connectors/adapter_backed_client.py | 10 +-- .../cli/dbt_connectors/dbt_config_accessor.py | 7 +- dbt-metricflow/dbt_metricflow/cli/main.py | 2 +- .../metricflow_semantics}/__init__.py | 0 .../aggregation_properties.py | 0 .../metricflow_semantics}/assert_one_arg.py | 0 .../collection_helpers/__init__.py | 0 .../collection_helpers/merger.py | 0 .../metricflow_semantics}/dag/__init__.py | 0 .../metricflow_semantics}/dag/dag_to_text.py | 4 +- .../dag/dag_visualization.py | 4 +- .../metricflow_semantics}/dag/id_prefix.py | 0 .../metricflow_semantics}/dag/mf_dag.py | 8 +-- .../dag/sequential_id.py | 2 +- .../metricflow_semantics}/errors/__init__.py | 0 .../errors/error_classes.py | 0 .../metricflow_semantics}/filters/__init__.py | 0 .../filters/merge_where.py | 0 .../filters/time_constraint.py | 2 +- .../metricflow_semantics}/instances.py | 6 +- .../mf_logging/__init__.py | 0 .../mf_logging/formatting.py | 0 .../mf_logging/pretty_print.py | 2 +- .../mf_logging/runtime.py | 0 .../metricflow_semantics}/model/__init__.py | 0 .../model/dbt_manifest_parser.py | 2 +- .../metricflow_semantics}/model/graph.py | 0 .../model/object_to_reference.py | 0 .../model/semantic_manifest_lookup.py | 4 +- .../model/semantics/__init__.py | 0 .../model/semantics/element_group.py | 0 .../model/semantics/linkable_element.py | 2 +- .../model/semantics/linkable_element_set.py | 4 +- .../model/semantics/linkable_spec_resolver.py | 14 ++-- .../model/semantics/metric_lookup.py | 14 ++-- .../semantics/semantic_model_container.py | 0 .../semantic_model_join_evaluator.py | 6 +- .../model/semantics/semantic_model_lookup.py | 10 +-- .../model/spec_converters.py | 2 +- .../model/transformations/__init__.py | 0 .../dedupe_metric_input_measures.py | 0 .../metricflow_semantics}/naming/__init__.py | 0 .../naming/dunder_scheme.py | 6 +- .../naming/linkable_spec_name.py | 0 .../naming/metric_scheme.py | 6 +- .../naming/naming_scheme.py | 4 +- .../naming/object_builder_scheme.py | 12 ++-- .../naming/object_builder_str.py | 2 +- .../protocols/__init__.py | 0 .../protocols/query_parameter.py | 2 +- .../metricflow_semantics}/query/__init__.py | 0 .../query/group_by_item/__init__.py | 0 .../candidate_push_down/__init__.py | 0 .../group_by_item_candidate.py | 8 +-- .../candidate_push_down/push_down_visitor.py | 44 ++++++------ .../filter_spec_resolution/__init__.py | 0 .../filter_spec_resolution/filter_location.py | 0 .../filter_pattern_factory.py | 4 +- .../filter_spec_lookup.py | 18 ++--- .../filter_spec_resolver.py | 34 +++++----- .../group_by_item/group_by_item_resolver.py | 28 ++++---- .../query/group_by_item/path_prefixable.py | 2 +- .../group_by_item/resolution_dag/__init__.py | 0 .../query/group_by_item/resolution_dag/dag.py | 10 +-- .../resolution_dag/dag_builder.py | 14 ++-- .../resolution_dag/input_metric_location.py | 2 +- .../resolution_nodes/__init__.py | 0 .../resolution_nodes/base_node.py | 12 ++-- .../resolution_nodes/measure_source_node.py | 8 +-- .../metric_resolution_node.py | 12 ++-- .../no_metrics_query_source_node.py | 8 +-- .../resolution_nodes/query_resolution_node.py | 12 ++-- .../query/group_by_item/resolution_path.py | 6 +- .../query/issues/__init__.py | 0 .../issues/filter_spec_resolver/__init__.py | 0 .../filter_spec_resolver/invalid_where.py | 8 +-- .../issues/group_by_item_resolver/__init__.py | 0 .../ambiguous_group_by_item.py | 14 ++-- .../invalid_use_of_date_part.py | 10 +-- .../multiple_join_paths.py | 14 ++-- .../group_by_item_resolver/no_common_items.py | 16 ++--- .../no_matching_items_for_measure.py | 10 +-- .../no_matching_items_for_no_metrics_query.py | 6 +- .../no_parent_candidates.py | 6 +- .../query/issues/issues_base.py | 8 +-- .../query/issues/parsing/__init__.py | 0 .../cumulative_metric_requires_metric_time.py | 6 +- .../query/issues/parsing/duplicate_metric.py | 6 +- .../query/issues/parsing/invalid_limit.py | 6 +- .../query/issues/parsing/invalid_metric.py | 10 +-- .../issues/parsing/invalid_min_max_only.py | 6 +- .../query/issues/parsing/invalid_order.py | 8 +-- .../issues/parsing/no_metric_or_group_by.py | 8 +-- .../offset_metric_requires_metric_time.py | 6 +- .../parsing/string_input_parsing_issue.py | 6 +- .../query/query_exceptions.py | 0 .../query/query_parser.py | 52 +++++++------- .../query/query_resolution.py | 14 ++-- .../query/query_resolver.py | 48 ++++++------- .../query/resolver_inputs/__init__.py | 0 .../resolver_inputs/base_resolver_inputs.py | 4 +- .../resolver_inputs/query_resolver_inputs.py | 18 ++--- .../metricflow_semantics}/query/similarity.py | 0 .../query/suggestion_generator.py | 12 ++-- .../query/validation_rules/__init__.py | 0 .../validation_rules/base_validation_rule.py | 8 +-- .../validation_rules/duplicate_metric.py | 12 ++-- .../metric_time_requirements.py | 16 ++--- .../query/validation_rules/query_validator.py | 26 +++---- .../metricflow_semantics}/random_id.py | 0 .../metricflow_semantics}/specs/__init__.py | 0 .../specs/column_assoc.py | 2 +- .../specs/dimension_spec_resolver.py | 2 +- .../specs/patterns/__init__.py | 0 .../specs/patterns/base_time_grain.py | 6 +- .../specs/patterns/entity_link_pattern.py | 4 +- .../specs/patterns/match_list_pattern.py | 4 +- .../specs/patterns/metric_pattern.py | 4 +- .../specs/patterns/metric_time_pattern.py | 4 +- .../specs/patterns/none_date_part.py | 4 +- .../specs/patterns/spec_pattern.py | 2 +- .../specs/patterns/typed_patterns.py | 4 +- .../specs/python_object.py | 8 +-- .../specs/query_param_implementations.py | 14 ++-- .../specs/rendered_spec_tracker.py | 2 +- .../specs/spec_classes.py | 22 +++--- .../specs/spec_set_transforms.py | 2 +- .../specs/where_filter_dimension.py | 10 +-- .../specs/where_filter_entity.py | 10 +-- .../specs/where_filter_metric.py | 10 +-- .../specs/where_filter_time_dimension.py | 12 ++-- .../specs/where_filter_transform.py | 20 +++--- .../metricflow_semantics}/sql/__init__.py | 0 .../sql/sql_bind_parameters.py | 4 +- .../sql/sql_column_type.py | 0 .../sql/sql_join_type.py | 0 .../metricflow_semantics}/test_helpers.py | 2 +- .../metricflow_semantics}/time/__init__.py | 0 .../time/time_constants.py | 0 .../time/time_granularity.py | 0 .../metricflow_semantics}/time/time_source.py | 0 .../metricflow_semantics}/visitor.py | 0 .../dataflow/builder/dataflow_plan_builder.py | 68 +++++++++---------- .../dataflow/builder/measure_additiveness.py | 2 +- metricflow/dataflow/builder/node_data_set.py | 7 +- metricflow/dataflow/builder/node_evaluator.py | 22 +++--- metricflow/dataflow/builder/partitions.py | 7 +- metricflow/dataflow/builder/source_node.py | 4 +- metricflow/dataflow/dataflow_plan.py | 6 +- .../dataflow/nodes/add_generated_uuid.py | 7 +- .../dataflow/nodes/aggregate_measures.py | 7 +- .../nodes/combine_aggregated_outputs.py | 5 +- metricflow/dataflow/nodes/compute_metrics.py | 9 +-- metricflow/dataflow/nodes/constrain_time.py | 9 +-- metricflow/dataflow/nodes/filter_elements.py | 11 +-- .../dataflow/nodes/join_conversion_events.py | 12 ++-- metricflow/dataflow/nodes/join_over_time.py | 10 +-- metricflow/dataflow/nodes/join_to_base.py | 11 +-- .../dataflow/nodes/join_to_time_spine.py | 12 ++-- .../dataflow/nodes/metric_time_transform.py | 6 +- metricflow/dataflow/nodes/min_max.py | 5 +- metricflow/dataflow/nodes/order_by_limit.py | 9 +-- metricflow/dataflow/nodes/read_sql_source.py | 6 +- .../dataflow/nodes/semi_additive_join.py | 8 +-- metricflow/dataflow/nodes/where_filter.py | 9 +-- .../dataflow/nodes/write_to_dataframe.py | 5 +- metricflow/dataflow/nodes/write_to_table.py | 5 +- .../source_scan/cm_branch_combiner.py | 3 +- .../source_scan/matching_linkable_specs.py | 2 +- .../source_scan/source_scan_optimizer.py | 5 +- metricflow/dataset/convert_semantic_model.py | 24 +++---- metricflow/dataset/dataset_classes.py | 5 +- metricflow/dataset/semantic_model_adapter.py | 2 +- metricflow/dataset/sql_dataset.py | 12 ++-- metricflow/engine/metricflow_engine.py | 40 +++++------ metricflow/engine/models.py | 5 +- metricflow/engine/time_source.py | 2 +- metricflow/execution/execution_plan.py | 8 +-- metricflow/execution/executor.py | 3 +- metricflow/plan_conversion/column_resolver.py | 8 +-- .../plan_conversion/convert_to_sql_plan.py | 3 +- metricflow/plan_conversion/dataflow_to_sql.py | 58 ++++++++-------- .../plan_conversion/instance_converters.py | 22 +++--- metricflow/plan_conversion/node_processor.py | 14 ++-- metricflow/plan_conversion/spec_transforms.py | 9 +-- .../plan_conversion/sql_join_builder.py | 4 +- metricflow/plan_conversion/time_spine.py | 2 +- metricflow/protocols/sql_client.py | 2 +- .../optimizer/rewriting_sub_query_reducer.py | 3 +- metricflow/sql/render/big_query.py | 4 +- metricflow/sql/render/databricks.py | 2 +- metricflow/sql/render/duckdb_renderer.py | 2 +- metricflow/sql/render/expr_renderer.py | 4 +- metricflow/sql/render/postgres.py | 4 +- metricflow/sql/render/redshift.py | 4 +- metricflow/sql/render/snowflake.py | 4 +- metricflow/sql/render/sql_plan_renderer.py | 5 +- metricflow/sql/render/trino.py | 2 +- metricflow/sql/sql_exprs.py | 9 ++- metricflow/sql/sql_plan.py | 8 +-- metricflow/telemetry/handlers/python_log.py | 3 +- metricflow/telemetry/reporter.py | 2 +- .../data_warehouse_model_validator.py | 6 +- tests/dataflow/builder/test_cyclic_join.py | 6 +- .../builder/test_dataflow_plan_builder.py | 16 ++--- .../builder/test_measure_additiveness.py | 2 +- tests/dataflow/builder/test_node_data_set.py | 24 +++---- tests/dataflow/builder/test_node_evaluator.py | 20 +++--- .../source_scan/test_cm_branch_combiner.py | 6 +- .../source_scan/test_source_scan_optimizer.py | 16 ++--- tests/dataflow_plan_to_svg.py | 4 +- tests/examples/test_node_sql.py | 6 +- tests/execution/noop_task.py | 3 +- tests/execution/test_sequential_executor.py | 3 +- tests/execution/test_tasks.py | 6 +- tests/fixtures/cli_fixtures.py | 4 +- tests/fixtures/dataflow_fixtures.py | 4 +- tests/fixtures/id_fixtures.py | 3 +- tests/fixtures/manifest_fixtures.py | 8 +-- tests/fixtures/setup_fixtures.py | 8 +-- .../base_sql_client_implementation.py | 8 +-- .../sql_clients/sqlalchemy_dialect.py | 2 +- tests/fixtures/table_fixtures.py | 2 +- tests/integration/conftest.py | 4 +- tests/integration/test_configured_cases.py | 12 ++-- tests/integration/test_rendered_query.py | 4 +- .../test_conversion_metrics_to_sql.py | 10 +-- .../test_distinct_values_to_sql.py | 6 +- .../test_metric_time_dimension_to_sql.py | 2 +- ...select_columns_with_measures_aggregated.py | 7 +- ...create_validity_window_join_description.py | 6 +- .../test_dataflow_to_execution.py | 16 ++--- .../test_dataflow_to_sql_plan.py | 40 +++++------ tests/plan_conversion/test_time_spine.py | 6 +- .../query_rendering/compare_rendered_query.py | 2 +- .../test_cumulative_metric_rendering.py | 8 +-- .../test_derived_metric_rendering.py | 16 ++--- .../test_fill_nulls_with_rendering.py | 14 ++-- .../test_granularity_date_part_rendering.py | 8 +-- .../test_metric_filter_rendering.py | 2 +- .../test_metric_time_without_metrics.py | 4 +- tests/query_rendering/test_query_rendering.py | 18 ++--- .../test_time_spine_join_rendering.py | 8 +-- .../collection_helpers/test_merger.py | 3 +- .../collection_helpers/test_pretty_print.py | 4 +- .../semantics/mf_logging/test_dag_to_text.py | 7 +- .../semantics/test_linkable_element_set.py | 7 +- .../semantics/test_linkable_spec_resolver.py | 10 +-- .../test_semantic_model_join_evaluator.py | 6 +- .../model/test_data_warehouse_tasks.py | 2 +- .../model/test_semantic_model_container.py | 6 +- .../semantics/model/test_where_filter_spec.py | 18 ++--- tests/semantics/naming/conftest.py | 4 +- .../naming/test_dunder_naming_scheme.py | 4 +- .../naming/test_metric_name_scheme.py | 5 +- .../test_object_builder_naming_scheme.py | 6 +- .../semantics/query/group_by_item/conftest.py | 10 +-- .../test_spec_lookup.py | 16 ++--- .../resolution_dag/test_resolution_dags.py | 4 +- .../test_available_group_by_items.py | 8 +-- .../test_matching_item_for_filters.py | 10 +-- .../test_matching_item_for_querying.py | 14 ++-- .../query/test_ambiguous_entity_path.py | 10 +-- tests/semantics/query/test_query_parser.py | 14 ++-- tests/semantics/query/test_suggestions.py | 6 +- tests/semantics/specs/conftest.py | 3 +- .../patterns/test_entity_link_pattern.py | 6 +- .../specs/patterns/test_typed_patterns.py | 5 +- .../specs/test_time_dimension_spec.py | 3 +- .../specs/test_where_filter_entity.py | 12 ++-- .../sql/test_bind_parameter_serialization.py | 3 +- tests/semantics/test_specs.py | 3 +- tests/snapshot_utils.py | 12 ++-- tests/sql/compare_sql_plan.py | 2 +- tests/sql/optimizer/test_column_pruner.py | 2 +- .../test_rewriting_sub_query_reducer.py | 2 +- tests/sql/optimizer/test_sub_query_reducer.py | 2 +- .../optimizer/test_table_alias_simplifier.py | 2 +- tests/sql/test_sql_plan_render.py | 2 +- .../sql_clients/test_date_time_operations.py | 2 +- tests/sql_clients/test_sql_client.py | 4 +- tests/table_snapshot/table_snapshots.py | 2 +- tests/table_snapshot/test_table_snapshots.py | 2 +- tests/test_instance_serialization.py | 2 +- 285 files changed, 1018 insertions(+), 1005 deletions(-) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/aggregation_properties.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/assert_one_arg.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/collection_helpers/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/collection_helpers/merger.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/dag/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/dag/dag_to_text.py (98%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/dag/dag_visualization.py (93%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/dag/id_prefix.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/dag/mf_dag.py (96%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/dag/sequential_id.py (96%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/errors/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/errors/error_classes.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/filters/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/filters/merge_where.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/filters/time_constraint.py (98%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/instances.py (98%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/mf_logging/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/mf_logging/formatting.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/mf_logging/pretty_print.py (99%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/mf_logging/runtime.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/dbt_manifest_parser.py (96%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/graph.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/object_to_reference.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/semantic_manifest_lookup.py (88%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/semantics/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/semantics/element_group.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/semantics/linkable_element.py (99%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/semantics/linkable_element_set.py (99%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/semantics/linkable_spec_resolver.py (98%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/semantics/metric_lookup.py (95%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/semantics/semantic_model_container.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/semantics/semantic_model_join_evaluator.py (98%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/semantics/semantic_model_lookup.py (98%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/spec_converters.py (96%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/transformations/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/model/transformations/dedupe_metric_input_measures.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/naming/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/naming/dunder_scheme.py (97%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/naming/linkable_spec_name.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/naming/metric_scheme.py (87%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/naming/naming_scheme.py (92%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/naming/object_builder_scheme.py (94%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/naming/object_builder_str.py (99%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/protocols/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/protocols/query_parameter.py (97%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/candidate_push_down/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/candidate_push_down/group_by_item_candidate.py (94%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/candidate_push_down/push_down_visitor.py (93%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/filter_spec_resolution/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/filter_spec_resolution/filter_location.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py (95%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py (93%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py (94%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/group_by_item_resolver.py (90%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/path_prefixable.py (93%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/resolution_dag/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/resolution_dag/dag.py (84%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/resolution_dag/dag_builder.py (92%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/resolution_dag/input_metric_location.py (93%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/resolution_dag/resolution_nodes/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/resolution_dag/resolution_nodes/base_node.py (85%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py (90%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py (88%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py (82%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py (89%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/group_by_item/resolution_path.py (91%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/filter_spec_resolver/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/filter_spec_resolver/invalid_where.py (88%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/group_by_item_resolver/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/group_by_item_resolver/ambiguous_group_by_item.py (83%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/group_by_item_resolver/invalid_use_of_date_part.py (88%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/group_by_item_resolver/multiple_join_paths.py (85%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/group_by_item_resolver/no_common_items.py (89%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/group_by_item_resolver/no_matching_items_for_measure.py (88%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py (90%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/group_by_item_resolver/no_parent_candidates.py (92%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/issues_base.py (93%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/parsing/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/parsing/cumulative_metric_requires_metric_time.py (91%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/parsing/duplicate_metric.py (90%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/parsing/invalid_limit.py (88%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/parsing/invalid_metric.py (84%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/parsing/invalid_min_max_only.py (89%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/parsing/invalid_order.py (87%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/parsing/no_metric_or_group_by.py (86%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/parsing/offset_metric_requires_metric_time.py (92%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/issues/parsing/string_input_parsing_issue.py (88%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/query_exceptions.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/query_parser.py (92%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/query_resolution.py (88%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/query_resolver.py (93%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/resolver_inputs/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/resolver_inputs/base_resolver_inputs.py (91%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/resolver_inputs/query_resolver_inputs.py (92%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/similarity.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/suggestion_generator.py (85%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/validation_rules/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/validation_rules/base_validation_rule.py (87%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/validation_rules/duplicate_metric.py (84%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/validation_rules/metric_time_requirements.py (90%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/query/validation_rules/query_validator.py (85%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/random_id.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/column_assoc.py (97%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/dimension_spec_resolver.py (97%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/patterns/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/patterns/base_time_grain.py (95%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/patterns/entity_link_pattern.py (97%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/patterns/match_list_pattern.py (83%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/patterns/metric_pattern.py (86%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/patterns/metric_time_pattern.py (89%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/patterns/none_date_part.py (89%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/patterns/spec_pattern.py (92%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/patterns/typed_patterns.py (97%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/python_object.py (94%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/query_param_implementations.py (91%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/rendered_spec_tracker.py (93%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/spec_classes.py (98%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/spec_set_transforms.py (91%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/where_filter_dimension.py (95%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/where_filter_entity.py (93%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/where_filter_metric.py (92%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/where_filter_time_dimension.py (91%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/specs/where_filter_transform.py (87%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/sql/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/sql/sql_bind_parameters.py (97%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/sql/sql_column_type.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/sql/sql_join_type.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/test_helpers.py (99%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/time/__init__.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/time/time_constants.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/time/time_granularity.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/time/time_source.py (100%) rename {metricflow/semantics => metricflow-semantics/metricflow_semantics}/visitor.py (100%) diff --git a/dbt-metricflow/dbt_metricflow/cli/cli_context.py b/dbt-metricflow/dbt_metricflow/cli/cli_context.py index 129d9915e3..bdc3fd2454 100644 --- a/dbt-metricflow/dbt_metricflow/cli/cli_context.py +++ b/dbt-metricflow/dbt_metricflow/cli/cli_context.py @@ -6,12 +6,12 @@ from typing import Dict, Optional from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from dbt_metricflow.cli.dbt_connectors.adapter_backed_client import AdapterBackedSqlClient from dbt_metricflow.cli.dbt_connectors.dbt_config_accessor import dbtArtifacts, dbtProjectMetadata from metricflow.engine.metricflow_engine import MetricFlowEngine from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup logger = logging.getLogger(__name__) diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py index e90b6173fd..0ae19f3ed7 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/adapter_backed_client.py @@ -8,13 +8,13 @@ from dbt.adapters.base.impl import BaseAdapter from dbt.exceptions import DbtDatabaseError from dbt_semantic_interfaces.enum_extension import assert_values_exhausted +from metricflow_semantics.errors.error_classes import SqlBindParametersNotSupportedError +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.random_id import random_id +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.protocols.sql_client import SqlEngine -from metricflow.semantics.errors.error_classes import SqlBindParametersNotSupportedError -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.random_id import random_id -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.big_query import BigQuerySqlQueryPlanRenderer from metricflow.sql.render.databricks import DatabricksSqlQueryPlanRenderer from metricflow.sql.render.duckdb_renderer import DuckDbSqlQueryPlanRenderer diff --git a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py index 9885bf7151..5ac5f32f7e 100644 --- a/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py +++ b/dbt-metricflow/dbt_metricflow/cli/dbt_connectors/dbt_config_accessor.py @@ -12,12 +12,11 @@ from dbt.config.project import Project from dbt.config.runtime import load_profile, load_project from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest +from metricflow_semantics.errors.error_classes import ModelCreationException +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.dbt_manifest_parser import parse_manifest_from_dbt_generated_manifest from typing_extensions import Self -from metricflow.semantics.errors.error_classes import ModelCreationException -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.model.dbt_manifest_parser import parse_manifest_from_dbt_generated_manifest - logger = logging.getLogger(__name__) diff --git a/dbt-metricflow/dbt_metricflow/cli/main.py b/dbt-metricflow/dbt_metricflow/cli/main.py index 9fc1893b03..f8dda90028 100644 --- a/dbt-metricflow/dbt_metricflow/cli/main.py +++ b/dbt-metricflow/dbt_metricflow/cli/main.py @@ -18,6 +18,7 @@ from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator from dbt_semantic_interfaces.validations.validator_helpers import SemanticManifestValidationResults from halo import Halo +from metricflow_semantics.dag.dag_visualization import display_dag_as_svg from update_checker import UpdateChecker import dbt_metricflow.cli.custom_click_types as click_custom @@ -36,7 +37,6 @@ start_end_time_options, ) from metricflow.engine.metricflow_engine import MetricFlowExplainResult, MetricFlowQueryRequest, MetricFlowQueryResult -from metricflow.semantics.dag.dag_visualization import display_dag_as_svg from metricflow.telemetry.models import TelemetryLevel from metricflow.telemetry.reporter import TelemetryReporter, log_call from metricflow.validation.data_warehouse_model_validator import DataWarehouseModelValidator diff --git a/metricflow/semantics/__init__.py b/metricflow-semantics/metricflow_semantics/__init__.py similarity index 100% rename from metricflow/semantics/__init__.py rename to metricflow-semantics/metricflow_semantics/__init__.py diff --git a/metricflow/semantics/aggregation_properties.py b/metricflow-semantics/metricflow_semantics/aggregation_properties.py similarity index 100% rename from metricflow/semantics/aggregation_properties.py rename to metricflow-semantics/metricflow_semantics/aggregation_properties.py diff --git a/metricflow/semantics/assert_one_arg.py b/metricflow-semantics/metricflow_semantics/assert_one_arg.py similarity index 100% rename from metricflow/semantics/assert_one_arg.py rename to metricflow-semantics/metricflow_semantics/assert_one_arg.py diff --git a/metricflow/semantics/collection_helpers/__init__.py b/metricflow-semantics/metricflow_semantics/collection_helpers/__init__.py similarity index 100% rename from metricflow/semantics/collection_helpers/__init__.py rename to metricflow-semantics/metricflow_semantics/collection_helpers/__init__.py diff --git a/metricflow/semantics/collection_helpers/merger.py b/metricflow-semantics/metricflow_semantics/collection_helpers/merger.py similarity index 100% rename from metricflow/semantics/collection_helpers/merger.py rename to metricflow-semantics/metricflow_semantics/collection_helpers/merger.py diff --git a/metricflow/semantics/dag/__init__.py b/metricflow-semantics/metricflow_semantics/dag/__init__.py similarity index 100% rename from metricflow/semantics/dag/__init__.py rename to metricflow-semantics/metricflow_semantics/dag/__init__.py diff --git a/metricflow/semantics/dag/dag_to_text.py b/metricflow-semantics/metricflow_semantics/dag/dag_to_text.py similarity index 98% rename from metricflow/semantics/dag/dag_to_text.py rename to metricflow-semantics/metricflow_semantics/dag/dag_to_text.py index e007dd4632..5b3ea8ad58 100644 --- a/metricflow/semantics/dag/dag_to_text.py +++ b/metricflow-semantics/metricflow_semantics/dag/dag_to_text.py @@ -12,9 +12,9 @@ import jinja2 if typing.TYPE_CHECKING: - from metricflow.semantics.dag.mf_dag import DagNode, DagNodeT, DisplayedProperty, MetricFlowDag + from metricflow_semantics.dag.mf_dag import DagNode, DagNodeT, DisplayedProperty, MetricFlowDag -from metricflow.semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.mf_logging.pretty_print import mf_pformat logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dag/dag_visualization.py b/metricflow-semantics/metricflow_semantics/dag/dag_visualization.py similarity index 93% rename from metricflow/semantics/dag/dag_visualization.py rename to metricflow-semantics/metricflow_semantics/dag/dag_visualization.py index 09c2126065..45260d2c13 100644 --- a/metricflow/semantics/dag/dag_visualization.py +++ b/metricflow-semantics/metricflow_semantics/dag/dag_visualization.py @@ -6,8 +6,8 @@ import graphviz -from metricflow.semantics.dag.mf_dag import DagNode, MetricFlowDag -from metricflow.semantics.random_id import random_id +from metricflow_semantics.dag.mf_dag import DagNode, MetricFlowDag +from metricflow_semantics.random_id import random_id logger = logging.getLogger(__name__) DagNodeT = TypeVar("DagNodeT", bound=DagNode) diff --git a/metricflow/semantics/dag/id_prefix.py b/metricflow-semantics/metricflow_semantics/dag/id_prefix.py similarity index 100% rename from metricflow/semantics/dag/id_prefix.py rename to metricflow-semantics/metricflow_semantics/dag/id_prefix.py diff --git a/metricflow/semantics/dag/mf_dag.py b/metricflow-semantics/metricflow_semantics/dag/mf_dag.py similarity index 96% rename from metricflow/semantics/dag/mf_dag.py rename to metricflow-semantics/metricflow_semantics/dag/mf_dag.py index 2e64a65299..b7bcb0ab20 100644 --- a/metricflow/semantics/dag/mf_dag.py +++ b/metricflow-semantics/metricflow_semantics/dag/mf_dag.py @@ -11,10 +11,10 @@ import jinja2 -from metricflow.semantics.dag.dag_to_text import MetricFlowDagTextFormatter -from metricflow.semantics.dag.id_prefix import IdPrefix -from metricflow.semantics.dag.sequential_id import SequentialIdGenerator -from metricflow.semantics.visitor import VisitorOutputT +from metricflow_semantics.dag.dag_to_text import MetricFlowDagTextFormatter +from metricflow_semantics.dag.id_prefix import IdPrefix +from metricflow_semantics.dag.sequential_id import SequentialIdGenerator +from metricflow_semantics.visitor import VisitorOutputT logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/dag/sequential_id.py b/metricflow-semantics/metricflow_semantics/dag/sequential_id.py similarity index 96% rename from metricflow/semantics/dag/sequential_id.py rename to metricflow-semantics/metricflow_semantics/dag/sequential_id.py index e50bd2b3b6..853109ff6d 100644 --- a/metricflow/semantics/dag/sequential_id.py +++ b/metricflow-semantics/metricflow_semantics/dag/sequential_id.py @@ -6,7 +6,7 @@ from typing_extensions import override -from metricflow.semantics.dag.id_prefix import IdPrefix +from metricflow_semantics.dag.id_prefix import IdPrefix @dataclass(frozen=True) diff --git a/metricflow/semantics/errors/__init__.py b/metricflow-semantics/metricflow_semantics/errors/__init__.py similarity index 100% rename from metricflow/semantics/errors/__init__.py rename to metricflow-semantics/metricflow_semantics/errors/__init__.py diff --git a/metricflow/semantics/errors/error_classes.py b/metricflow-semantics/metricflow_semantics/errors/error_classes.py similarity index 100% rename from metricflow/semantics/errors/error_classes.py rename to metricflow-semantics/metricflow_semantics/errors/error_classes.py diff --git a/metricflow/semantics/filters/__init__.py b/metricflow-semantics/metricflow_semantics/filters/__init__.py similarity index 100% rename from metricflow/semantics/filters/__init__.py rename to metricflow-semantics/metricflow_semantics/filters/__init__.py diff --git a/metricflow/semantics/filters/merge_where.py b/metricflow-semantics/metricflow_semantics/filters/merge_where.py similarity index 100% rename from metricflow/semantics/filters/merge_where.py rename to metricflow-semantics/metricflow_semantics/filters/merge_where.py diff --git a/metricflow/semantics/filters/time_constraint.py b/metricflow-semantics/metricflow_semantics/filters/time_constraint.py similarity index 98% rename from metricflow/semantics/filters/time_constraint.py rename to metricflow-semantics/metricflow_semantics/filters/time_constraint.py index 00e5244816..69a8bd8d96 100644 --- a/metricflow/semantics/filters/time_constraint.py +++ b/metricflow-semantics/metricflow_semantics/filters/time_constraint.py @@ -9,7 +9,7 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.semantics.time.time_granularity import offset_period +from metricflow_semantics.time.time_granularity import offset_period logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/instances.py b/metricflow-semantics/metricflow_semantics/instances.py similarity index 98% rename from metricflow/semantics/instances.py rename to metricflow-semantics/metricflow_semantics/instances.py index 5c4519abd3..2e6c4499c3 100644 --- a/metricflow/semantics/instances.py +++ b/metricflow-semantics/metricflow_semantics/instances.py @@ -9,9 +9,9 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass from dbt_semantic_interfaces.references import MetricModelReference, SemanticModelElementReference -from metricflow.semantics.aggregation_properties import AggregationState -from metricflow.semantics.specs.column_assoc import ColumnAssociation -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.aggregation_properties import AggregationState +from metricflow_semantics.specs.column_assoc import ColumnAssociation +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, diff --git a/metricflow/semantics/mf_logging/__init__.py b/metricflow-semantics/metricflow_semantics/mf_logging/__init__.py similarity index 100% rename from metricflow/semantics/mf_logging/__init__.py rename to metricflow-semantics/metricflow_semantics/mf_logging/__init__.py diff --git a/metricflow/semantics/mf_logging/formatting.py b/metricflow-semantics/metricflow_semantics/mf_logging/formatting.py similarity index 100% rename from metricflow/semantics/mf_logging/formatting.py rename to metricflow-semantics/metricflow_semantics/mf_logging/formatting.py diff --git a/metricflow/semantics/mf_logging/pretty_print.py b/metricflow-semantics/metricflow_semantics/mf_logging/pretty_print.py similarity index 99% rename from metricflow/semantics/mf_logging/pretty_print.py rename to metricflow-semantics/metricflow_semantics/mf_logging/pretty_print.py index 50d2f4d3f3..86d342cf27 100644 --- a/metricflow/semantics/mf_logging/pretty_print.py +++ b/metricflow-semantics/metricflow_semantics/mf_logging/pretty_print.py @@ -9,7 +9,7 @@ from pydantic import BaseModel -from metricflow.semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.formatting import indent logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/mf_logging/runtime.py b/metricflow-semantics/metricflow_semantics/mf_logging/runtime.py similarity index 100% rename from metricflow/semantics/mf_logging/runtime.py rename to metricflow-semantics/metricflow_semantics/mf_logging/runtime.py diff --git a/metricflow/semantics/model/__init__.py b/metricflow-semantics/metricflow_semantics/model/__init__.py similarity index 100% rename from metricflow/semantics/model/__init__.py rename to metricflow-semantics/metricflow_semantics/model/__init__.py diff --git a/metricflow/semantics/model/dbt_manifest_parser.py b/metricflow-semantics/metricflow_semantics/model/dbt_manifest_parser.py similarity index 96% rename from metricflow/semantics/model/dbt_manifest_parser.py rename to metricflow-semantics/metricflow_semantics/model/dbt_manifest_parser.py index 2fa24ad357..ea1ba90c9c 100644 --- a/metricflow/semantics/model/dbt_manifest_parser.py +++ b/metricflow-semantics/metricflow_semantics/model/dbt_manifest_parser.py @@ -16,7 +16,7 @@ PydanticSemanticManifestTransformer, ) -from metricflow.semantics.model.transformations.dedupe_metric_input_measures import DedupeMetricInputMeasuresRule +from metricflow_semantics.model.transformations.dedupe_metric_input_measures import DedupeMetricInputMeasuresRule def parse_manifest_from_dbt_generated_manifest(manifest_json_string: str) -> PydanticSemanticManifest: diff --git a/metricflow/semantics/model/graph.py b/metricflow-semantics/metricflow_semantics/model/graph.py similarity index 100% rename from metricflow/semantics/model/graph.py rename to metricflow-semantics/metricflow_semantics/model/graph.py diff --git a/metricflow/semantics/model/object_to_reference.py b/metricflow-semantics/metricflow_semantics/model/object_to_reference.py similarity index 100% rename from metricflow/semantics/model/object_to_reference.py rename to metricflow-semantics/metricflow_semantics/model/object_to_reference.py diff --git a/metricflow/semantics/model/semantic_manifest_lookup.py b/metricflow-semantics/metricflow_semantics/model/semantic_manifest_lookup.py similarity index 88% rename from metricflow/semantics/model/semantic_manifest_lookup.py rename to metricflow-semantics/metricflow_semantics/model/semantic_manifest_lookup.py index 2ebfeaad5d..0068424a2e 100644 --- a/metricflow/semantics/model/semantic_manifest_lookup.py +++ b/metricflow-semantics/metricflow_semantics/model/semantic_manifest_lookup.py @@ -4,8 +4,8 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest -from metricflow.semantics.model.semantics.metric_lookup import MetricLookup -from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow_semantics.model.semantics.metric_lookup import MetricLookup +from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/model/semantics/__init__.py b/metricflow-semantics/metricflow_semantics/model/semantics/__init__.py similarity index 100% rename from metricflow/semantics/model/semantics/__init__.py rename to metricflow-semantics/metricflow_semantics/model/semantics/__init__.py diff --git a/metricflow/semantics/model/semantics/element_group.py b/metricflow-semantics/metricflow_semantics/model/semantics/element_group.py similarity index 100% rename from metricflow/semantics/model/semantics/element_group.py rename to metricflow-semantics/metricflow_semantics/model/semantics/element_group.py diff --git a/metricflow/semantics/model/semantics/linkable_element.py b/metricflow-semantics/metricflow_semantics/model/semantics/linkable_element.py similarity index 99% rename from metricflow/semantics/model/semantics/linkable_element.py rename to metricflow-semantics/metricflow_semantics/model/semantics/linkable_element.py index 58e5ddafbd..7167a784b1 100644 --- a/metricflow/semantics/model/semantics/linkable_element.py +++ b/metricflow-semantics/metricflow_semantics/model/semantics/linkable_element.py @@ -10,7 +10,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow.semantics.specs.spec_classes import EntityReference +from metricflow_semantics.specs.spec_classes import EntityReference class LinkableElementType(Enum): diff --git a/metricflow/semantics/model/semantics/linkable_element_set.py b/metricflow-semantics/metricflow_semantics/model/semantics/linkable_element_set.py similarity index 99% rename from metricflow/semantics/model/semantics/linkable_element_set.py rename to metricflow-semantics/metricflow_semantics/model/semantics/linkable_element_set.py index a2363f35e0..3f3d6d09e5 100644 --- a/metricflow/semantics/model/semantics/linkable_element_set.py +++ b/metricflow-semantics/metricflow_semantics/model/semantics/linkable_element_set.py @@ -4,7 +4,7 @@ from dataclasses import dataclass, field from typing import Dict, FrozenSet, List, Sequence, Set, Tuple -from metricflow.semantics.model.semantics.linkable_element import ( +from metricflow_semantics.model.semantics.linkable_element import ( ElementPathKey, LinkableDimension, LinkableElementProperty, @@ -12,7 +12,7 @@ LinkableEntity, LinkableMetric, ) -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, diff --git a/metricflow/semantics/model/semantics/linkable_spec_resolver.py b/metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py similarity index 98% rename from metricflow/semantics/model/semantics/linkable_spec_resolver.py rename to metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py index c274f91712..ce81cf8699 100644 --- a/metricflow/semantics/model/semantics/linkable_spec_resolver.py +++ b/metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py @@ -20,9 +20,9 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.semantics.errors.error_classes import UnknownMetricLinkingError -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.model.semantics.linkable_element import ( +from metricflow_semantics.errors.error_classes import UnknownMetricLinkingError +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.semantics.linkable_element import ( ElementPathKey, LinkableDimension, LinkableElementProperty, @@ -32,15 +32,15 @@ SemanticModelJoinPath, SemanticModelJoinPathElement, ) -from metricflow.semantics.model.semantics.linkable_element_set import LinkableElementSet -from metricflow.semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.model.semantics.linkable_element_set import LinkableElementSet +from metricflow_semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator +from metricflow_semantics.specs.spec_classes import ( DEFAULT_TIME_GRANULARITY, EntityReference, ) if TYPE_CHECKING: - from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup + from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/model/semantics/metric_lookup.py b/metricflow-semantics/metricflow_semantics/model/semantics/metric_lookup.py similarity index 95% rename from metricflow/semantics/model/semantics/metric_lookup.py rename to metricflow-semantics/metricflow_semantics/model/semantics/metric_lookup.py index c47417cc68..0809a811ba 100644 --- a/metricflow/semantics/model/semantics/metric_lookup.py +++ b/metricflow-semantics/metricflow_semantics/model/semantics/metric_lookup.py @@ -8,15 +8,15 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.references import MeasureReference, MetricReference -from metricflow.semantics.errors.error_classes import DuplicateMetricError, MetricNotFoundError, NonExistentMeasureError -from metricflow.semantics.model.semantics.linkable_element import LinkableElementProperty -from metricflow.semantics.model.semantics.linkable_element_set import LinkableElementSet -from metricflow.semantics.model.semantics.linkable_spec_resolver import ( +from metricflow_semantics.errors.error_classes import DuplicateMetricError, MetricNotFoundError, NonExistentMeasureError +from metricflow_semantics.model.semantics.linkable_element import LinkableElementProperty +from metricflow_semantics.model.semantics.linkable_element_set import LinkableElementSet +from metricflow_semantics.model.semantics.linkable_spec_resolver import ( ValidLinkableSpecResolver, ) -from metricflow.semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS -from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.semantics.specs.spec_classes import TimeDimensionSpec +from metricflow_semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS +from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow_semantics.specs.spec_classes import TimeDimensionSpec logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/model/semantics/semantic_model_container.py b/metricflow-semantics/metricflow_semantics/model/semantics/semantic_model_container.py similarity index 100% rename from metricflow/semantics/model/semantics/semantic_model_container.py rename to metricflow-semantics/metricflow_semantics/model/semantics/semantic_model_container.py diff --git a/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py b/metricflow-semantics/metricflow_semantics/model/semantics/semantic_model_join_evaluator.py similarity index 98% rename from metricflow/semantics/model/semantics/semantic_model_join_evaluator.py rename to metricflow-semantics/metricflow_semantics/model/semantics/semantic_model_join_evaluator.py index 143a019e93..9d7550a98f 100644 --- a/metricflow/semantics/model/semantics/semantic_model_join_evaluator.py +++ b/metricflow-semantics/metricflow_semantics/model/semantics/semantic_model_join_evaluator.py @@ -10,11 +10,11 @@ SemanticModelReference, ) -from metricflow.semantics.instances import EntityInstance, InstanceSet -from metricflow.semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.instances import EntityInstance, InstanceSet +from metricflow_semantics.mf_logging.pretty_print import mf_pformat if TYPE_CHECKING: - from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup + from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup MAX_JOIN_HOPS = 2 diff --git a/metricflow/semantics/model/semantics/semantic_model_lookup.py b/metricflow-semantics/metricflow_semantics/model/semantics/semantic_model_lookup.py similarity index 98% rename from metricflow/semantics/model/semantics/semantic_model_lookup.py rename to metricflow-semantics/metricflow_semantics/model/semantics/semantic_model_lookup.py index 3714e3ebb5..b1ab506927 100644 --- a/metricflow/semantics/model/semantics/semantic_model_lookup.py +++ b/metricflow-semantics/metricflow_semantics/model/semantics/semantic_model_lookup.py @@ -21,11 +21,11 @@ from dbt_semantic_interfaces.type_enums import DimensionType, EntityType from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType -from metricflow.semantics.errors.error_classes import InvalidSemanticModelError -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.model.semantics.element_group import ElementGrouper -from metricflow.semantics.model.spec_converters import MeasureConverter -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.errors.error_classes import InvalidSemanticModelError +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.semantics.element_group import ElementGrouper +from metricflow_semantics.model.spec_converters import MeasureConverter +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, LinkableInstanceSpec, diff --git a/metricflow/semantics/model/spec_converters.py b/metricflow-semantics/metricflow_semantics/model/spec_converters.py similarity index 96% rename from metricflow/semantics/model/spec_converters.py rename to metricflow-semantics/metricflow_semantics/model/spec_converters.py index ab701bcc81..2db2d7e519 100644 --- a/metricflow/semantics/model/spec_converters.py +++ b/metricflow-semantics/metricflow_semantics/model/spec_converters.py @@ -12,7 +12,7 @@ from dbt_semantic_interfaces.protocols.measure import Measure -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.spec_classes import ( MeasureSpec, NonAdditiveDimensionSpec, ) diff --git a/metricflow/semantics/model/transformations/__init__.py b/metricflow-semantics/metricflow_semantics/model/transformations/__init__.py similarity index 100% rename from metricflow/semantics/model/transformations/__init__.py rename to metricflow-semantics/metricflow_semantics/model/transformations/__init__.py diff --git a/metricflow/semantics/model/transformations/dedupe_metric_input_measures.py b/metricflow-semantics/metricflow_semantics/model/transformations/dedupe_metric_input_measures.py similarity index 100% rename from metricflow/semantics/model/transformations/dedupe_metric_input_measures.py rename to metricflow-semantics/metricflow_semantics/model/transformations/dedupe_metric_input_measures.py diff --git a/metricflow/semantics/naming/__init__.py b/metricflow-semantics/metricflow_semantics/naming/__init__.py similarity index 100% rename from metricflow/semantics/naming/__init__.py rename to metricflow-semantics/metricflow_semantics/naming/__init__.py diff --git a/metricflow/semantics/naming/dunder_scheme.py b/metricflow-semantics/metricflow_semantics/naming/dunder_scheme.py similarity index 97% rename from metricflow/semantics/naming/dunder_scheme.py rename to metricflow-semantics/metricflow_semantics/naming/dunder_scheme.py index fe876b915e..40c43f7a43 100644 --- a/metricflow/semantics/naming/dunder_scheme.py +++ b/metricflow-semantics/metricflow_semantics/naming/dunder_scheme.py @@ -9,13 +9,13 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme -from metricflow.semantics.specs.patterns.entity_link_pattern import ( +from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow_semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, ParameterSetField, ) -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, InstanceSpecSetTransform, diff --git a/metricflow/semantics/naming/linkable_spec_name.py b/metricflow-semantics/metricflow_semantics/naming/linkable_spec_name.py similarity index 100% rename from metricflow/semantics/naming/linkable_spec_name.py rename to metricflow-semantics/metricflow_semantics/naming/linkable_spec_name.py diff --git a/metricflow/semantics/naming/metric_scheme.py b/metricflow-semantics/metricflow_semantics/naming/metric_scheme.py similarity index 87% rename from metricflow/semantics/naming/metric_scheme.py rename to metricflow-semantics/metricflow_semantics/naming/metric_scheme.py index 8e324848fc..8fc0cd7c48 100644 --- a/metricflow/semantics/naming/metric_scheme.py +++ b/metricflow-semantics/metricflow_semantics/naming/metric_scheme.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme -from metricflow.semantics.specs.patterns.metric_pattern import MetricSpecPattern -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow_semantics.specs.patterns.metric_pattern import MetricSpecPattern +from metricflow_semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, ) diff --git a/metricflow/semantics/naming/naming_scheme.py b/metricflow-semantics/metricflow_semantics/naming/naming_scheme.py similarity index 92% rename from metricflow/semantics/naming/naming_scheme.py rename to metricflow-semantics/metricflow_semantics/naming/naming_scheme.py index ab3b42d244..75331d5894 100644 --- a/metricflow/semantics/naming/naming_scheme.py +++ b/metricflow-semantics/metricflow_semantics/naming/naming_scheme.py @@ -3,10 +3,10 @@ from abc import ABC, abstractmethod from typing import TYPE_CHECKING, Optional -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern if TYPE_CHECKING: - from metricflow.semantics.specs.spec_classes import InstanceSpec + from metricflow_semantics.specs.spec_classes import InstanceSpec class QueryItemNamingScheme(ABC): diff --git a/metricflow/semantics/naming/object_builder_scheme.py b/metricflow-semantics/metricflow_semantics/naming/object_builder_scheme.py similarity index 94% rename from metricflow/semantics/naming/object_builder_scheme.py rename to metricflow-semantics/metricflow_semantics/naming/object_builder_scheme.py index 8417d17467..fdf472b225 100644 --- a/metricflow/semantics/naming/object_builder_scheme.py +++ b/metricflow-semantics/metricflow_semantics/naming/object_builder_scheme.py @@ -12,16 +12,16 @@ from dbt_semantic_interfaces.references import EntityReference from typing_extensions import override -from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme -from metricflow.semantics.naming.object_builder_str import ObjectBuilderNameConverter -from metricflow.semantics.specs.patterns.entity_link_pattern import ( +from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow_semantics.naming.object_builder_str import ObjectBuilderNameConverter +from metricflow_semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, ParameterSetField, ) -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.semantics.specs.patterns.typed_patterns import DimensionPattern, TimeDimensionPattern -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.patterns.typed_patterns import DimensionPattern, TimeDimensionPattern +from metricflow_semantics.specs.spec_classes import ( InstanceSpec, ) diff --git a/metricflow/semantics/naming/object_builder_str.py b/metricflow-semantics/metricflow_semantics/naming/object_builder_str.py similarity index 99% rename from metricflow/semantics/naming/object_builder_str.py rename to metricflow-semantics/metricflow_semantics/naming/object_builder_str.py index 0b6d4db731..ce20280268 100644 --- a/metricflow/semantics/naming/object_builder_str.py +++ b/metricflow-semantics/metricflow_semantics/naming/object_builder_str.py @@ -14,7 +14,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.semantics.specs.spec_classes import InstanceSpec, InstanceSpecSet, InstanceSpecSetTransform +from metricflow_semantics.specs.spec_classes import InstanceSpec, InstanceSpecSet, InstanceSpecSetTransform class ObjectBuilderNameConverter: diff --git a/metricflow/semantics/protocols/__init__.py b/metricflow-semantics/metricflow_semantics/protocols/__init__.py similarity index 100% rename from metricflow/semantics/protocols/__init__.py rename to metricflow-semantics/metricflow_semantics/protocols/__init__.py diff --git a/metricflow/semantics/protocols/query_parameter.py b/metricflow-semantics/metricflow_semantics/protocols/query_parameter.py similarity index 97% rename from metricflow/semantics/protocols/query_parameter.py rename to metricflow-semantics/metricflow_semantics/protocols/query_parameter.py index d3ef344823..c8c15bfd87 100644 --- a/metricflow/semantics/protocols/query_parameter.py +++ b/metricflow-semantics/metricflow_semantics/protocols/query_parameter.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart if TYPE_CHECKING: - from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ( + from metricflow_semantics.query.resolver_inputs.query_resolver_inputs import ( ResolverInputForGroupByItem, ResolverInputForMetric, ResolverInputForOrderByItem, diff --git a/metricflow/semantics/query/__init__.py b/metricflow-semantics/metricflow_semantics/query/__init__.py similarity index 100% rename from metricflow/semantics/query/__init__.py rename to metricflow-semantics/metricflow_semantics/query/__init__.py diff --git a/metricflow/semantics/query/group_by_item/__init__.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/__init__.py similarity index 100% rename from metricflow/semantics/query/group_by_item/__init__.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/__init__.py diff --git a/metricflow/semantics/query/group_by_item/candidate_push_down/__init__.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/candidate_push_down/__init__.py similarity index 100% rename from metricflow/semantics/query/group_by_item/candidate_push_down/__init__.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/candidate_push_down/__init__.py diff --git a/metricflow/semantics/query/group_by_item/candidate_push_down/group_by_item_candidate.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/candidate_push_down/group_by_item_candidate.py similarity index 94% rename from metricflow/semantics/query/group_by_item/candidate_push_down/group_by_item_candidate.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/candidate_push_down/group_by_item_candidate.py index 6fd4794750..bedfe43650 100644 --- a/metricflow/semantics/query/group_by_item/candidate_push_down/group_by_item_candidate.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/candidate_push_down/group_by_item_candidate.py @@ -6,10 +6,10 @@ from typing_extensions import override -from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinkableSpecSet +from metricflow_semantics.query.group_by_item.path_prefixable import PathPrefixable +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinkableSpecSet @dataclass(frozen=True) diff --git a/metricflow/semantics/query/group_by_item/candidate_push_down/push_down_visitor.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/candidate_push_down/push_down_visitor.py similarity index 93% rename from metricflow/semantics/query/group_by_item/candidate_push_down/push_down_visitor.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/candidate_push_down/push_down_visitor.py index a2cba6074c..7abca90066 100644 --- a/metricflow/semantics/query/group_by_item/candidate_push_down/push_down_visitor.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/candidate_push_down/push_down_visitor.py @@ -9,47 +9,47 @@ from dbt_semantic_interfaces.type_enums import MetricType from typing_extensions import override -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat, mf_pformat_many -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.model.semantics.linkable_element import LinkableElementProperty -from metricflow.semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat, mf_pformat_many +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.model.semantics.linkable_element import LinkableElementProperty +from metricflow_semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.group_by_item_resolver.invalid_use_of_date_part import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.group_by_item_resolver.invalid_use_of_date_part import ( MetricExcludesDatePartIssue, ) -from metricflow.semantics.query.issues.group_by_item_resolver.no_common_items import NoCommonItemsInParents -from metricflow.semantics.query.issues.group_by_item_resolver.no_matching_items_for_measure import ( +from metricflow_semantics.query.issues.group_by_item_resolver.no_common_items import NoCommonItemsInParents +from metricflow_semantics.query.issues.group_by_item_resolver.no_matching_items_for_measure import ( NoMatchingItemsForMeasure, ) -from metricflow.semantics.query.issues.group_by_item_resolver.no_matching_items_for_no_metrics_query import ( +from metricflow_semantics.query.issues.group_by_item_resolver.no_matching_items_for_no_metrics_query import ( NoMatchingItemsForNoMetricsQuery, ) -from metricflow.semantics.query.issues.group_by_item_resolver.no_parent_candidates import NoParentCandidates -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.issues.group_by_item_resolver.no_parent_candidates import NoParentCandidates +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryResolutionIssueSet, ) -from metricflow.semantics.query.suggestion_generator import QueryItemSuggestionGenerator -from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern -from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec +from metricflow_semantics.query.suggestion_generator import QueryItemSuggestionGenerator +from metricflow_semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern +from metricflow_semantics.specs.patterns.none_date_part import NoneDatePartPattern +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/query/group_by_item/filter_spec_resolution/__init__.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/__init__.py similarity index 100% rename from metricflow/semantics/query/group_by_item/filter_spec_resolution/__init__.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/__init__.py diff --git a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_location.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/filter_location.py similarity index 100% rename from metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_location.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/filter_location.py diff --git a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py similarity index 95% rename from metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py index 1e28fb6e6b..22517bae53 100644 --- a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/filter_pattern_factory.py @@ -10,8 +10,8 @@ ) from typing_extensions import override -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.semantics.specs.patterns.typed_patterns import ( +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.patterns.typed_patterns import ( DimensionPattern, EntityPattern, GroupByMetricPattern, diff --git a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py similarity index 93% rename from metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py index c47ccb1eb6..2c6468a5f9 100644 --- a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/filter_spec_lookup.py @@ -14,17 +14,17 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.semantics.collection_helpers.merger import Mergeable -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.collection_helpers.merger import Mergeable +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow_semantics.query.group_by_item.path_prefixable import PathPrefixable +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern if TYPE_CHECKING: - from metricflow.semantics.specs.spec_classes import LinkableInstanceSpec + from metricflow_semantics.specs.spec_classes import LinkableInstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py similarity index 94% rename from metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py index bac713b6b3..c698ad5c99 100644 --- a/metricflow/semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/filter_spec_resolution/filter_spec_resolver.py @@ -10,41 +10,41 @@ from dbt_semantic_interfaces.references import EntityReference from typing_extensions import override -from metricflow.semantics.mf_logging.runtime import log_runtime -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.object_builder_str import ObjectBuilderNameConverter -from metricflow.semantics.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( +from metricflow_semantics.mf_logging.runtime import log_runtime +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.naming.object_builder_str import ObjectBuilderNameConverter +from metricflow_semantics.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( WhereFilterPatternFactory, ) -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolution, FilterSpecResolutionLookUp, NonParsableFilterResolution, PatternAssociationForWhereFilterGroupByItem, ResolvedSpecLookUpKey, ) -from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag, ResolutionDagSinkNode -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow_semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag, ResolutionDagSinkNode +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNodeVisitor, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.filter_spec_resolver.invalid_where import WhereFilterParsingIssue -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.filter_spec_resolver.invalid_where import WhereFilterParsingIssue +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryResolutionIssueSet, ) diff --git a/metricflow/semantics/query/group_by_item/group_by_item_resolver.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/group_by_item_resolver.py similarity index 90% rename from metricflow/semantics/query/group_by_item/group_by_item_resolver.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/group_by_item_resolver.py index adffabb03f..e501b2a499 100644 --- a/metricflow/semantics/query/group_by_item/group_by_item_resolver.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/group_by_item_resolver.py @@ -9,25 +9,25 @@ from dbt_semantic_interfaces.references import TimeDimensionReference from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.query.group_by_item.candidate_push_down.push_down_visitor import ( +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.query.group_by_item.candidate_push_down.push_down_visitor import ( PushDownResult, _PushDownGroupByItemCandidatesVisitor, ) -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag, ResolutionDagSinkNode -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.group_by_item_resolver.ambiguous_group_by_item import AmbiguousGroupByItemIssue -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag, ResolutionDagSinkNode +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.group_by_item_resolver.ambiguous_group_by_item import AmbiguousGroupByItemIssue +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryResolutionIssueSet, ) -from metricflow.semantics.query.suggestion_generator import QueryItemSuggestionGenerator -from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.semantics.specs.patterns.typed_patterns import TimeDimensionPattern -from metricflow.semantics.specs.spec_classes import LinkableInstanceSpec, LinkableSpecSet +from metricflow_semantics.query.suggestion_generator import QueryItemSuggestionGenerator +from metricflow_semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.patterns.typed_patterns import TimeDimensionPattern +from metricflow_semantics.specs.spec_classes import LinkableInstanceSpec, LinkableSpecSet logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/query/group_by_item/path_prefixable.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/path_prefixable.py similarity index 93% rename from metricflow/semantics/query/group_by_item/path_prefixable.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/path_prefixable.py index 9bfe0e0c21..3533f42c80 100644 --- a/metricflow/semantics/query/group_by_item/path_prefixable.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/path_prefixable.py @@ -5,7 +5,7 @@ from typing_extensions import TYPE_CHECKING, Self if TYPE_CHECKING: - from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath + from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath class PathPrefixable(ABC): diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/__init__.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/__init__.py similarity index 100% rename from metricflow/semantics/query/group_by_item/resolution_dag/__init__.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/__init__.py diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/dag.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/dag.py similarity index 84% rename from metricflow/semantics/query/group_by_item/resolution_dag/dag.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/dag.py index b428a9f690..70257f7d2d 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/dag.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/dag.py @@ -2,13 +2,13 @@ from typing import Union -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId, MetricFlowDag -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow_semantics.dag.id_prefix import StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DagId, MetricFlowDag +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/dag_builder.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/dag_builder.py similarity index 92% rename from metricflow/semantics/query/group_by_item/resolution_dag/dag_builder.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/dag_builder.py index 49cf97f846..c161722907 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/dag_builder.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/dag_builder.py @@ -8,19 +8,19 @@ from dbt_semantic_interfaces.references import MeasureReference, MetricReference from dbt_semantic_interfaces.type_enums import MetricType -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.semantics.query.group_by_item.resolution_dag.input_metric_location import InputMetricDefinitionLocation -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow_semantics.query.group_by_item.resolution_dag.input_metric_location import InputMetricDefinitionLocation +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/input_metric_location.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/input_metric_location.py similarity index 93% rename from metricflow/semantics/query/group_by_item/resolution_dag/input_metric_location.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/input_metric_location.py index a339a5d9da..be4611a56c 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/input_metric_location.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/input_metric_location.py @@ -5,7 +5,7 @@ from dbt_semantic_interfaces.protocols import MetricInput from dbt_semantic_interfaces.references import MetricReference -from metricflow.semantics.model.semantics.metric_lookup import MetricLookup +from metricflow_semantics.model.semantics.metric_lookup import MetricLookup @dataclass(frozen=True) diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/__init__.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/__init__.py similarity index 100% rename from metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/__init__.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/__init__.py diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py similarity index 85% rename from metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py index 9cec1b591f..ac3fef5c31 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/base_node.py @@ -3,20 +3,20 @@ from abc import ABC, abstractmethod from typing import TYPE_CHECKING, Generic, Sequence -from metricflow.semantics.dag.mf_dag import DagNode, NodeId -from metricflow.semantics.visitor import Visitable, VisitorOutputT +from metricflow_semantics.dag.mf_dag import DagNode, NodeId +from metricflow_semantics.visitor import Visitable, VisitorOutputT if TYPE_CHECKING: - from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( + from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) - from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( + from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) - from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( + from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) - from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( + from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py similarity index 90% rename from metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py index 8a3a65e2e5..34502b4adb 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/measure_source_node.py @@ -5,13 +5,13 @@ from dbt_semantic_interfaces.references import MeasureReference, MetricReference from typing_extensions import override -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.semantics.visitor import VisitorOutputT +from metricflow_semantics.visitor import VisitorOutputT class MeasureGroupByItemSourceNode(GroupByItemResolutionNode): diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py similarity index 88% rename from metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py index 3f99d9068e..914cc69946 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/metric_resolution_node.py @@ -5,17 +5,17 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import Self, override -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.query.group_by_item.resolution_dag.input_metric_location import InputMetricDefinitionLocation -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.query.group_by_item.resolution_dag.input_metric_location import InputMetricDefinitionLocation +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) -from metricflow.semantics.visitor import VisitorOutputT +from metricflow_semantics.visitor import VisitorOutputT class MetricGroupByItemResolutionNode(GroupByItemResolutionNode): diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py similarity index 82% rename from metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py index 00174d24e1..d1ba72470a 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/no_metrics_query_source_node.py @@ -4,15 +4,15 @@ from typing_extensions import override -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.semantics.visitor import VisitorOutputT +from metricflow_semantics.visitor import VisitorOutputT class NoMetricsGroupByItemSourceNode(GroupByItemResolutionNode): diff --git a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py similarity index 89% rename from metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py index 7dda9221c9..684da6a2d6 100644 --- a/metricflow/semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_dag/resolution_nodes/query_resolution_node.py @@ -6,19 +6,19 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) -from metricflow.semantics.visitor import VisitorOutputT +from metricflow_semantics.visitor import VisitorOutputT class QueryGroupByItemResolutionNode(GroupByItemResolutionNode): diff --git a/metricflow/semantics/query/group_by_item/resolution_path.py b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_path.py similarity index 91% rename from metricflow/semantics/query/group_by_item/resolution_path.py rename to metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_path.py index 402cd8f9c4..cc8dc2c4ef 100644 --- a/metricflow/semantics/query/group_by_item/resolution_path.py +++ b/metricflow-semantics/metricflow_semantics/query/group_by_item/resolution_path.py @@ -5,9 +5,9 @@ from typing_extensions import override -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.query.group_by_item.path_prefixable import PathPrefixable +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/__init__.py b/metricflow-semantics/metricflow_semantics/query/issues/__init__.py similarity index 100% rename from metricflow/semantics/query/issues/__init__.py rename to metricflow-semantics/metricflow_semantics/query/issues/__init__.py diff --git a/metricflow/semantics/query/issues/filter_spec_resolver/__init__.py b/metricflow-semantics/metricflow_semantics/query/issues/filter_spec_resolver/__init__.py similarity index 100% rename from metricflow/semantics/query/issues/filter_spec_resolver/__init__.py rename to metricflow-semantics/metricflow_semantics/query/issues/filter_spec_resolver/__init__.py diff --git a/metricflow/semantics/query/issues/filter_spec_resolver/invalid_where.py b/metricflow-semantics/metricflow_semantics/query/issues/filter_spec_resolver/invalid_where.py similarity index 88% rename from metricflow/semantics/query/issues/filter_spec_resolver/invalid_where.py rename to metricflow-semantics/metricflow_semantics/query/issues/filter_spec_resolver/invalid_where.py index 9acc6639b5..d0ca769b80 100644 --- a/metricflow/semantics/query/issues/filter_spec_resolver/invalid_where.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/filter_spec_resolver/invalid_where.py @@ -6,13 +6,13 @@ from dbt_semantic_interfaces.protocols import WhereFilter from typing_extensions import override -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/__init__.py b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/__init__.py similarity index 100% rename from metricflow/semantics/query/issues/group_by_item_resolver/__init__.py rename to metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/__init__.py diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py similarity index 83% rename from metricflow/semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py rename to metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py index 556388f379..7b95b58857 100644 --- a/metricflow/semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/ambiguous_group_by_item.py @@ -5,16 +5,16 @@ from typing_extensions import override -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py similarity index 88% rename from metricflow/semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py rename to metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py index 4b19c58be9..a53f178efe 100644 --- a/metricflow/semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/invalid_use_of_date_part.py @@ -5,14 +5,14 @@ from typing_extensions import override -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.semantics.specs.spec_classes import LinkableInstanceSpec +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.specs.spec_classes import LinkableInstanceSpec @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/multiple_join_paths.py b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/multiple_join_paths.py similarity index 85% rename from metricflow/semantics/query/issues/group_by_item_resolver/multiple_join_paths.py rename to metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/multiple_join_paths.py index 421576075a..2a0bcaebeb 100644 --- a/metricflow/semantics/query/issues/group_by_item_resolver/multiple_join_paths.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/multiple_join_paths.py @@ -5,16 +5,16 @@ from typing_extensions import override -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/no_common_items.py b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/no_common_items.py similarity index 89% rename from metricflow/semantics/query/issues/group_by_item_resolver/no_common_items.py rename to metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/no_common_items.py index 7611fcec12..138d5ddfd6 100644 --- a/metricflow/semantics/query/issues/group_by_item_resolver/no_common_items.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/no_common_items.py @@ -5,17 +5,17 @@ from typing_extensions import override -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.query.group_by_item.candidate_push_down.group_by_item_candidate import GroupByItemCandidateSet +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py similarity index 88% rename from metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py rename to metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py index d7b217a12b..8abab4bbf9 100644 --- a/metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/no_matching_items_for_measure.py @@ -6,14 +6,14 @@ from typing_extensions import override -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py similarity index 90% rename from metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py rename to metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py index 863e5ef059..5e5f12c905 100644 --- a/metricflow/semantics/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/no_matching_items_for_no_metrics_query.py @@ -5,12 +5,12 @@ from typing_extensions import override -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/group_by_item_resolver/no_parent_candidates.py b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/no_parent_candidates.py similarity index 92% rename from metricflow/semantics/query/issues/group_by_item_resolver/no_parent_candidates.py rename to metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/no_parent_candidates.py index 7808423aca..74a213ee97 100644 --- a/metricflow/semantics/query/issues/group_by_item_resolver/no_parent_candidates.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/group_by_item_resolver/no_parent_candidates.py @@ -4,12 +4,12 @@ from typing_extensions import override -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/issues_base.py b/metricflow-semantics/metricflow_semantics/query/issues/issues_base.py similarity index 93% rename from metricflow/semantics/query/issues/issues_base.py rename to metricflow-semantics/metricflow_semantics/query/issues/issues_base.py index 058052ad4c..67be8fe6e4 100644 --- a/metricflow/semantics/query/issues/issues_base.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/issues_base.py @@ -7,10 +7,10 @@ from typing_extensions import override -from metricflow.semantics.collection_helpers.merger import Mergeable -from metricflow.semantics.query.group_by_item.path_prefixable import PathPrefixable -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.collection_helpers.merger import Mergeable +from metricflow_semantics.query.group_by_item.path_prefixable import PathPrefixable +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput class MetricFlowQueryIssueType(Enum): diff --git a/metricflow/semantics/query/issues/parsing/__init__.py b/metricflow-semantics/metricflow_semantics/query/issues/parsing/__init__.py similarity index 100% rename from metricflow/semantics/query/issues/parsing/__init__.py rename to metricflow-semantics/metricflow_semantics/query/issues/parsing/__init__.py diff --git a/metricflow/semantics/query/issues/parsing/cumulative_metric_requires_metric_time.py b/metricflow-semantics/metricflow_semantics/query/issues/parsing/cumulative_metric_requires_metric_time.py similarity index 91% rename from metricflow/semantics/query/issues/parsing/cumulative_metric_requires_metric_time.py rename to metricflow-semantics/metricflow_semantics/query/issues/parsing/cumulative_metric_requires_metric_time.py index 1552e8c922..84bb9e3eb0 100644 --- a/metricflow/semantics/query/issues/parsing/cumulative_metric_requires_metric_time.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/parsing/cumulative_metric_requires_metric_time.py @@ -6,12 +6,12 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/parsing/duplicate_metric.py b/metricflow-semantics/metricflow_semantics/query/issues/parsing/duplicate_metric.py similarity index 90% rename from metricflow/semantics/query/issues/parsing/duplicate_metric.py rename to metricflow-semantics/metricflow_semantics/query/issues/parsing/duplicate_metric.py index beb4e73ca9..39c8763608 100644 --- a/metricflow/semantics/query/issues/parsing/duplicate_metric.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/parsing/duplicate_metric.py @@ -6,12 +6,12 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/parsing/invalid_limit.py b/metricflow-semantics/metricflow_semantics/query/issues/parsing/invalid_limit.py similarity index 88% rename from metricflow/semantics/query/issues/parsing/invalid_limit.py rename to metricflow-semantics/metricflow_semantics/query/issues/parsing/invalid_limit.py index 884927ca76..0ade37aa8e 100644 --- a/metricflow/semantics/query/issues/parsing/invalid_limit.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/parsing/invalid_limit.py @@ -4,12 +4,12 @@ from typing_extensions import override -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/parsing/invalid_metric.py b/metricflow-semantics/metricflow_semantics/query/issues/parsing/invalid_metric.py similarity index 84% rename from metricflow/semantics/query/issues/parsing/invalid_metric.py rename to metricflow-semantics/metricflow_semantics/query/issues/parsing/invalid_metric.py index 00a57aff7b..8447b6885b 100644 --- a/metricflow/semantics/query/issues/parsing/invalid_metric.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/parsing/invalid_metric.py @@ -5,14 +5,14 @@ from typing_extensions import override -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/parsing/invalid_min_max_only.py b/metricflow-semantics/metricflow_semantics/query/issues/parsing/invalid_min_max_only.py similarity index 89% rename from metricflow/semantics/query/issues/parsing/invalid_min_max_only.py rename to metricflow-semantics/metricflow_semantics/query/issues/parsing/invalid_min_max_only.py index 4aadb72ab3..252b049fd6 100644 --- a/metricflow/semantics/query/issues/parsing/invalid_min_max_only.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/parsing/invalid_min_max_only.py @@ -4,12 +4,12 @@ from typing_extensions import override -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/parsing/invalid_order.py b/metricflow-semantics/metricflow_semantics/query/issues/parsing/invalid_order.py similarity index 87% rename from metricflow/semantics/query/issues/parsing/invalid_order.py rename to metricflow-semantics/metricflow_semantics/query/issues/parsing/invalid_order.py index 2418563fee..e5c303a251 100644 --- a/metricflow/semantics/query/issues/parsing/invalid_order.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/parsing/invalid_order.py @@ -4,13 +4,13 @@ from typing_extensions import override -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ( +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.query_resolver_inputs import ( ResolverInputForOrderByItem, ) diff --git a/metricflow/semantics/query/issues/parsing/no_metric_or_group_by.py b/metricflow-semantics/metricflow_semantics/query/issues/parsing/no_metric_or_group_by.py similarity index 86% rename from metricflow/semantics/query/issues/parsing/no_metric_or_group_by.py rename to metricflow-semantics/metricflow_semantics/query/issues/parsing/no_metric_or_group_by.py index 6174772313..f80f638eb1 100644 --- a/metricflow/semantics/query/issues/parsing/no_metric_or_group_by.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/parsing/no_metric_or_group_by.py @@ -4,13 +4,13 @@ from typing_extensions import override -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/parsing/offset_metric_requires_metric_time.py b/metricflow-semantics/metricflow_semantics/query/issues/parsing/offset_metric_requires_metric_time.py similarity index 92% rename from metricflow/semantics/query/issues/parsing/offset_metric_requires_metric_time.py rename to metricflow-semantics/metricflow_semantics/query/issues/parsing/offset_metric_requires_metric_time.py index 52c2fd53cd..969e9b2dea 100644 --- a/metricflow/semantics/query/issues/parsing/offset_metric_requires_metric_time.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/parsing/offset_metric_requires_metric_time.py @@ -8,12 +8,12 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/issues/parsing/string_input_parsing_issue.py b/metricflow-semantics/metricflow_semantics/query/issues/parsing/string_input_parsing_issue.py similarity index 88% rename from metricflow/semantics/query/issues/parsing/string_input_parsing_issue.py rename to metricflow-semantics/metricflow_semantics/query/issues/parsing/string_input_parsing_issue.py index e8f5ac552c..29e3f9aad2 100644 --- a/metricflow/semantics/query/issues/parsing/string_input_parsing_issue.py +++ b/metricflow-semantics/metricflow_semantics/query/issues/parsing/string_input_parsing_issue.py @@ -4,12 +4,12 @@ from typing_extensions import override -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryIssueType, MetricFlowQueryResolutionIssue, ) -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput @dataclass(frozen=True) diff --git a/metricflow/semantics/query/query_exceptions.py b/metricflow-semantics/metricflow_semantics/query/query_exceptions.py similarity index 100% rename from metricflow/semantics/query/query_exceptions.py rename to metricflow-semantics/metricflow_semantics/query/query_exceptions.py diff --git a/metricflow/semantics/query/query_parser.py b/metricflow-semantics/metricflow_semantics/query/query_parser.py similarity index 92% rename from metricflow/semantics/query/query_parser.py rename to metricflow-semantics/metricflow_semantics/query/query_parser.py index 0c03050564..63486319ce 100644 --- a/metricflow/semantics/query/query_parser.py +++ b/metricflow-semantics/metricflow_semantics/query/query_parser.py @@ -13,35 +13,35 @@ from dbt_semantic_interfaces.protocols.where_filter import WhereFilter from dbt_semantic_interfaces.type_enums import TimeGranularity -from metricflow.semantics.assert_one_arg import assert_at_most_one_arg_set -from metricflow.semantics.filters.merge_where import merge_to_single_where_filter -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.mf_logging.runtime import log_runtime -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme -from metricflow.semantics.naming.metric_scheme import MetricNamingScheme -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.protocols.query_parameter import ( +from metricflow_semantics.assert_one_arg import assert_at_most_one_arg_set +from metricflow_semantics.filters.merge_where import merge_to_single_where_filter +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.mf_logging.runtime import log_runtime +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.naming.dunder_scheme import DunderNamingScheme +from metricflow_semantics.naming.metric_scheme import MetricNamingScheme +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.protocols.query_parameter import ( GroupByParameter, MetricQueryParameter, OrderByQueryParameter, SavedQueryParameter, ) -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( DefaultWhereFilterPatternFactory, WhereFilterPatternFactory, ) -from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.semantics.query.issues.parsing.string_input_parsing_issue import StringInputParsingIssue -from metricflow.semantics.query.query_exceptions import InvalidQueryException -from metricflow.semantics.query.query_resolution import InputToIssueSetMapping, InputToIssueSetMappingItem -from metricflow.semantics.query.query_resolver import MetricFlowQueryResolver -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ( +from metricflow_semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow_semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow_semantics.query.issues.parsing.string_input_parsing_issue import StringInputParsingIssue +from metricflow_semantics.query.query_exceptions import InvalidQueryException +from metricflow_semantics.query.query_resolution import InputToIssueSetMapping, InputToIssueSetMappingItem +from metricflow_semantics.query.query_resolver import MetricFlowQueryResolver +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.query.resolver_inputs.query_resolver_inputs import ( InvalidStringInput, ResolverInputForGroupByItem, ResolverInputForLimit, @@ -51,16 +51,16 @@ ResolverInputForQuery, ResolverInputForQueryLevelWhereFilterIntersection, ) -from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern -from metricflow.semantics.specs.patterns.metric_time_pattern import MetricTimePattern -from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern +from metricflow_semantics.specs.patterns.metric_time_pattern import MetricTimePattern +from metricflow_semantics.specs.patterns.none_date_part import NoneDatePartPattern +from metricflow_semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, MetricFlowQuerySpec, TimeDimensionSpec, ) -from metricflow.semantics.time.time_granularity import ( +from metricflow_semantics.time.time_granularity import ( adjust_to_end_of_period, adjust_to_start_of_period, is_period_end, diff --git a/metricflow/semantics/query/query_resolution.py b/metricflow-semantics/metricflow_semantics/query/query_resolution.py similarity index 88% rename from metricflow/semantics/query/query_resolution.py rename to metricflow-semantics/metricflow_semantics/query/query_resolution.py index 417cce528e..f715c048fd 100644 --- a/metricflow/semantics/query/query_resolution.py +++ b/metricflow-semantics/metricflow_semantics/query/query_resolution.py @@ -5,15 +5,15 @@ from typing_extensions import override -from metricflow.semantics.collection_helpers.merger import Mergeable -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow_semantics.collection_helpers.merger import Mergeable +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ) -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput -from metricflow.semantics.specs.spec_classes import MetricFlowQuerySpec +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow_semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput +from metricflow_semantics.specs.spec_classes import MetricFlowQuerySpec @dataclass(frozen=True) diff --git a/metricflow/semantics/query/query_resolver.py b/metricflow-semantics/metricflow_semantics/query/query_resolver.py similarity index 93% rename from metricflow/semantics/query/query_resolver.py rename to metricflow-semantics/metricflow_semantics/query/query_resolver.py index 12b32dee67..45f4e0ff39 100644 --- a/metricflow/semantics/query/query_resolver.py +++ b/metricflow-semantics/metricflow_semantics/query/query_resolver.py @@ -6,40 +6,40 @@ from dbt_semantic_interfaces.references import MetricReference -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.mf_logging.runtime import log_runtime -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.metric_scheme import MetricNamingScheme -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.mf_logging.runtime import log_runtime +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.naming.metric_scheme import MetricNamingScheme +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( WhereFilterPatternFactory, ) -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ) -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_resolver import ( +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_resolver import ( WhereFilterSpecResolver, ) -from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolution, GroupByItemResolver -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.semantics.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( +from metricflow_semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolution, GroupByItemResolver +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow_semantics.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import ( MetricFlowQueryResolutionIssueSet, ) -from metricflow.semantics.query.issues.parsing.invalid_limit import InvalidLimitIssue -from metricflow.semantics.query.issues.parsing.invalid_metric import InvalidMetricIssue -from metricflow.semantics.query.issues.parsing.invalid_min_max_only import InvalidMinMaxOnlyIssue -from metricflow.semantics.query.issues.parsing.invalid_order import InvalidOrderByItemIssue -from metricflow.semantics.query.issues.parsing.no_metric_or_group_by import NoMetricOrGroupByIssue -from metricflow.semantics.query.query_resolution import ( +from metricflow_semantics.query.issues.parsing.invalid_limit import InvalidLimitIssue +from metricflow_semantics.query.issues.parsing.invalid_metric import InvalidMetricIssue +from metricflow_semantics.query.issues.parsing.invalid_min_max_only import InvalidMinMaxOnlyIssue +from metricflow_semantics.query.issues.parsing.invalid_order import InvalidOrderByItemIssue +from metricflow_semantics.query.issues.parsing.no_metric_or_group_by import NoMetricOrGroupByIssue +from metricflow_semantics.query.query_resolution import ( InputToIssueSetMapping, InputToIssueSetMappingItem, MetricFlowQueryResolution, ) -from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ( +from metricflow_semantics.query.resolver_inputs.query_resolver_inputs import ( ResolverInputForGroupByItem, ResolverInputForLimit, ResolverInputForMetric, @@ -49,10 +49,10 @@ ResolverInputForQueryLevelWhereFilterIntersection, ResolverInputForWhereFilterIntersection, ) -from metricflow.semantics.query.suggestion_generator import QueryItemSuggestionGenerator -from metricflow.semantics.query.validation_rules.query_validator import PostResolutionQueryValidator -from metricflow.semantics.specs.patterns.match_list_pattern import MatchListSpecPattern -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.query.suggestion_generator import QueryItemSuggestionGenerator +from metricflow_semantics.query.validation_rules.query_validator import PostResolutionQueryValidator +from metricflow_semantics.specs.patterns.match_list_pattern import MatchListSpecPattern +from metricflow_semantics.specs.spec_classes import ( InstanceSpec, LinkableInstanceSpec, LinkableSpecSet, diff --git a/metricflow/semantics/query/resolver_inputs/__init__.py b/metricflow-semantics/metricflow_semantics/query/resolver_inputs/__init__.py similarity index 100% rename from metricflow/semantics/query/resolver_inputs/__init__.py rename to metricflow-semantics/metricflow_semantics/query/resolver_inputs/__init__.py diff --git a/metricflow/semantics/query/resolver_inputs/base_resolver_inputs.py b/metricflow-semantics/metricflow_semantics/query/resolver_inputs/base_resolver_inputs.py similarity index 91% rename from metricflow/semantics/query/resolver_inputs/base_resolver_inputs.py rename to metricflow-semantics/metricflow_semantics/query/resolver_inputs/base_resolver_inputs.py index b28519d635..ee6308ed2a 100644 --- a/metricflow/semantics/query/resolver_inputs/base_resolver_inputs.py +++ b/metricflow-semantics/metricflow_semantics/query/resolver_inputs/base_resolver_inputs.py @@ -4,8 +4,8 @@ from dataclasses import dataclass from typing import Optional -from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern @dataclass(frozen=True) diff --git a/metricflow/semantics/query/resolver_inputs/query_resolver_inputs.py b/metricflow-semantics/metricflow_semantics/query/resolver_inputs/query_resolver_inputs.py similarity index 92% rename from metricflow/semantics/query/resolver_inputs/query_resolver_inputs.py rename to metricflow-semantics/metricflow_semantics/query/resolver_inputs/query_resolver_inputs.py index 936b64c2c9..45a02b49b3 100644 --- a/metricflow/semantics/query/resolver_inputs/query_resolver_inputs.py +++ b/metricflow-semantics/metricflow_semantics/query/resolver_inputs/query_resolver_inputs.py @@ -11,18 +11,18 @@ from dbt_semantic_interfaces.protocols import WhereFilterIntersection from typing_extensions import override -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.naming.metric_scheme import MetricNamingScheme -from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme -from metricflow.semantics.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.resolver_inputs.base_resolver_inputs import ( +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.naming.metric_scheme import MetricNamingScheme +from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow_semantics.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import ( InputPatternDescription, MetricFlowQueryResolverInput, ) -from metricflow.semantics.specs.patterns.metric_pattern import MetricSpecPattern -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.patterns.metric_pattern import MetricSpecPattern +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern @dataclass(frozen=True) diff --git a/metricflow/semantics/query/similarity.py b/metricflow-semantics/metricflow_semantics/query/similarity.py similarity index 100% rename from metricflow/semantics/query/similarity.py rename to metricflow-semantics/metricflow_semantics/query/similarity.py diff --git a/metricflow/semantics/query/suggestion_generator.py b/metricflow-semantics/metricflow_semantics/query/suggestion_generator.py similarity index 85% rename from metricflow/semantics/query/suggestion_generator.py rename to metricflow-semantics/metricflow_semantics/query/suggestion_generator.py index dc0574fd0c..f89784ced7 100644 --- a/metricflow/semantics/query/suggestion_generator.py +++ b/metricflow-semantics/metricflow_semantics/query/suggestion_generator.py @@ -3,12 +3,12 @@ import logging from typing import Sequence, Tuple -from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme -from metricflow.semantics.query.similarity import top_fuzzy_matches -from metricflow.semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern -from metricflow.semantics.specs.patterns.none_date_part import NoneDatePartPattern -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.semantics.specs.spec_classes import InstanceSpec +from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow_semantics.query.similarity import top_fuzzy_matches +from metricflow_semantics.specs.patterns.base_time_grain import BaseTimeGrainPattern +from metricflow_semantics.specs.patterns.none_date_part import NoneDatePartPattern +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.spec_classes import InstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/query/validation_rules/__init__.py b/metricflow-semantics/metricflow_semantics/query/validation_rules/__init__.py similarity index 100% rename from metricflow/semantics/query/validation_rules/__init__.py rename to metricflow-semantics/metricflow_semantics/query/validation_rules/__init__.py diff --git a/metricflow/semantics/query/validation_rules/base_validation_rule.py b/metricflow-semantics/metricflow_semantics/query/validation_rules/base_validation_rule.py similarity index 87% rename from metricflow/semantics/query/validation_rules/base_validation_rule.py rename to metricflow-semantics/metricflow_semantics/query/validation_rules/base_validation_rule.py index 737909dd9a..abfc9ab42f 100644 --- a/metricflow/semantics/query/validation_rules/base_validation_rule.py +++ b/metricflow-semantics/metricflow_semantics/query/validation_rules/base_validation_rule.py @@ -6,10 +6,10 @@ from dbt_semantic_interfaces.protocols import Metric, WhereFilterIntersection from dbt_semantic_interfaces.references import MetricReference -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow_semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery class PostResolutionQueryValidationRule(ABC): diff --git a/metricflow/semantics/query/validation_rules/duplicate_metric.py b/metricflow-semantics/metricflow_semantics/query/validation_rules/duplicate_metric.py similarity index 84% rename from metricflow/semantics/query/validation_rules/duplicate_metric.py rename to metricflow-semantics/metricflow_semantics/query/validation_rules/duplicate_metric.py index b86352b42d..7a595f4be6 100644 --- a/metricflow/semantics/query/validation_rules/duplicate_metric.py +++ b/metricflow-semantics/metricflow_semantics/query/validation_rules/duplicate_metric.py @@ -7,12 +7,12 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.semantics.query.issues.parsing.duplicate_metric import DuplicateMetricIssue -from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery -from metricflow.semantics.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow_semantics.query.issues.parsing.duplicate_metric import DuplicateMetricIssue +from metricflow_semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery +from metricflow_semantics.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/query/validation_rules/metric_time_requirements.py b/metricflow-semantics/metricflow_semantics/query/validation_rules/metric_time_requirements.py similarity index 90% rename from metricflow/semantics/query/validation_rules/metric_time_requirements.py rename to metricflow-semantics/metricflow_semantics/query/validation_rules/metric_time_requirements.py index 2021524872..794fa2c769 100644 --- a/metricflow/semantics/query/validation_rules/metric_time_requirements.py +++ b/metricflow-semantics/metricflow_semantics/query/validation_rules/metric_time_requirements.py @@ -9,18 +9,18 @@ from dbt_semantic_interfaces.type_enums import MetricType from typing_extensions import override -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.semantics.query.issues.parsing.cumulative_metric_requires_metric_time import ( +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow_semantics.query.issues.parsing.cumulative_metric_requires_metric_time import ( CumulativeMetricRequiresMetricTimeIssue, ) -from metricflow.semantics.query.issues.parsing.offset_metric_requires_metric_time import ( +from metricflow_semantics.query.issues.parsing.offset_metric_requires_metric_time import ( OffsetMetricRequiresMetricTimeIssue, ) -from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery -from metricflow.semantics.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule -from metricflow.semantics.specs.spec_classes import TimeDimensionSpec +from metricflow_semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery +from metricflow_semantics.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule +from metricflow_semantics.specs.spec_classes import TimeDimensionSpec class MetricTimeQueryValidationRule(PostResolutionQueryValidationRule): diff --git a/metricflow/semantics/query/validation_rules/query_validator.py b/metricflow-semantics/metricflow_semantics/query/validation_rules/query_validator.py similarity index 85% rename from metricflow/semantics/query/validation_rules/query_validator.py rename to metricflow-semantics/metricflow_semantics/query/validation_rules/query_validator.py index e3385af766..2885ed0c74 100644 --- a/metricflow/semantics/query/validation_rules/query_validator.py +++ b/metricflow-semantics/metricflow_semantics/query/validation_rules/query_validator.py @@ -4,30 +4,30 @@ from typing_extensions import override -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.base_node import ( GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import ( MeasureGroupByItemSourceNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import ( NoMetricsGroupByItemSourceNode, ) -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import ( QueryGroupByItemResolutionNode, ) -from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery -from metricflow.semantics.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule -from metricflow.semantics.query.validation_rules.duplicate_metric import DuplicateMetricValidationRule -from metricflow.semantics.query.validation_rules.metric_time_requirements import MetricTimeQueryValidationRule +from metricflow_semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow_semantics.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery +from metricflow_semantics.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule +from metricflow_semantics.query.validation_rules.duplicate_metric import DuplicateMetricValidationRule +from metricflow_semantics.query.validation_rules.metric_time_requirements import MetricTimeQueryValidationRule class PostResolutionQueryValidator: diff --git a/metricflow/semantics/random_id.py b/metricflow-semantics/metricflow_semantics/random_id.py similarity index 100% rename from metricflow/semantics/random_id.py rename to metricflow-semantics/metricflow_semantics/random_id.py diff --git a/metricflow/semantics/specs/__init__.py b/metricflow-semantics/metricflow_semantics/specs/__init__.py similarity index 100% rename from metricflow/semantics/specs/__init__.py rename to metricflow-semantics/metricflow_semantics/specs/__init__.py diff --git a/metricflow/semantics/specs/column_assoc.py b/metricflow-semantics/metricflow_semantics/specs/column_assoc.py similarity index 97% rename from metricflow/semantics/specs/column_assoc.py rename to metricflow-semantics/metricflow_semantics/specs/column_assoc.py index 80325559d7..2b82580fb6 100644 --- a/metricflow/semantics/specs/column_assoc.py +++ b/metricflow-semantics/metricflow_semantics/specs/column_assoc.py @@ -6,7 +6,7 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass -from metricflow.semantics.specs.spec_classes import InstanceSpec +from metricflow_semantics.specs.spec_classes import InstanceSpec class ColumnCorrelationKey(ABC): diff --git a/metricflow/semantics/specs/dimension_spec_resolver.py b/metricflow-semantics/metricflow_semantics/specs/dimension_spec_resolver.py similarity index 97% rename from metricflow/semantics/specs/dimension_spec_resolver.py rename to metricflow-semantics/metricflow_semantics/specs/dimension_spec_resolver.py index c2b4aa1c27..752e64b300 100644 --- a/metricflow/semantics/specs/dimension_spec_resolver.py +++ b/metricflow-semantics/metricflow_semantics/specs/dimension_spec_resolver.py @@ -12,7 +12,7 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart -from metricflow.semantics.specs.spec_classes import DEFAULT_TIME_GRANULARITY, DimensionSpec, TimeDimensionSpec +from metricflow_semantics.specs.spec_classes import DEFAULT_TIME_GRANULARITY, DimensionSpec, TimeDimensionSpec class DimensionSpecResolver: diff --git a/metricflow/semantics/specs/patterns/__init__.py b/metricflow-semantics/metricflow_semantics/specs/patterns/__init__.py similarity index 100% rename from metricflow/semantics/specs/patterns/__init__.py rename to metricflow-semantics/metricflow_semantics/specs/patterns/__init__.py diff --git a/metricflow/semantics/specs/patterns/base_time_grain.py b/metricflow-semantics/metricflow_semantics/specs/patterns/base_time_grain.py similarity index 95% rename from metricflow/semantics/specs/patterns/base_time_grain.py rename to metricflow-semantics/metricflow_semantics/specs/patterns/base_time_grain.py index 2c7b1c5af8..fa23af1990 100644 --- a/metricflow/semantics/specs/patterns/base_time_grain.py +++ b/metricflow-semantics/metricflow_semantics/specs/patterns/base_time_grain.py @@ -6,9 +6,9 @@ from dbt_semantic_interfaces.type_enums import TimeGranularity from typing_extensions import override -from metricflow.semantics.specs.patterns.metric_time_pattern import MetricTimePattern -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.patterns.metric_time_pattern import MetricTimePattern +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, LinkableInstanceSpec, diff --git a/metricflow/semantics/specs/patterns/entity_link_pattern.py b/metricflow-semantics/metricflow_semantics/specs/patterns/entity_link_pattern.py similarity index 97% rename from metricflow/semantics/specs/patterns/entity_link_pattern.py rename to metricflow-semantics/metricflow_semantics/specs/patterns/entity_link_pattern.py index 0eb3537743..5f152a07c4 100644 --- a/metricflow/semantics/specs/patterns/entity_link_pattern.py +++ b/metricflow-semantics/metricflow_semantics/specs/patterns/entity_link_pattern.py @@ -11,8 +11,8 @@ from more_itertools import is_sorted from typing_extensions import override -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.semantics.specs.spec_classes import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.spec_classes import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/specs/patterns/match_list_pattern.py b/metricflow-semantics/metricflow_semantics/specs/patterns/match_list_pattern.py similarity index 83% rename from metricflow/semantics/specs/patterns/match_list_pattern.py rename to metricflow-semantics/metricflow_semantics/specs/patterns/match_list_pattern.py index 1d26b9e6bb..07bf3e2553 100644 --- a/metricflow/semantics/specs/patterns/match_list_pattern.py +++ b/metricflow-semantics/metricflow_semantics/specs/patterns/match_list_pattern.py @@ -4,8 +4,8 @@ from typing_extensions import override -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.semantics.specs.spec_classes import InstanceSpec +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.spec_classes import InstanceSpec class MatchListSpecPattern(SpecPattern): diff --git a/metricflow/semantics/specs/patterns/metric_pattern.py b/metricflow-semantics/metricflow_semantics/specs/patterns/metric_pattern.py similarity index 86% rename from metricflow/semantics/specs/patterns/metric_pattern.py rename to metricflow-semantics/metricflow_semantics/specs/patterns/metric_pattern.py index 373b6ba08b..0bbe31cbe4 100644 --- a/metricflow/semantics/specs/patterns/metric_pattern.py +++ b/metricflow-semantics/metricflow_semantics/specs/patterns/metric_pattern.py @@ -6,8 +6,8 @@ from dbt_semantic_interfaces.references import MetricReference from typing_extensions import override -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, MetricSpec, diff --git a/metricflow/semantics/specs/patterns/metric_time_pattern.py b/metricflow-semantics/metricflow_semantics/specs/patterns/metric_time_pattern.py similarity index 89% rename from metricflow/semantics/specs/patterns/metric_time_pattern.py rename to metricflow-semantics/metricflow_semantics/specs/patterns/metric_time_pattern.py index 65a10704c5..ff0337de10 100644 --- a/metricflow/semantics/specs/patterns/metric_time_pattern.py +++ b/metricflow-semantics/metricflow_semantics/specs/patterns/metric_time_pattern.py @@ -5,8 +5,8 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from typing_extensions import override -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, LinkableSpecSet, diff --git a/metricflow/semantics/specs/patterns/none_date_part.py b/metricflow-semantics/metricflow_semantics/specs/patterns/none_date_part.py similarity index 89% rename from metricflow/semantics/specs/patterns/none_date_part.py rename to metricflow-semantics/metricflow_semantics/specs/patterns/none_date_part.py index d5cdcbbc57..5a30db5cff 100644 --- a/metricflow/semantics/specs/patterns/none_date_part.py +++ b/metricflow-semantics/metricflow_semantics/specs/patterns/none_date_part.py @@ -4,8 +4,8 @@ from typing_extensions import override -from metricflow.semantics.specs.patterns.spec_pattern import SpecPattern -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern +from metricflow_semantics.specs.spec_classes import ( InstanceSpec, InstanceSpecSet, LinkableInstanceSpec, diff --git a/metricflow/semantics/specs/patterns/spec_pattern.py b/metricflow-semantics/metricflow_semantics/specs/patterns/spec_pattern.py similarity index 92% rename from metricflow/semantics/specs/patterns/spec_pattern.py rename to metricflow-semantics/metricflow_semantics/specs/patterns/spec_pattern.py index 3ba8bd8074..7a9071f08b 100644 --- a/metricflow/semantics/specs/patterns/spec_pattern.py +++ b/metricflow-semantics/metricflow_semantics/specs/patterns/spec_pattern.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, Sequence if TYPE_CHECKING: - from metricflow.semantics.specs.spec_classes import InstanceSpec + from metricflow_semantics.specs.spec_classes import InstanceSpec class SpecPattern(ABC): diff --git a/metricflow/semantics/specs/patterns/typed_patterns.py b/metricflow-semantics/metricflow_semantics/specs/patterns/typed_patterns.py similarity index 97% rename from metricflow/semantics/specs/patterns/typed_patterns.py rename to metricflow-semantics/metricflow_semantics/specs/patterns/typed_patterns.py index 83253f63b2..cec6ef7859 100644 --- a/metricflow/semantics/specs/patterns/typed_patterns.py +++ b/metricflow-semantics/metricflow_semantics/specs/patterns/typed_patterns.py @@ -12,12 +12,12 @@ from dbt_semantic_interfaces.references import EntityReference from typing_extensions import override -from metricflow.semantics.specs.patterns.entity_link_pattern import ( +from metricflow_semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, ParameterSetField, ) -from metricflow.semantics.specs.spec_classes import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec +from metricflow_semantics.specs.spec_classes import InstanceSpec, InstanceSpecSet, LinkableInstanceSpec @dataclass(frozen=True) diff --git a/metricflow/semantics/specs/python_object.py b/metricflow-semantics/metricflow_semantics/specs/python_object.py similarity index 94% rename from metricflow/semantics/specs/python_object.py rename to metricflow-semantics/metricflow_semantics/specs/python_object.py index 97066ee655..78d4b85bd2 100644 --- a/metricflow/semantics/specs/python_object.py +++ b/metricflow-semantics/metricflow_semantics/specs/python_object.py @@ -5,10 +5,10 @@ from dbt_semantic_interfaces.call_parameter_sets import ParseWhereFilterException from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter -from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName -from metricflow.semantics.protocols.query_parameter import GroupByParameter -from metricflow.semantics.query.query_exceptions import InvalidQueryException -from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter +from metricflow_semantics.naming.linkable_spec_name import StructuredLinkableSpecName +from metricflow_semantics.protocols.query_parameter import GroupByParameter +from metricflow_semantics.query.query_exceptions import InvalidQueryException +from metricflow_semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter def parse_object_builder_naming_scheme(group_by_item_name: str) -> GroupByParameter: diff --git a/metricflow/semantics/specs/query_param_implementations.py b/metricflow-semantics/metricflow_semantics/specs/query_param_implementations.py similarity index 91% rename from metricflow/semantics/specs/query_param_implementations.py rename to metricflow-semantics/metricflow_semantics/specs/query_param_implementations.py index 98c3cb7c11..697b65db8f 100644 --- a/metricflow/semantics/specs/query_param_implementations.py +++ b/metricflow-semantics/metricflow_semantics/specs/query_param_implementations.py @@ -9,21 +9,21 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName -from metricflow.semantics.naming.metric_scheme import MetricNamingScheme -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.protocols.query_parameter import ( +from metricflow_semantics.naming.linkable_spec_name import StructuredLinkableSpecName +from metricflow_semantics.naming.metric_scheme import MetricNamingScheme +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.protocols.query_parameter import ( DimensionOrEntityQueryParameter, InputOrderByParameter, TimeDimensionQueryParameter, ) -from metricflow.semantics.protocols.query_parameter import SavedQueryParameter as SavedQueryParameterProtocol -from metricflow.semantics.query.resolver_inputs.query_resolver_inputs import ( +from metricflow_semantics.protocols.query_parameter import SavedQueryParameter as SavedQueryParameterProtocol +from metricflow_semantics.query.resolver_inputs.query_resolver_inputs import ( ResolverInputForGroupByItem, ResolverInputForMetric, ResolverInputForOrderByItem, ) -from metricflow.semantics.specs.patterns.entity_link_pattern import ( +from metricflow_semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, ParameterSetField, diff --git a/metricflow/semantics/specs/rendered_spec_tracker.py b/metricflow-semantics/metricflow_semantics/specs/rendered_spec_tracker.py similarity index 93% rename from metricflow/semantics/specs/rendered_spec_tracker.py rename to metricflow-semantics/metricflow_semantics/specs/rendered_spec_tracker.py index ab795f7ed7..cafe386503 100644 --- a/metricflow/semantics/specs/rendered_spec_tracker.py +++ b/metricflow-semantics/metricflow_semantics/specs/rendered_spec_tracker.py @@ -2,7 +2,7 @@ from typing import List, Sequence -from metricflow.semantics.specs.spec_classes import LinkableInstanceSpec +from metricflow_semantics.specs.spec_classes import LinkableInstanceSpec class RenderedSpecTracker: diff --git a/metricflow/semantics/specs/spec_classes.py b/metricflow-semantics/metricflow_semantics/specs/spec_classes.py similarity index 98% rename from metricflow/semantics/specs/spec_classes.py rename to metricflow-semantics/metricflow_semantics/specs/spec_classes.py index 442b3a8243..573d48c6cb 100644 --- a/metricflow/semantics/specs/spec_classes.py +++ b/metricflow-semantics/metricflow_semantics/specs/spec_classes.py @@ -35,21 +35,21 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from typing_extensions import override -from metricflow.semantics.aggregation_properties import AggregationState -from metricflow.semantics.collection_helpers.merger import Mergeable -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow_semantics.aggregation_properties import AggregationState +from metricflow_semantics.collection_helpers.merger import Mergeable +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.naming.linkable_spec_name import StructuredLinkableSpecName +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ) -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_column_type import SqlColumnType -from metricflow.semantics.sql.sql_join_type import SqlJoinType -from metricflow.semantics.visitor import VisitorOutputT +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow_semantics.sql.sql_column_type import SqlColumnType +from metricflow_semantics.sql.sql_join_type import SqlJoinType +from metricflow_semantics.visitor import VisitorOutputT if TYPE_CHECKING: - from metricflow.semantics.model.semantics.metric_lookup import MetricLookup - from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup + from metricflow_semantics.model.semantics.metric_lookup import MetricLookup + from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup def hash_items(items: Sequence[SqlColumnType]) -> str: diff --git a/metricflow/semantics/specs/spec_set_transforms.py b/metricflow-semantics/metricflow_semantics/specs/spec_set_transforms.py similarity index 91% rename from metricflow/semantics/specs/spec_set_transforms.py rename to metricflow-semantics/metricflow_semantics/specs/spec_set_transforms.py index fb466a9567..991cacafc2 100644 --- a/metricflow/semantics/specs/spec_set_transforms.py +++ b/metricflow-semantics/metricflow_semantics/specs/spec_set_transforms.py @@ -2,7 +2,7 @@ from typing import Set -from metricflow.semantics.specs.spec_classes import InstanceSpecSet, InstanceSpecSetTransform +from metricflow_semantics.specs.spec_classes import InstanceSpecSet, InstanceSpecSetTransform class ToElementNameSet(InstanceSpecSetTransform[Set[str]]): diff --git a/metricflow/semantics/specs/where_filter_dimension.py b/metricflow-semantics/metricflow_semantics/specs/where_filter_dimension.py similarity index 95% rename from metricflow/semantics/specs/where_filter_dimension.py rename to metricflow-semantics/metricflow_semantics/specs/where_filter_dimension.py index 5db7f0e41f..ca2dc8d3cb 100644 --- a/metricflow/semantics/specs/where_filter_dimension.py +++ b/metricflow-semantics/metricflow_semantics/specs/where_filter_dimension.py @@ -18,14 +18,14 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.semantics.errors.error_classes import InvalidQuerySyntax -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow_semantics.errors.error_classes import InvalidQuerySyntax +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.rendered_spec_tracker import RenderedSpecTracker logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/specs/where_filter_entity.py b/metricflow-semantics/metricflow_semantics/specs/where_filter_entity.py similarity index 93% rename from metricflow/semantics/specs/where_filter_entity.py rename to metricflow-semantics/metricflow_semantics/specs/where_filter_entity.py index 88e2471be0..c73c9ffbff 100644 --- a/metricflow/semantics/specs/where_filter_entity.py +++ b/metricflow-semantics/metricflow_semantics/specs/where_filter_entity.py @@ -13,14 +13,14 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.semantics.errors.error_classes import InvalidQuerySyntax -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow_semantics.errors.error_classes import InvalidQuerySyntax +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.rendered_spec_tracker import RenderedSpecTracker class WhereFilterEntity(ProtocolHint[QueryInterfaceEntity]): diff --git a/metricflow/semantics/specs/where_filter_metric.py b/metricflow-semantics/metricflow_semantics/specs/where_filter_metric.py similarity index 92% rename from metricflow/semantics/specs/where_filter_metric.py rename to metricflow-semantics/metricflow_semantics/specs/where_filter_metric.py index 43b032ec33..483fa36b39 100644 --- a/metricflow/semantics/specs/where_filter_metric.py +++ b/metricflow-semantics/metricflow_semantics/specs/where_filter_metric.py @@ -10,14 +10,14 @@ from dbt_semantic_interfaces.references import EntityReference, LinkableElementReference, MetricReference from typing_extensions import override -from metricflow.semantics.errors.error_classes import InvalidQuerySyntax -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow_semantics.errors.error_classes import InvalidQuerySyntax +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.rendered_spec_tracker import RenderedSpecTracker class WhereFilterMetric(ProtocolHint[QueryInterfaceMetric]): diff --git a/metricflow/semantics/specs/where_filter_time_dimension.py b/metricflow-semantics/metricflow_semantics/specs/where_filter_time_dimension.py similarity index 91% rename from metricflow/semantics/specs/where_filter_time_dimension.py rename to metricflow-semantics/metricflow_semantics/specs/where_filter_time_dimension.py index fb5a09973b..03452936c1 100644 --- a/metricflow/semantics/specs/where_filter_time_dimension.py +++ b/metricflow-semantics/metricflow_semantics/specs/where_filter_time_dimension.py @@ -15,15 +15,15 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from typing_extensions import override -from metricflow.semantics.errors.error_classes import InvalidQuerySyntax -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow_semantics.errors.error_classes import InvalidQuerySyntax +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker -from metricflow.semantics.specs.where_filter_dimension import WhereFilterDimension +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.rendered_spec_tracker import RenderedSpecTracker +from metricflow_semantics.specs.where_filter_dimension import WhereFilterDimension class WhereFilterTimeDimension(WhereFilterDimension): diff --git a/metricflow/semantics/specs/where_filter_transform.py b/metricflow-semantics/metricflow_semantics/specs/where_filter_transform.py similarity index 87% rename from metricflow/semantics/specs/where_filter_transform.py rename to metricflow-semantics/metricflow_semantics/specs/where_filter_transform.py index ef27c5cc36..d56676d912 100644 --- a/metricflow/semantics/specs/where_filter_transform.py +++ b/metricflow-semantics/metricflow_semantics/specs/where_filter_transform.py @@ -7,18 +7,18 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilterIntersection from dbt_semantic_interfaces.protocols import WhereFilter, WhereFilterIntersection -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ) -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker -from metricflow.semantics.specs.spec_classes import LinkableSpecSet, WhereFilterSpec -from metricflow.semantics.specs.where_filter_dimension import WhereFilterDimensionFactory -from metricflow.semantics.specs.where_filter_entity import WhereFilterEntityFactory -from metricflow.semantics.specs.where_filter_metric import WhereFilterMetricFactory -from metricflow.semantics.specs.where_filter_time_dimension import WhereFilterTimeDimensionFactory -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.rendered_spec_tracker import RenderedSpecTracker +from metricflow_semantics.specs.spec_classes import LinkableSpecSet, WhereFilterSpec +from metricflow_semantics.specs.where_filter_dimension import WhereFilterDimensionFactory +from metricflow_semantics.specs.where_filter_entity import WhereFilterEntityFactory +from metricflow_semantics.specs.where_filter_metric import WhereFilterMetricFactory +from metricflow_semantics.specs.where_filter_time_dimension import WhereFilterTimeDimensionFactory +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/sql/__init__.py b/metricflow-semantics/metricflow_semantics/sql/__init__.py similarity index 100% rename from metricflow/semantics/sql/__init__.py rename to metricflow-semantics/metricflow_semantics/sql/__init__.py diff --git a/metricflow/semantics/sql/sql_bind_parameters.py b/metricflow-semantics/metricflow_semantics/sql/sql_bind_parameters.py similarity index 97% rename from metricflow/semantics/sql/sql_bind_parameters.py rename to metricflow-semantics/metricflow_semantics/sql/sql_bind_parameters.py index 337a763f60..05b7ee7e2d 100644 --- a/metricflow/semantics/sql/sql_bind_parameters.py +++ b/metricflow-semantics/metricflow_semantics/sql/sql_bind_parameters.py @@ -7,8 +7,8 @@ from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass -from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set -from metricflow.semantics.sql.sql_column_type import SqlColumnType +from metricflow_semantics.assert_one_arg import assert_exactly_one_arg_set +from metricflow_semantics.sql.sql_column_type import SqlColumnType @dataclass(frozen=True) diff --git a/metricflow/semantics/sql/sql_column_type.py b/metricflow-semantics/metricflow_semantics/sql/sql_column_type.py similarity index 100% rename from metricflow/semantics/sql/sql_column_type.py rename to metricflow-semantics/metricflow_semantics/sql/sql_column_type.py diff --git a/metricflow/semantics/sql/sql_join_type.py b/metricflow-semantics/metricflow_semantics/sql/sql_join_type.py similarity index 100% rename from metricflow/semantics/sql/sql_join_type.py rename to metricflow-semantics/metricflow_semantics/sql/sql_join_type.py diff --git a/metricflow/semantics/test_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers.py similarity index 99% rename from metricflow/semantics/test_helpers.py rename to metricflow-semantics/metricflow_semantics/test_helpers.py index 8aead38a48..8bf906dc9a 100644 --- a/metricflow/semantics/test_helpers.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers.py @@ -11,7 +11,7 @@ import _pytest.fixtures -from metricflow.semantics.time.time_source import TimeSource +from metricflow_semantics.time.time_source import TimeSource logger = logging.getLogger(__name__) diff --git a/metricflow/semantics/time/__init__.py b/metricflow-semantics/metricflow_semantics/time/__init__.py similarity index 100% rename from metricflow/semantics/time/__init__.py rename to metricflow-semantics/metricflow_semantics/time/__init__.py diff --git a/metricflow/semantics/time/time_constants.py b/metricflow-semantics/metricflow_semantics/time/time_constants.py similarity index 100% rename from metricflow/semantics/time/time_constants.py rename to metricflow-semantics/metricflow_semantics/time/time_constants.py diff --git a/metricflow/semantics/time/time_granularity.py b/metricflow-semantics/metricflow_semantics/time/time_granularity.py similarity index 100% rename from metricflow/semantics/time/time_granularity.py rename to metricflow-semantics/metricflow_semantics/time/time_granularity.py diff --git a/metricflow/semantics/time/time_source.py b/metricflow-semantics/metricflow_semantics/time/time_source.py similarity index 100% rename from metricflow/semantics/time/time_source.py rename to metricflow-semantics/metricflow_semantics/time/time_source.py diff --git a/metricflow/semantics/visitor.py b/metricflow-semantics/metricflow_semantics/visitor.py similarity index 100% rename from metricflow/semantics/visitor.py rename to metricflow-semantics/metricflow_semantics/visitor.py diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index 8cb35dc2bb..6f87ce0636 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -21,6 +21,40 @@ ) from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords +from metricflow_semantics.dag.id_prefix import StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DagId +from metricflow_semantics.errors.error_classes import UnableToSatisfyQueryError +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.mf_logging.runtime import log_runtime +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( + FilterSpecResolutionLookUp, +) +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import ( + ConstantPropertySpec, + CumulativeMeasureDescription, + EntitySpec, + InstanceSpecSet, + JoinToTimeSpineDescription, + LinkableInstanceSpec, + LinkableSpecSet, + LinklessEntitySpec, + MeasureSpec, + MetadataSpec, + MetricFlowQuerySpec, + MetricInputMeasureSpec, + MetricSpec, + NonAdditiveDimensionSpec, + OrderBySpec, + TimeDimensionSpec, + WhereFilterSpec, +) +from metricflow_semantics.specs.where_filter_transform import WhereSpecFactory +from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.node_evaluator import ( @@ -53,40 +87,6 @@ from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.errors.error_classes import UnableToSatisfyQueryError -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.mf_logging.runtime import log_runtime -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( - FilterSpecResolutionLookUp, -) -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.spec_classes import ( - ConstantPropertySpec, - CumulativeMeasureDescription, - EntitySpec, - InstanceSpecSet, - JoinToTimeSpineDescription, - LinkableInstanceSpec, - LinkableSpecSet, - LinklessEntitySpec, - MeasureSpec, - MetadataSpec, - MetricFlowQuerySpec, - MetricInputMeasureSpec, - MetricSpec, - NonAdditiveDimensionSpec, - OrderBySpec, - TimeDimensionSpec, - WhereFilterSpec, -) -from metricflow.semantics.specs.where_filter_transform import WhereSpecFactory -from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/dataflow/builder/measure_additiveness.py b/metricflow/dataflow/builder/measure_additiveness.py index 66e6422cac..2eb0c9a877 100644 --- a/metricflow/dataflow/builder/measure_additiveness.py +++ b/metricflow/dataflow/builder/measure_additiveness.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from typing import Dict, Optional, Sequence, Tuple -from metricflow.semantics.specs.spec_classes import MeasureSpec, NonAdditiveDimensionSpec +from metricflow_semantics.specs.spec_classes import MeasureSpec, NonAdditiveDimensionSpec @dataclass(frozen=True) diff --git a/metricflow/dataflow/builder/node_data_set.py b/metricflow/dataflow/builder/node_data_set.py index 6ce9d3263d..46e7d80921 100644 --- a/metricflow/dataflow/builder/node_data_set.py +++ b/metricflow/dataflow/builder/node_data_set.py @@ -2,16 +2,17 @@ from typing import TYPE_CHECKING, Dict, Optional, Sequence +from metricflow_semantics.mf_logging.runtime import log_block_runtime +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver + from metricflow.dataflow.dataflow_plan import ( DataflowPlanNode, ) from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.semantics.mf_logging.runtime import log_block_runtime -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver if TYPE_CHECKING: - from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup + from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup class DataflowPlanNodeOutputDataSetResolver(DataflowToSqlQueryPlanConverter): diff --git a/metricflow/dataflow/builder/node_evaluator.py b/metricflow/dataflow/builder/node_evaluator.py index 38f6f96e89..858f320059 100644 --- a/metricflow/dataflow/builder/node_evaluator.py +++ b/metricflow/dataflow/builder/node_evaluator.py @@ -22,6 +22,17 @@ from typing import List, Optional, Sequence, Tuple from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME +from metricflow_semantics.instances import InstanceSet +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator +from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow_semantics.specs.spec_classes import ( + InstanceSpecSet, + LinkableInstanceSpec, + LinkableSpecSet, + LinklessEntitySpec, +) +from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.partitions import ( @@ -37,17 +48,6 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription -from metricflow.semantics.instances import InstanceSet -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator -from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.semantics.specs.spec_classes import ( - InstanceSpecSet, - LinkableInstanceSpec, - LinkableSpecSet, - LinklessEntitySpec, -) -from metricflow.semantics.sql.sql_join_type import SqlJoinType logger = logging.getLogger(__name__) diff --git a/metricflow/dataflow/builder/partitions.py b/metricflow/dataflow/builder/partitions.py index a930e0c575..0d65e7f76f 100644 --- a/metricflow/dataflow/builder/partitions.py +++ b/metricflow/dataflow/builder/partitions.py @@ -4,15 +4,16 @@ from dataclasses import dataclass from typing import List, Sequence, Tuple -from metricflow.dataset.dataset_classes import DataSet -from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, InstanceSpecSet, PartitionSpecSet, TimeDimensionSpec, ) +from metricflow.dataset.dataset_classes import DataSet + @dataclass(frozen=True) class PartitionDimensionJoinDescription: diff --git a/metricflow/dataflow/builder/source_node.py b/metricflow/dataflow/builder/source_node.py index 3a5769e913..0777cf000b 100644 --- a/metricflow/dataflow/builder/source_node.py +++ b/metricflow/dataflow/builder/source_node.py @@ -4,6 +4,8 @@ from typing import List, Sequence, Tuple from dbt_semantic_interfaces.references import TimeDimensionReference +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.dataflow.dataflow_plan import ( BaseOutput, @@ -13,8 +15,6 @@ from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.plan_conversion.time_spine import TimeSpineSource -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver @dataclass(frozen=True) diff --git a/metricflow/dataflow/dataflow_plan.py b/metricflow/dataflow/dataflow_plan.py index 7c97706542..6032012948 100644 --- a/metricflow/dataflow/dataflow_plan.py +++ b/metricflow/dataflow/dataflow_plan.py @@ -7,9 +7,9 @@ from abc import ABC, abstractmethod from typing import Generic, Optional, Sequence, Type, TypeVar -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId, DagNode, MetricFlowDag, NodeId -from metricflow.semantics.visitor import Visitable, VisitorOutputT +from metricflow_semantics.dag.id_prefix import StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DagId, DagNode, MetricFlowDag, NodeId +from metricflow_semantics.visitor import Visitable, VisitorOutputT if typing.TYPE_CHECKING: from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode diff --git a/metricflow/dataflow/nodes/add_generated_uuid.py b/metricflow/dataflow/nodes/add_generated_uuid.py index 63c4a94b43..eb39bed52f 100644 --- a/metricflow/dataflow/nodes/add_generated_uuid.py +++ b/metricflow/dataflow/nodes/add_generated_uuid.py @@ -2,10 +2,11 @@ from typing import Sequence +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.visitor import VisitorOutputT + from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.visitor import VisitorOutputT class AddGeneratedUuidColumnNode(BaseOutput): diff --git a/metricflow/dataflow/nodes/aggregate_measures.py b/metricflow/dataflow/nodes/aggregate_measures.py index 80410ecc35..ea567fb16b 100644 --- a/metricflow/dataflow/nodes/aggregate_measures.py +++ b/metricflow/dataflow/nodes/aggregate_measures.py @@ -3,10 +3,11 @@ from abc import ABC from typing import Sequence, Tuple +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.specs.spec_classes import MetricInputMeasureSpec +from metricflow_semantics.visitor import VisitorOutputT + from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.specs.spec_classes import MetricInputMeasureSpec -from metricflow.semantics.visitor import VisitorOutputT class AggregatedMeasuresOutput(BaseOutput, ABC): diff --git a/metricflow/dataflow/nodes/combine_aggregated_outputs.py b/metricflow/dataflow/nodes/combine_aggregated_outputs.py index 6f4493cd58..e9fc415e42 100644 --- a/metricflow/dataflow/nodes/combine_aggregated_outputs.py +++ b/metricflow/dataflow/nodes/combine_aggregated_outputs.py @@ -2,14 +2,15 @@ from typing import Sequence, Union +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.visitor import VisitorOutputT + from metricflow.dataflow.dataflow_plan import ( BaseOutput, ComputedMetricsOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.visitor import VisitorOutputT class CombineAggregatedOutputsNode(ComputedMetricsOutput): diff --git a/metricflow/dataflow/nodes/compute_metrics.py b/metricflow/dataflow/nodes/compute_metrics.py index a5bac5d750..873816b2d2 100644 --- a/metricflow/dataflow/nodes/compute_metrics.py +++ b/metricflow/dataflow/nodes/compute_metrics.py @@ -2,16 +2,17 @@ from typing import Sequence +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.specs.spec_classes import MetricSpec +from metricflow_semantics.visitor import VisitorOutputT + from metricflow.dataflow.dataflow_plan import ( BaseOutput, ComputedMetricsOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.specs.spec_classes import MetricSpec -from metricflow.semantics.visitor import VisitorOutputT class ComputeMetricsNode(ComputedMetricsOutput): diff --git a/metricflow/dataflow/nodes/constrain_time.py b/metricflow/dataflow/nodes/constrain_time.py index 0af3fc89ea..66711a1b14 100644 --- a/metricflow/dataflow/nodes/constrain_time.py +++ b/metricflow/dataflow/nodes/constrain_time.py @@ -2,12 +2,13 @@ from typing import Sequence +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.visitor import VisitorOutputT + from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.visitor import VisitorOutputT class ConstrainTimeRangeNode(AggregatedMeasuresOutput, BaseOutput): diff --git a/metricflow/dataflow/nodes/filter_elements.py b/metricflow/dataflow/nodes/filter_elements.py index feefbb6d68..3d110e7e9f 100644 --- a/metricflow/dataflow/nodes/filter_elements.py +++ b/metricflow/dataflow/nodes/filter_elements.py @@ -2,12 +2,13 @@ from typing import Optional, Sequence, Tuple +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.specs.spec_classes import InstanceSpecSet +from metricflow_semantics.visitor import VisitorOutputT + from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.specs.spec_classes import InstanceSpecSet -from metricflow.semantics.visitor import VisitorOutputT class FilterElementsNode(BaseOutput): diff --git a/metricflow/dataflow/nodes/join_conversion_events.py b/metricflow/dataflow/nodes/join_conversion_events.py index 4793bbe2fb..fe029a4b05 100644 --- a/metricflow/dataflow/nodes/join_conversion_events.py +++ b/metricflow/dataflow/nodes/join_conversion_events.py @@ -3,18 +3,18 @@ from typing import Optional, Sequence from dbt_semantic_interfaces.protocols import MetricTimeWindow - -from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.specs.spec_classes import ( ConstantPropertySpec, EntitySpec, InstanceSpec, MeasureSpec, TimeDimensionSpec, ) -from metricflow.semantics.visitor import VisitorOutputT +from metricflow_semantics.visitor import VisitorOutputT + +from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor class JoinConversionEventsNode(BaseOutput): diff --git a/metricflow/dataflow/nodes/join_over_time.py b/metricflow/dataflow/nodes/join_over_time.py index dc4b7112fb..3b2b51f0b2 100644 --- a/metricflow/dataflow/nodes/join_over_time.py +++ b/metricflow/dataflow/nodes/join_over_time.py @@ -4,13 +4,13 @@ from dbt_semantic_interfaces.protocols import MetricTimeWindow from dbt_semantic_interfaces.type_enums import TimeGranularity +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty, NodeId +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.specs.spec_classes import TimeDimensionSpec +from metricflow_semantics.visitor import VisitorOutputT from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty, NodeId -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.specs.spec_classes import TimeDimensionSpec -from metricflow.semantics.visitor import VisitorOutputT class JoinOverTimeRangeNode(BaseOutput): diff --git a/metricflow/dataflow/nodes/join_to_base.py b/metricflow/dataflow/nodes/join_to_base.py index 8bb93dcfca..870fe3fb38 100644 --- a/metricflow/dataflow/nodes/join_to_base.py +++ b/metricflow/dataflow/nodes/join_to_base.py @@ -3,16 +3,17 @@ from dataclasses import dataclass from typing import List, Optional, Sequence, Tuple +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty, NodeId +from metricflow_semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec +from metricflow_semantics.sql.sql_join_type import SqlJoinType +from metricflow_semantics.visitor import VisitorOutputT + from metricflow.dataflow.builder.partitions import ( PartitionDimensionJoinDescription, PartitionTimeDimensionJoinDescription, ) from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty, NodeId -from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec -from metricflow.semantics.sql.sql_join_type import SqlJoinType -from metricflow.semantics.visitor import VisitorOutputT @dataclass(frozen=True) diff --git a/metricflow/dataflow/nodes/join_to_time_spine.py b/metricflow/dataflow/nodes/join_to_time_spine.py index 53d292eca8..309320a1d3 100644 --- a/metricflow/dataflow/nodes/join_to_time_spine.py +++ b/metricflow/dataflow/nodes/join_to_time_spine.py @@ -5,14 +5,14 @@ from dbt_semantic_interfaces.protocols import MetricTimeWindow from dbt_semantic_interfaces.type_enums import TimeGranularity +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.specs.spec_classes import TimeDimensionSpec +from metricflow_semantics.sql.sql_join_type import SqlJoinType +from metricflow_semantics.visitor import VisitorOutputT from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.specs.spec_classes import TimeDimensionSpec -from metricflow.semantics.sql.sql_join_type import SqlJoinType -from metricflow.semantics.visitor import VisitorOutputT class JoinToTimeSpineNode(BaseOutput, ABC): diff --git a/metricflow/dataflow/nodes/metric_time_transform.py b/metricflow/dataflow/nodes/metric_time_transform.py index 1094bd6201..08e46336e3 100644 --- a/metricflow/dataflow/nodes/metric_time_transform.py +++ b/metricflow/dataflow/nodes/metric_time_transform.py @@ -3,11 +3,11 @@ from typing import Sequence from dbt_semantic_interfaces.references import TimeDimensionReference +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.visitor import VisitorOutputT from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.visitor import VisitorOutputT class MetricTimeDimensionTransformNode(BaseOutput): diff --git a/metricflow/dataflow/nodes/min_max.py b/metricflow/dataflow/nodes/min_max.py index 616bc384dd..6825175e2a 100644 --- a/metricflow/dataflow/nodes/min_max.py +++ b/metricflow/dataflow/nodes/min_max.py @@ -2,9 +2,10 @@ from typing import Sequence +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.visitor import VisitorOutputT + from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.visitor import VisitorOutputT class MinMaxNode(BaseOutput): diff --git a/metricflow/dataflow/nodes/order_by_limit.py b/metricflow/dataflow/nodes/order_by_limit.py index 2dda37d447..be4643e773 100644 --- a/metricflow/dataflow/nodes/order_by_limit.py +++ b/metricflow/dataflow/nodes/order_by_limit.py @@ -2,16 +2,17 @@ from typing import Optional, Sequence, Union +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.specs.spec_classes import OrderBySpec +from metricflow_semantics.visitor import VisitorOutputT + from metricflow.dataflow.dataflow_plan import ( BaseOutput, ComputedMetricsOutput, DataflowPlanNode, DataflowPlanNodeVisitor, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.specs.spec_classes import OrderBySpec -from metricflow.semantics.visitor import VisitorOutputT class OrderByLimitNode(ComputedMetricsOutput): diff --git a/metricflow/dataflow/nodes/read_sql_source.py b/metricflow/dataflow/nodes/read_sql_source.py index 02760c63c2..8c0ce2cc5d 100644 --- a/metricflow/dataflow/nodes/read_sql_source.py +++ b/metricflow/dataflow/nodes/read_sql_source.py @@ -4,12 +4,12 @@ from typing import Sequence import jinja2 +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.visitor import VisitorOutputT from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.dataset.sql_dataset import SqlDataSet -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.visitor import VisitorOutputT class ReadSqlSourceNode(BaseOutput): diff --git a/metricflow/dataflow/nodes/semi_additive_join.py b/metricflow/dataflow/nodes/semi_additive_join.py index dfcf221bd5..3641e7f813 100644 --- a/metricflow/dataflow/nodes/semi_additive_join.py +++ b/metricflow/dataflow/nodes/semi_additive_join.py @@ -3,12 +3,12 @@ from typing import Optional, Sequence from dbt_semantic_interfaces.type_enums import AggregationType +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec +from metricflow_semantics.visitor import VisitorOutputT from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.specs.spec_classes import LinklessEntitySpec, TimeDimensionSpec -from metricflow.semantics.visitor import VisitorOutputT class SemiAdditiveJoinNode(BaseOutput): diff --git a/metricflow/dataflow/nodes/where_filter.py b/metricflow/dataflow/nodes/where_filter.py index 11eca03302..e76d67bca4 100644 --- a/metricflow/dataflow/nodes/where_filter.py +++ b/metricflow/dataflow/nodes/where_filter.py @@ -2,12 +2,13 @@ from typing import Sequence +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DisplayedProperty +from metricflow_semantics.specs.spec_classes import WhereFilterSpec +from metricflow_semantics.visitor import VisitorOutputT + from metricflow.dataflow.dataflow_plan import BaseOutput, DataflowPlanNode, DataflowPlanNodeVisitor from metricflow.dataflow.nodes.aggregate_measures import AggregatedMeasuresOutput -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DisplayedProperty -from metricflow.semantics.specs.spec_classes import WhereFilterSpec -from metricflow.semantics.visitor import VisitorOutputT class WhereConstraintNode(AggregatedMeasuresOutput): diff --git a/metricflow/dataflow/nodes/write_to_dataframe.py b/metricflow/dataflow/nodes/write_to_dataframe.py index 63c7244c90..f3de8050c4 100644 --- a/metricflow/dataflow/nodes/write_to_dataframe.py +++ b/metricflow/dataflow/nodes/write_to_dataframe.py @@ -2,6 +2,9 @@ from typing import Sequence +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.visitor import VisitorOutputT + from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlanNode, @@ -9,8 +12,6 @@ SinkNodeVisitor, SinkOutput, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.visitor import VisitorOutputT class WriteToResultDataframeNode(SinkOutput): diff --git a/metricflow/dataflow/nodes/write_to_table.py b/metricflow/dataflow/nodes/write_to_table.py index 53072036af..72860e946e 100644 --- a/metricflow/dataflow/nodes/write_to_table.py +++ b/metricflow/dataflow/nodes/write_to_table.py @@ -2,6 +2,9 @@ from typing import Sequence +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.visitor import VisitorOutputT + from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlanNode, @@ -9,8 +12,6 @@ SinkNodeVisitor, SinkOutput, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.visitor import VisitorOutputT from metricflow.sql.sql_table import SqlTable diff --git a/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py b/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py index d057e3f74d..f21f984514 100644 --- a/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py +++ b/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py @@ -4,6 +4,8 @@ from dataclasses import dataclass from typing import List, Optional, Sequence +from metricflow_semantics.specs.spec_classes import MetricSpec + from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlanNode, @@ -28,7 +30,6 @@ from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.dataflow.optimizer.source_scan.matching_linkable_specs import MatchingLinkableSpecsTransform -from metricflow.semantics.specs.spec_classes import MetricSpec logger = logging.getLogger(__name__) diff --git a/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py b/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py index 798ab521cb..e5b3c7da47 100644 --- a/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py +++ b/metricflow/dataflow/optimizer/source_scan/matching_linkable_specs.py @@ -1,6 +1,6 @@ from __future__ import annotations -from metricflow.semantics.specs.spec_classes import InstanceSpecSet, InstanceSpecSetTransform +from metricflow_semantics.specs.spec_classes import InstanceSpecSet, InstanceSpecSetTransform class MatchingLinkableSpecsTransform(InstanceSpecSetTransform[bool]): diff --git a/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py b/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py index 464346105f..640f0735bd 100644 --- a/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py +++ b/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py @@ -4,6 +4,9 @@ from dataclasses import dataclass from typing import List, Optional, Sequence +from metricflow_semantics.dag.id_prefix import StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DagId + from metricflow.dataflow.dataflow_plan import ( BaseOutput, DataflowPlan, @@ -34,8 +37,6 @@ ComputeMetricsBranchCombiner, ComputeMetricsBranchCombinerResult, ) -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId logger = logging.getLogger(__name__) diff --git a/metricflow/dataset/convert_semantic_model.py b/metricflow/dataset/convert_semantic_model.py index 91b83f10f5..964d0d4b50 100644 --- a/metricflow/dataset/convert_semantic_model.py +++ b/metricflow/dataset/convert_semantic_model.py @@ -15,30 +15,30 @@ ) from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity - -from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet -from metricflow.dataset.sql_dataset import SqlDataSet -from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource -from metricflow.semantics.aggregation_properties import AggregationState -from metricflow.semantics.dag.id_prefix import DynamicIdPrefix, StaticIdPrefix -from metricflow.semantics.dag.sequential_id import SequentialIdGenerator -from metricflow.semantics.instances import ( +from metricflow_semantics.aggregation_properties import AggregationState +from metricflow_semantics.dag.id_prefix import DynamicIdPrefix, StaticIdPrefix +from metricflow_semantics.dag.sequential_id import SequentialIdGenerator +from metricflow_semantics.instances import ( DimensionInstance, EntityInstance, InstanceSet, MeasureInstance, TimeDimensionInstance, ) -from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.semantics.model.spec_converters import MeasureConverter -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow_semantics.model.spec_converters import MeasureConverter +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import ( DEFAULT_TIME_GRANULARITY, DimensionSpec, EntityReference, EntitySpec, TimeDimensionSpec, ) + +from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet +from metricflow.dataset.sql_dataset import SqlDataSet +from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, diff --git a/metricflow/dataset/dataset_classes.py b/metricflow/dataset/dataset_classes.py index 4adc846cf8..2a7ab1bbfe 100644 --- a/metricflow/dataset/dataset_classes.py +++ b/metricflow/dataset/dataset_classes.py @@ -8,9 +8,8 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords - -from metricflow.semantics.instances import InstanceSet, TimeDimensionInstance -from metricflow.semantics.specs.spec_classes import TimeDimensionSpec +from metricflow_semantics.instances import InstanceSet, TimeDimensionInstance +from metricflow_semantics.specs.spec_classes import TimeDimensionSpec logger = logging.getLogger(__name__) diff --git a/metricflow/dataset/semantic_model_adapter.py b/metricflow/dataset/semantic_model_adapter.py index 91dba9268e..bb3a54142d 100644 --- a/metricflow/dataset/semantic_model_adapter.py +++ b/metricflow/dataset/semantic_model_adapter.py @@ -1,10 +1,10 @@ from __future__ import annotations from dbt_semantic_interfaces.references import SemanticModelReference +from metricflow_semantics.instances import InstanceSet from typing_extensions import override from metricflow.dataset.sql_dataset import SqlDataSet -from metricflow.semantics.instances import InstanceSet from metricflow.sql.sql_plan import SqlSelectStatementNode diff --git a/metricflow/dataset/sql_dataset.py b/metricflow/dataset/sql_dataset.py index 404da4131c..ed358cb138 100644 --- a/metricflow/dataset/sql_dataset.py +++ b/metricflow/dataset/sql_dataset.py @@ -3,15 +3,15 @@ from typing import Optional, Sequence from dbt_semantic_interfaces.references import SemanticModelReference +from metricflow_semantics.assert_one_arg import assert_exactly_one_arg_set +from metricflow_semantics.instances import ( + InstanceSet, +) +from metricflow_semantics.specs.column_assoc import ColumnAssociation +from metricflow_semantics.specs.spec_classes import DimensionSpec, EntitySpec, TimeDimensionSpec from typing_extensions import override from metricflow.dataset.dataset_classes import DataSet -from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set -from metricflow.semantics.instances import ( - InstanceSet, -) -from metricflow.semantics.specs.column_assoc import ColumnAssociation -from metricflow.semantics.specs.spec_classes import DimensionSpec, EntitySpec, TimeDimensionSpec from metricflow.sql.sql_plan import ( SqlQueryPlanNode, SqlSelectStatementNode, diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index c5334b4b7e..934fc29085 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -12,6 +12,26 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.references import EntityReference, MeasureReference, MetricReference from dbt_semantic_interfaces.type_enums import DimensionType +from metricflow_semantics.dag.sequential_id import SequentialIdGenerator +from metricflow_semantics.errors.error_classes import ExecutionException +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.model.semantics.linkable_element import ( + LinkableDimension, + LinkableElementProperty, +) +from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow_semantics.naming.linkable_spec_name import StructuredLinkableSpecName +from metricflow_semantics.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter +from metricflow_semantics.query.query_exceptions import InvalidQueryException +from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.random_id import random_id +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.query_param_implementations import SavedQueryParameter +from metricflow_semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec +from metricflow_semantics.time.time_source import TimeSource from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -35,26 +55,6 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dag.sequential_id import SequentialIdGenerator -from metricflow.semantics.errors.error_classes import ExecutionException -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.model.semantics.linkable_element import ( - LinkableDimension, - LinkableElementProperty, -) -from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName -from metricflow.semantics.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter -from metricflow.semantics.query.query_exceptions import InvalidQueryException -from metricflow.semantics.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.random_id import random_id -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.query_param_implementations import SavedQueryParameter -from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec -from metricflow.semantics.time.time_source import TimeSource from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.sql_table import SqlTable from metricflow.telemetry.models import TelemetryLevel diff --git a/metricflow/engine/models.py b/metricflow/engine/models.py index 4caadabab6..40aa85c45b 100644 --- a/metricflow/engine/models.py +++ b/metricflow/engine/models.py @@ -27,9 +27,8 @@ from dbt_semantic_interfaces.transformations.add_input_metric_measures import AddInputMetricMeasuresRule from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.entity_type import EntityType - -from metricflow.semantics.naming.linkable_spec_name import StructuredLinkableSpecName -from metricflow.semantics.specs.spec_classes import DimensionSpec, EntityReference +from metricflow_semantics.naming.linkable_spec_name import StructuredLinkableSpecName +from metricflow_semantics.specs.spec_classes import DimensionSpec, EntityReference @dataclass(frozen=True) diff --git a/metricflow/engine/time_source.py b/metricflow/engine/time_source.py index 076098079a..a8f0171dd8 100644 --- a/metricflow/engine/time_source.py +++ b/metricflow/engine/time_source.py @@ -2,7 +2,7 @@ import datetime as dt -from metricflow.semantics.time.time_source import TimeSource +from metricflow_semantics.time.time_source import TimeSource class ServerTimeSource(TimeSource): diff --git a/metricflow/execution/execution_plan.py b/metricflow/execution/execution_plan.py index 59f90b7641..0f03c25834 100644 --- a/metricflow/execution/execution_plan.py +++ b/metricflow/execution/execution_plan.py @@ -7,12 +7,12 @@ from typing import List, Optional, Sequence, Tuple import pandas as pd +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow_semantics.visitor import Visitable from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.visitor import Visitable from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/execution/executor.py b/metricflow/execution/executor.py index 6f8a2dc83b..ea8ba04595 100644 --- a/metricflow/execution/executor.py +++ b/metricflow/execution/executor.py @@ -5,8 +5,9 @@ from collections import OrderedDict from typing import Dict +from metricflow_semantics.dag.mf_dag import NodeId + from metricflow.execution.execution_plan import ExecutionPlan, ExecutionPlanTask, TaskExecutionResult -from metricflow.semantics.dag.mf_dag import NodeId logger = logging.getLogger(__name__) diff --git a/metricflow/plan_conversion/column_resolver.py b/metricflow/plan_conversion/column_resolver.py index 8f51a4f708..edb53349b7 100644 --- a/metricflow/plan_conversion/column_resolver.py +++ b/metricflow/plan_conversion/column_resolver.py @@ -2,14 +2,14 @@ import logging -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.linkable_spec_name import DUNDER, StructuredLinkableSpecName -from metricflow.semantics.specs.column_assoc import ( +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.naming.linkable_spec_name import DUNDER, StructuredLinkableSpecName +from metricflow_semantics.specs.column_assoc import ( ColumnAssociation, ColumnAssociationResolver, SingleColumnCorrelationKey, ) -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, diff --git a/metricflow/plan_conversion/convert_to_sql_plan.py b/metricflow/plan_conversion/convert_to_sql_plan.py index 9032a83446..7b9eacfbb6 100644 --- a/metricflow/plan_conversion/convert_to_sql_plan.py +++ b/metricflow/plan_conversion/convert_to_sql_plan.py @@ -2,7 +2,8 @@ from dataclasses import dataclass -from metricflow.semantics.instances import InstanceSet +from metricflow_semantics.instances import InstanceSet + from metricflow.sql.sql_plan import SqlQueryPlan diff --git a/metricflow/plan_conversion/dataflow_to_sql.py b/metricflow/plan_conversion/dataflow_to_sql.py index c5663a8162..c4cacfd692 100644 --- a/metricflow/plan_conversion/dataflow_to_sql.py +++ b/metricflow/plan_conversion/dataflow_to_sql.py @@ -11,6 +11,35 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.conversion_calculation_type import ConversionCalculationType from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords +from metricflow_semantics.aggregation_properties import AggregationState +from metricflow_semantics.dag.id_prefix import StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DagId +from metricflow_semantics.dag.sequential_id import SequentialIdGenerator +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.instances import ( + GroupByMetricInstance, + InstanceSet, + MetadataInstance, + MetricInstance, + TimeDimensionInstance, +) +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.column_assoc import ( + ColumnAssociation, + ColumnAssociationResolver, + SingleColumnCorrelationKey, +) +from metricflow_semantics.specs.spec_classes import ( + GroupByMetricSpec, + InstanceSpecSet, + MeasureSpec, + MetadataSpec, + MetricSpec, + TimeDimensionSpec, +) +from metricflow_semantics.sql.sql_join_type import SqlJoinType +from metricflow_semantics.time.time_constants import ISO8601_PYTHON_FORMAT from metricflow.dataflow.dataflow_plan import ( BaseOutput, @@ -73,35 +102,6 @@ ) from metricflow.plan_conversion.time_spine import TIME_SPINE_DATA_SET_DESCRIPTION, TimeSpineSource from metricflow.protocols.sql_client import SqlEngine -from metricflow.semantics.aggregation_properties import AggregationState -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.dag.sequential_id import SequentialIdGenerator -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.instances import ( - GroupByMetricInstance, - InstanceSet, - MetadataInstance, - MetricInstance, - TimeDimensionInstance, -) -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.specs.column_assoc import ( - ColumnAssociation, - ColumnAssociationResolver, - SingleColumnCorrelationKey, -) -from metricflow.semantics.specs.spec_classes import ( - GroupByMetricSpec, - InstanceSpecSet, - MeasureSpec, - MetadataSpec, - MetricSpec, - TimeDimensionSpec, -) -from metricflow.semantics.sql.sql_join_type import SqlJoinType -from metricflow.semantics.time.time_constants import ISO8601_PYTHON_FORMAT from metricflow.sql.optimizer.optimization_levels import ( SqlQueryOptimizationLevel, SqlQueryOptimizerConfiguration, diff --git a/metricflow/plan_conversion/instance_converters.py b/metricflow/plan_conversion/instance_converters.py index f3e0f5b160..1139d07831 100644 --- a/metricflow/plan_conversion/instance_converters.py +++ b/metricflow/plan_conversion/instance_converters.py @@ -12,13 +12,9 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from more_itertools import bucket - -from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription -from metricflow.plan_conversion.select_column_gen import SelectColumnSet -from metricflow.semantics.aggregation_properties import AggregationState -from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set -from metricflow.semantics.instances import ( +from metricflow_semantics.aggregation_properties import AggregationState +from metricflow_semantics.assert_one_arg import assert_exactly_one_arg_set +from metricflow_semantics.instances import ( DimensionInstance, EntityInstance, GroupByMetricInstance, @@ -30,10 +26,10 @@ MetricInstance, TimeDimensionInstance, ) -from metricflow.semantics.model.semantics.metric_lookup import MetricLookup -from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.model.semantics.metric_lookup import MetricLookup +from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntityReference, EntitySpec, @@ -46,6 +42,10 @@ MetricInputMeasureSpec, TimeDimensionSpec, ) +from more_itertools import bucket + +from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription +from metricflow.plan_conversion.select_column_gen import SelectColumnSet from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index 54f76f73fe..a7ad4d548f 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -5,6 +5,13 @@ from typing import List, Optional, Sequence, Set from dbt_semantic_interfaces.references import EntityReference, TimeDimensionReference +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS, SemanticModelJoinEvaluator +from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec +from metricflow_semantics.specs.spec_set_transforms import ToElementNameSet +from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.partitions import PartitionJoinResolver @@ -15,13 +22,6 @@ from metricflow.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS, SemanticModelJoinEvaluator -from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec -from metricflow.semantics.specs.spec_set_transforms import ToElementNameSet -from metricflow.semantics.sql.sql_join_type import SqlJoinType logger = logging.getLogger(__name__) diff --git a/metricflow/plan_conversion/spec_transforms.py b/metricflow/plan_conversion/spec_transforms.py index 7acb630e39..9cdab81984 100644 --- a/metricflow/plan_conversion/spec_transforms.py +++ b/metricflow/plan_conversion/spec_transforms.py @@ -2,13 +2,14 @@ from typing import List, Sequence -from metricflow.plan_conversion.select_column_gen import SelectColumnSet -from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr -from metricflow.semantics.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.column_assoc import ColumnAssociation, ColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import ( InstanceSpecSet, InstanceSpecSetTransform, ) + +from metricflow.plan_conversion.select_column_gen import SelectColumnSet +from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr from metricflow.sql.sql_plan import SqlSelectColumn diff --git a/metricflow/plan_conversion/sql_join_builder.py b/metricflow/plan_conversion/sql_join_builder.py index 01fd860fa5..7a58689b67 100644 --- a/metricflow/plan_conversion/sql_join_builder.py +++ b/metricflow/plan_conversion/sql_join_builder.py @@ -5,6 +5,8 @@ from dbt_semantic_interfaces.protocols.metric import MetricTimeWindow from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.assert_one_arg import assert_exactly_one_arg_set +from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.dataflow.nodes.join_conversion_events import JoinConversionEventsNode from metricflow.dataflow.nodes.join_over_time import JoinOverTimeRangeNode @@ -12,8 +14,6 @@ from metricflow.dataflow.nodes.join_to_time_spine import JoinToTimeSpineNode from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.sql_expression_builders import make_coalesced_expr -from metricflow.semantics.assert_one_arg import assert_exactly_one_arg_set -from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.sql_exprs import ( SqlColumnReference, SqlColumnReferenceExpression, diff --git a/metricflow/plan_conversion/time_spine.py b/metricflow/plan_conversion/time_spine.py index 062be7afce..38669b4e3e 100644 --- a/metricflow/plan_conversion/time_spine.py +++ b/metricflow/plan_conversion/time_spine.py @@ -5,8 +5,8 @@ from dbt_semantic_interfaces.protocols import SemanticManifest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.mf_logging.pretty_print import mf_pformat from metricflow.sql.sql_table import SqlTable logger = logging.getLogger(__name__) diff --git a/metricflow/protocols/sql_client.py b/metricflow/protocols/sql_client.py index d9d7e5457c..06ca36b350 100644 --- a/metricflow/protocols/sql_client.py +++ b/metricflow/protocols/sql_client.py @@ -4,9 +4,9 @@ from enum import Enum from typing import Protocol +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from pandas import DataFrame -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer diff --git a/metricflow/sql/optimizer/rewriting_sub_query_reducer.py b/metricflow/sql/optimizer/rewriting_sub_query_reducer.py index 49eb9abf66..5f14734b4c 100644 --- a/metricflow/sql/optimizer/rewriting_sub_query_reducer.py +++ b/metricflow/sql/optimizer/rewriting_sub_query_reducer.py @@ -4,7 +4,8 @@ from dataclasses import dataclass from typing import List, Optional, Sequence, Tuple -from metricflow.semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.formatting import indent + from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer from metricflow.sql.sql_exprs import ( SqlColumnAliasReferenceExpression, diff --git a/metricflow/sql/render/big_query.py b/metricflow/sql/render/big_query.py index aeb1045fea..0bc4222e66 100644 --- a/metricflow/sql/render/big_query.py +++ b/metricflow/sql/render/big_query.py @@ -6,10 +6,10 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.errors.error_classes import UnsupportedEngineFeatureError +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from typing_extensions import override -from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/databricks.py b/metricflow/sql/render/databricks.py index 5a44de1e8b..01ffd9d219 100644 --- a/metricflow/sql/render/databricks.py +++ b/metricflow/sql/render/databricks.py @@ -4,9 +4,9 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.type_enums.date_part import DatePart +from metricflow_semantics.errors.error_classes import UnsupportedEngineFeatureError from typing_extensions import override -from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/duckdb_renderer.py b/metricflow/sql/render/duckdb_renderer.py index 349a55f861..ad90f2c53d 100644 --- a/metricflow/sql/render/duckdb_renderer.py +++ b/metricflow/sql/render/duckdb_renderer.py @@ -4,9 +4,9 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from typing_extensions import override -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/expr_renderer.py b/metricflow/sql/render/expr_renderer.py index af87e3f61c..795ea02b9e 100644 --- a/metricflow/sql/render/expr_renderer.py +++ b/metricflow/sql/render/expr_renderer.py @@ -10,10 +10,10 @@ import jinja2 from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from typing_extensions import override -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.rendering_constants import SqlRenderingConstants from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, diff --git a/metricflow/sql/render/postgres.py b/metricflow/sql/render/postgres.py index 125603fea3..57dbf1dfd2 100644 --- a/metricflow/sql/render/postgres.py +++ b/metricflow/sql/render/postgres.py @@ -4,10 +4,10 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.errors.error_classes import UnsupportedEngineFeatureError +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from typing_extensions import override -from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/redshift.py b/metricflow/sql/render/redshift.py index ead0bf050f..1306c5080b 100644 --- a/metricflow/sql/render/redshift.py +++ b/metricflow/sql/render/redshift.py @@ -4,10 +4,10 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.type_enums.date_part import DatePart +from metricflow_semantics.errors.error_classes import UnsupportedEngineFeatureError +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from typing_extensions import override -from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/snowflake.py b/metricflow/sql/render/snowflake.py index 4eebe82cda..402aff0a45 100644 --- a/metricflow/sql/render/snowflake.py +++ b/metricflow/sql/render/snowflake.py @@ -4,10 +4,10 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.type_enums.date_part import DatePart +from metricflow_semantics.errors.error_classes import UnsupportedEngineFeatureError +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from typing_extensions import override -from metricflow.semantics.errors.error_classes import UnsupportedEngineFeatureError -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/sql_plan_renderer.py b/metricflow/sql/render/sql_plan_renderer.py index 1dfbe56e38..6ee1d34d07 100644 --- a/metricflow/sql/render/sql_plan_renderer.py +++ b/metricflow/sql/render/sql_plan_renderer.py @@ -7,8 +7,9 @@ from string import Template from typing import List, Optional, Sequence, Tuple -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters + from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/render/trino.py b/metricflow/sql/render/trino.py index 6c4981b0e7..8445b294ea 100644 --- a/metricflow/sql/render/trino.py +++ b/metricflow/sql/render/trino.py @@ -6,9 +6,9 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from typing_extensions import override -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.render.expr_renderer import ( DefaultSqlExpressionRenderer, SqlExpressionRenderer, diff --git a/metricflow/sql/sql_exprs.py b/metricflow/sql/sql_exprs.py index eab2789667..481be5123d 100644 --- a/metricflow/sql/sql_exprs.py +++ b/metricflow/sql/sql_exprs.py @@ -14,11 +14,10 @@ from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity - -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagNode, DisplayedProperty, NodeId -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.visitor import Visitable, VisitorOutputT +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DagNode, DisplayedProperty, NodeId +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow_semantics.visitor import Visitable, VisitorOutputT class SqlExpressionNode(DagNode, Visitable, ABC): diff --git a/metricflow/sql/sql_plan.py b/metricflow/sql/sql_plan.py index dd32dfedf9..b2aa434900 100644 --- a/metricflow/sql/sql_plan.py +++ b/metricflow/sql/sql_plan.py @@ -7,12 +7,12 @@ from dataclasses import dataclass from typing import Generic, List, Optional, Sequence, Tuple +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId +from metricflow_semantics.sql.sql_join_type import SqlJoinType +from metricflow_semantics.visitor import VisitorOutputT from typing_extensions import override -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId, DagNode, DisplayedProperty, MetricFlowDag, NodeId -from metricflow.semantics.sql.sql_join_type import SqlJoinType -from metricflow.semantics.visitor import VisitorOutputT from metricflow.sql.sql_exprs import SqlExpressionNode from metricflow.sql.sql_table import SqlTable diff --git a/metricflow/telemetry/handlers/python_log.py b/metricflow/telemetry/handlers/python_log.py index 73058e6584..5f9af25a05 100644 --- a/metricflow/telemetry/handlers/python_log.py +++ b/metricflow/telemetry/handlers/python_log.py @@ -3,7 +3,8 @@ import logging import textwrap -from metricflow.semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.mf_logging.pretty_print import mf_pformat + from metricflow.telemetry.handlers.handlers import PayloadType, TelemetryHandler logger = logging.getLogger(__name__) diff --git a/metricflow/telemetry/reporter.py b/metricflow/telemetry/reporter.py index 0729d5415b..bcd325526d 100644 --- a/metricflow/telemetry/reporter.py +++ b/metricflow/telemetry/reporter.py @@ -12,9 +12,9 @@ from hashlib import sha256 from typing import Callable, List, Optional, TypeVar +from metricflow_semantics.random_id import random_id from typing_extensions import ParamSpec -from metricflow.semantics.random_id import random_id from metricflow.telemetry.handlers.handlers import ( TelemetryHandler, ToMemoryTelemetryHandler, diff --git a/metricflow/validation/data_warehouse_model_validator.py b/metricflow/validation/data_warehouse_model_validator.py index ccbc41f168..1cd6078050 100644 --- a/metricflow/validation/data_warehouse_model_validator.py +++ b/metricflow/validation/data_warehouse_model_validator.py @@ -28,6 +28,9 @@ ValidationIssue, ValidationWarning, ) +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.source_node import SourceNodeBuilder @@ -40,9 +43,6 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters @dataclass diff --git a/tests/dataflow/builder/test_cyclic_join.py b/tests/dataflow/builder/test_cyclic_join.py index 28c4119c9c..3cc8648814 100644 --- a/tests/dataflow/builder/test_cyclic_join.py +++ b/tests/dataflow/builder/test_cyclic_join.py @@ -6,13 +6,13 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import EntityReference - -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, ) + +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests/dataflow/builder/test_dataflow_plan_builder.py index 74af882859..a4a0860558 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests/dataflow/builder/test_dataflow_plan_builder.py @@ -8,14 +8,11 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity - -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset_classes import DataSet -from metricflow.semantics.errors.error_classes import UnableToSatisfyQueryError -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.errors.error_classes import UnableToSatisfyQueryError +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntityReference, MetricFlowQuerySpec, @@ -23,6 +20,9 @@ OrderBySpec, TimeDimensionSpec, ) + +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.dataset.dataset_classes import DataSet from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests/dataflow/builder/test_measure_additiveness.py b/tests/dataflow/builder/test_measure_additiveness.py index 9faf91d7d8..64893e16a3 100644 --- a/tests/dataflow/builder/test_measure_additiveness.py +++ b/tests/dataflow/builder/test_measure_additiveness.py @@ -1,9 +1,9 @@ from __future__ import annotations from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType +from metricflow_semantics.specs.spec_classes import MeasureSpec, NonAdditiveDimensionSpec from metricflow.dataflow.builder.measure_additiveness import group_measure_specs_by_additiveness -from metricflow.semantics.specs.spec_classes import MeasureSpec, NonAdditiveDimensionSpec def test_bucket_measure_specs_by_additiveness() -> None: # noqa: D103 diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests/dataflow/builder/test_node_data_set.py index c247ae6b14..566fa99c49 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests/dataflow/builder/test_node_data_set.py @@ -5,6 +5,18 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelElementReference +from metricflow_semantics.aggregation_properties import AggregationState +from metricflow_semantics.instances import ( + InstanceSet, + MeasureInstance, +) +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey +from metricflow_semantics.specs.spec_classes import ( + LinklessEntitySpec, + MeasureSpec, +) +from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode @@ -12,18 +24,6 @@ from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource -from metricflow.semantics.aggregation_properties import AggregationState -from metricflow.semantics.instances import ( - InstanceSet, - MeasureInstance, -) -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey -from metricflow.semantics.specs.spec_classes import ( - LinklessEntitySpec, - MeasureSpec, -) -from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression from metricflow.sql.sql_plan import ( SqlSelectColumn, diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests/dataflow/builder/test_node_evaluator.py index 4dcb54929b..09bca64fb0 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests/dataflow/builder/test_node_evaluator.py @@ -5,6 +5,16 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.spec_classes import ( + DimensionSpec, + EntityReference, + EntitySpec, + LinkableInstanceSpec, + LinklessEntitySpec, + TimeDimensionSpec, +) +from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.node_evaluator import ( @@ -18,16 +28,6 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.specs.spec_classes import ( - DimensionSpec, - EntityReference, - EntitySpec, - LinkableInstanceSpec, - LinklessEntitySpec, - TimeDimensionSpec, -) -from metricflow.semantics.sql.sql_join_type import SqlJoinType from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup logger = logging.getLogger(__name__) diff --git a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py index e7a1df5124..94e5325236 100644 --- a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py +++ b/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py @@ -4,6 +4,9 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.dag.id_prefix import StaticIdPrefix +from metricflow_semantics.dag.mf_dag import DagId +from metricflow_semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec from metricflow.dataflow.dataflow_plan import ( BaseOutput, @@ -15,9 +18,6 @@ ComputeMetricsBranchCombiner, ComputeMetricsBranchCombinerResult, ) -from metricflow.semantics.dag.id_prefix import StaticIdPrefix -from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index 93e90d186c..fe8fd8ed09 100644 --- a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -6,6 +6,14 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import ( + DimensionSpec, + EntityReference, + MetricFlowQuerySpec, + MetricSpec, +) from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.dataflow_plan import ( @@ -33,14 +41,6 @@ from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer from metricflow.dataset.dataset_classes import DataSet -from metricflow.semantics.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.spec_classes import ( - DimensionSpec, - EntityReference, - MetricFlowQuerySpec, - MetricSpec, -) from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests/dataflow_plan_to_svg.py b/tests/dataflow_plan_to_svg.py index 7e0e7b9b86..534f60ad54 100644 --- a/tests/dataflow_plan_to_svg.py +++ b/tests/dataflow_plan_to_svg.py @@ -3,9 +3,9 @@ import os from _pytest.fixtures import FixtureRequest +from metricflow_semantics.dag.dag_visualization import DagGraphT, render_via_graphviz +from metricflow_semantics.test_helpers import snapshot_path_prefix -from metricflow.semantics.dag.dag_visualization import DagGraphT, render_via_graphviz -from metricflow.semantics.test_helpers import snapshot_path_prefix from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/examples/test_node_sql.py b/tests/examples/test_node_sql.py index f599b77e84..e96e533a9f 100644 --- a/tests/examples/test_node_sql.py +++ b/tests/examples/test_node_sql.py @@ -5,6 +5,9 @@ import pytest from dbt_semantic_interfaces.references import SemanticModelReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.nodes.filter_elements import FilterElementsNode @@ -14,9 +17,6 @@ from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from metricflow.sql.render.sql_plan_renderer import SqlQueryPlanRenderer diff --git a/tests/execution/noop_task.py b/tests/execution/noop_task.py index 87b8b9af0f..563d16feaa 100644 --- a/tests/execution/noop_task.py +++ b/tests/execution/noop_task.py @@ -4,13 +4,14 @@ import time from typing import Optional, Sequence +from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix + from metricflow.execution.execution_plan import ( ExecutionPlanTask, SqlQuery, TaskExecutionError, TaskExecutionResult, ) -from metricflow.semantics.dag.id_prefix import IdPrefix, StaticIdPrefix logger = logging.getLogger(__name__) diff --git a/tests/execution/test_sequential_executor.py b/tests/execution/test_sequential_executor.py index 7532878f69..a070e5b234 100644 --- a/tests/execution/test_sequential_executor.py +++ b/tests/execution/test_sequential_executor.py @@ -1,8 +1,9 @@ from __future__ import annotations +from metricflow_semantics.dag.mf_dag import DagId + from metricflow.execution.execution_plan import ExecutionPlan from metricflow.execution.executor import SequentialPlanExecutor -from metricflow.semantics.dag.mf_dag import DagId from tests.execution.noop_task import NoOpExecutionPlanTask diff --git a/tests/execution/test_tasks.py b/tests/execution/test_tasks.py index d15b8cd74c..53e9dee1de 100644 --- a/tests/execution/test_tasks.py +++ b/tests/execution/test_tasks.py @@ -1,6 +1,9 @@ from __future__ import annotations import pandas as pd +from metricflow_semantics.dag.mf_dag import DagId +from metricflow_semantics.random_id import random_id +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.execution.execution_plan import ( ExecutionPlan, @@ -9,9 +12,6 @@ ) from metricflow.execution.executor import SequentialPlanExecutor from metricflow.protocols.sql_client import SqlClient, SqlEngine -from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.random_id import random_id -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/fixtures/cli_fixtures.py b/tests/fixtures/cli_fixtures.py index 866e2113aa..c70cedd933 100644 --- a/tests/fixtures/cli_fixtures.py +++ b/tests/fixtures/cli_fixtures.py @@ -10,6 +10,8 @@ from click.testing import CliRunner, Result from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.test_utils import as_datetime +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.test_helpers import ConfigurableTimeSource from typing_extensions import override from dbt_metricflow.cli.cli_context import CLIContext @@ -17,8 +19,6 @@ from metricflow.engine.metricflow_engine import MetricFlowEngine from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import dbt_project_dir diff --git a/tests/fixtures/dataflow_fixtures.py b/tests/fixtures/dataflow_fixtures.py index 5e6fe07466..3cba9dad7c 100644 --- a/tests/fixtures/dataflow_fixtures.py +++ b/tests/fixtures/dataflow_fixtures.py @@ -3,12 +3,12 @@ from typing import Mapping import pytest +from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.sql_client_fixtures import sql_client # noqa: F401, F403 diff --git a/tests/fixtures/id_fixtures.py b/tests/fixtures/id_fixtures.py index aaf8f8038a..17622240fb 100644 --- a/tests/fixtures/id_fixtures.py +++ b/tests/fixtures/id_fixtures.py @@ -6,8 +6,7 @@ from unittest.mock import patch import pytest - -from metricflow.semantics.dag.sequential_id import SequentialIdGenerator +from metricflow_semantics.dag.sequential_id import SequentialIdGenerator @dataclass(frozen=True) diff --git a/tests/fixtures/manifest_fixtures.py b/tests/fixtures/manifest_fixtures.py index e1c7bdb4ec..c972e47940 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests/fixtures/manifest_fixtures.py @@ -16,6 +16,10 @@ from dbt_semantic_interfaces.protocols import SemanticModel from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.test_helpers import ConfigurableTimeSource from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -27,10 +31,6 @@ from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.id_fixtures import IdNumberSpace, patch_id_generators_helper from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/fixtures/setup_fixtures.py b/tests/fixtures/setup_fixtures.py index d678661a4e..7495dfa2a5 100644 --- a/tests/fixtures/setup_fixtures.py +++ b/tests/fixtures/setup_fixtures.py @@ -10,16 +10,16 @@ import pytest import sqlalchemy.util from _pytest.fixtures import FixtureRequest -from sqlalchemy.engine import make_url - -from metricflow.semantics.random_id import random_id -from metricflow.semantics.test_helpers import ( +from metricflow_semantics.random_id import random_id +from metricflow_semantics.test_helpers import ( DISPLAY_SNAPSHOTS_CLI_FLAG, OVERWRITE_SNAPSHOTS_CLI_FLAG, MetricFlowTestConfiguration, add_display_snapshots_cli_flag, add_overwrite_snapshots_cli_flag, ) +from sqlalchemy.engine import make_url + from tests.fixtures.sql_clients.common_client import SqlDialect from tests.table_snapshot.table_snapshots import SqlTableSnapshotHash, SqlTableSnapshotRepository diff --git a/tests/fixtures/sql_clients/base_sql_client_implementation.py b/tests/fixtures/sql_clients/base_sql_client_implementation.py index d90c971cc4..8f7df405fb 100644 --- a/tests/fixtures/sql_clients/base_sql_client_implementation.py +++ b/tests/fixtures/sql_clients/base_sql_client_implementation.py @@ -6,14 +6,14 @@ from typing import Optional import pandas as pd +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.random_id import random_id +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.protocols.sql_client import ( SqlClient, ) -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.random_id import random_id -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from metricflow.sql_request.sql_request_attributes import SqlRequestId diff --git a/tests/fixtures/sql_clients/sqlalchemy_dialect.py b/tests/fixtures/sql_clients/sqlalchemy_dialect.py index 04d50e20cc..eb670201f0 100644 --- a/tests/fixtures/sql_clients/sqlalchemy_dialect.py +++ b/tests/fixtures/sql_clients/sqlalchemy_dialect.py @@ -8,8 +8,8 @@ import pandas as pd import sqlalchemy +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from tests.fixtures.sql_clients.base_sql_client_implementation import BaseSqlClientImplementation diff --git a/tests/fixtures/table_fixtures.py b/tests/fixtures/table_fixtures.py index 08421bfd65..c6238ead9c 100644 --- a/tests/fixtures/table_fixtures.py +++ b/tests/fixtures/table_fixtures.py @@ -5,9 +5,9 @@ from pathlib import Path import pytest +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.time_spine import TimeSpineSource -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods from tests.source_schema_tools import create_tables_listed_in_table_snapshot_repository diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 641b8c499d..96ffdfa7a0 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -4,13 +4,13 @@ import pytest from dbt_semantic_interfaces.test_utils import as_datetime +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.test_helpers import ConfigurableTimeSource from metricflow.engine.metricflow_engine import MetricFlowEngine from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/integration/test_configured_cases.py b/tests/integration/test_configured_cases.py index 0941cec83f..7bc7bc62f1 100644 --- a/tests/integration/test_configured_cases.py +++ b/tests/integration/test_configured_cases.py @@ -13,6 +13,12 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.protocols.query_parameter import DimensionOrEntityQueryParameter +from metricflow_semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter +from metricflow_semantics.test_helpers import ( + ConfigurableTimeSource, +) from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest from metricflow.plan_conversion.column_resolver import ( @@ -20,12 +26,6 @@ ) from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.protocols.query_parameter import DimensionOrEntityQueryParameter -from metricflow.semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter -from metricflow.semantics.test_helpers import ( - ConfigurableTimeSource, -) from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlColumnReference, diff --git a/tests/integration/test_rendered_query.py b/tests/integration/test_rendered_query.py index 851acb423d..9bc7a58fe0 100644 --- a/tests/integration/test_rendered_query.py +++ b/tests/integration/test_rendered_query.py @@ -3,12 +3,12 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.test_utils import as_datetime +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.test_helpers import ConfigurableTimeSource from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.test_helpers import ConfigurableTimeSource from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.integration.conftest import IntegrationTestHelpers from tests.snapshot_utils import ( diff --git a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py index 7c651e34f9..3a615521e8 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py @@ -4,16 +4,16 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity - -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec, ) + +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index d7ea005d22..06145be23b 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -4,13 +4,13 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.references import EntityReference +from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index 8a7c886990..9e2f639b56 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -5,12 +5,12 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import TimeDimensionReference +from metricflow_semantics.specs.spec_classes import MetricFlowQuerySpec, MetricSpec from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.specs.spec_classes import MetricFlowQuerySpec, MetricSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py index 99afc3d6fe..d3bc27dc50 100644 --- a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py +++ b/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py @@ -2,15 +2,16 @@ from typing import Mapping +from metricflow_semantics.instances import InstanceSet +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec, MetricInputMeasureSpec + from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.instance_converters import ( CreateSelectColumnsWithMeasuresAggregated, FilterElements, ) from metricflow.plan_conversion.select_column_gen import SelectColumnSet -from metricflow.semantics.instances import InstanceSet -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec, MetricInputMeasureSpec from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlFunction, diff --git a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py index 155428fd0a..3fc498bd38 100644 --- a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py +++ b/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py @@ -4,12 +4,12 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.instances import InstanceSet +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.spec_classes import TimeDimensionSpec from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription -from metricflow.semantics.instances import InstanceSet -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.specs.spec_classes import TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests/plan_conversion/test_dataflow_to_execution.py index 3aecc2dedf..e171ae2765 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests/plan_conversion/test_dataflow_to_execution.py @@ -2,20 +2,20 @@ import pytest from _pytest.fixtures import FixtureRequest - -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.execution.dataflow_to_execution import DataflowToExecutionPlanConverter -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec, ) + +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.execution.dataflow_to_execution import DataflowToExecutionPlanConverter +from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_execution_plan_text_equal diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests/plan_conversion/test_dataflow_to_sql_plan.py index 5311ed192c..282762d127 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests/plan_conversion/test_dataflow_to_sql_plan.py @@ -9,6 +9,26 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.dag.mf_dag import DagId +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import ( + DimensionSpec, + InstanceSpecSet, + LinkableSpecSet, + LinklessEntitySpec, + MeasureSpec, + MetricFlowQuerySpec, + MetricInputMeasureSpec, + MetricSpec, + NonAdditiveDimensionSpec, + OrderBySpec, + TimeDimensionSpec, + WhereFilterSpec, +) +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.dataflow_plan import ( @@ -29,26 +49,6 @@ from metricflow.dataflow.nodes.write_to_dataframe import WriteToResultDataframeNode from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.spec_classes import ( - DimensionSpec, - InstanceSpecSet, - LinkableSpecSet, - LinklessEntitySpec, - MeasureSpec, - MetricFlowQuerySpec, - MetricInputMeasureSpec, - MetricSpec, - NonAdditiveDimensionSpec, - OrderBySpec, - TimeDimensionSpec, - WhereFilterSpec, -) -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters -from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/plan_conversion/test_time_spine.py b/tests/plan_conversion/test_time_spine.py index c9cab9be7b..443922519e 100644 --- a/tests/plan_conversion/test_time_spine.py +++ b/tests/plan_conversion/test_time_spine.py @@ -1,12 +1,12 @@ from __future__ import annotations +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.time.time_constants import ISO8601_PYTHON_TS_FORMAT from pandas import DataFrame from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.time.time_constants import ISO8601_PYTHON_TS_FORMAT def test_date_spine_date_range( # noqa: D103 diff --git a/tests/query_rendering/compare_rendered_query.py b/tests/query_rendering/compare_rendered_query.py index ee6ecad8fc..1a8bbc234d 100644 --- a/tests/query_rendering/compare_rendered_query.py +++ b/tests/query_rendering/compare_rendered_query.py @@ -3,11 +3,11 @@ from __future__ import annotations from _pytest.fixtures import FixtureRequest +from metricflow_semantics.dag.mf_dag import DagId from metricflow.dataflow.dataflow_plan import BaseOutput from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dag.mf_dag import DagId from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests.dataflow_plan_to_svg import display_graph_if_requested from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests/query_rendering/test_cumulative_metric_rendering.py index 3af3fed849..91843920ff 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests/query_rendering/test_cumulative_metric_rendering.py @@ -10,14 +10,14 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests/query_rendering/test_derived_metric_rendering.py index 3001360616..ea5e196097 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests/query_rendering/test_derived_metric_rendering.py @@ -8,18 +8,18 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.naming.dunder_scheme import DunderNamingScheme +from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import ( + MetricFlowQuerySpec, + MetricSpec, +) from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme -from metricflow.semantics.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.spec_classes import ( - MetricFlowQuerySpec, - MetricSpec, -) from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check from tests.time.metric_time_dimension import ( diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests/query_rendering/test_fill_nulls_with_rendering.py index 43fda0a5d0..605c7c1a14 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests/query_rendering/test_fill_nulls_with_rendering.py @@ -11,18 +11,18 @@ ) from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity - -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset_classes import DataSet -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec, ) + +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.dataset.dataset_classes import DataSet +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests/query_rendering/test_granularity_date_part_rendering.py index a5b08dc7be..888b0c09fc 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests/query_rendering/test_granularity_date_part_rendering.py @@ -10,15 +10,15 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.specs.spec_classes import ( + MetricFlowQuerySpec, + MetricSpec, +) from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.specs.spec_classes import ( - MetricFlowQuerySpec, - MetricSpec, -) from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_metric_filter_rendering.py b/tests/query_rendering/test_metric_filter_rendering.py index 8e68134ebd..c3e4d4a215 100644 --- a/tests/query_rendering/test_metric_filter_rendering.py +++ b/tests/query_rendering/test_metric_filter_rendering.py @@ -3,11 +3,11 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter +from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.query.query_parser import MetricFlowQueryParser from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/query_rendering/test_metric_time_without_metrics.py b/tests/query_rendering/test_metric_time_without_metrics.py index 2a4db8d66d..896cd8122a 100644 --- a/tests/query_rendering/test_metric_time_without_metrics.py +++ b/tests/query_rendering/test_metric_time_without_metrics.py @@ -6,12 +6,12 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check from tests.time.metric_time_dimension import MTD_SPEC_DAY diff --git a/tests/query_rendering/test_query_rendering.py b/tests/query_rendering/test_query_rendering.py index 59ebeba58c..e1b2d7d0c6 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests/query_rendering/test_query_rendering.py @@ -15,20 +15,20 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity - -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataset.dataset_classes import DataSet -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec, ) + +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.dataset.dataset_classes import DataSet +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.protocols.sql_client import SqlClient from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check from tests.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_WEEK diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests/query_rendering/test_time_spine_join_rendering.py index 9f585ae15f..29ca93f6f4 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests/query_rendering/test_time_spine_join_rendering.py @@ -11,15 +11,15 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.specs.spec_classes import ( + MetricFlowQuerySpec, + MetricSpec, +) from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.specs.spec_classes import ( - MetricFlowQuerySpec, - MetricSpec, -) from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests/semantics/collection_helpers/test_merger.py b/tests/semantics/collection_helpers/test_merger.py index 0bb5d6c4b8..cce814af71 100644 --- a/tests/semantics/collection_helpers/test_merger.py +++ b/tests/semantics/collection_helpers/test_merger.py @@ -3,10 +3,9 @@ from dataclasses import dataclass, field from typing import List, Tuple +from metricflow_semantics.collection_helpers.merger import Mergeable from typing_extensions import override -from metricflow.semantics.collection_helpers.merger import Mergeable - @dataclass(frozen=True) class NumberTuple(Mergeable): # noqa: D101 diff --git a/tests/semantics/collection_helpers/test_pretty_print.py b/tests/semantics/collection_helpers/test_pretty_print.py index 2ac424ff80..2a51b41f2a 100644 --- a/tests/semantics/collection_helpers/test_pretty_print.py +++ b/tests/semantics/collection_helpers/test_pretty_print.py @@ -5,9 +5,9 @@ from dbt_semantic_interfaces.implementations.elements.dimension import PydanticDimension from dbt_semantic_interfaces.type_enums import DimensionType +from metricflow_semantics.mf_logging.formatting import indent +from metricflow_semantics.mf_logging.pretty_print import mf_pformat, mf_pformat_many -from metricflow.semantics.mf_logging.formatting import indent -from metricflow.semantics.mf_logging.pretty_print import mf_pformat, mf_pformat_many from tests.time.metric_time_dimension import MTD_SPEC_DAY logger = logging.getLogger(__name__) diff --git a/tests/semantics/mf_logging/test_dag_to_text.py b/tests/semantics/mf_logging/test_dag_to_text.py index 134a31b3b4..a3216bc63f 100644 --- a/tests/semantics/mf_logging/test_dag_to_text.py +++ b/tests/semantics/mf_logging/test_dag_to_text.py @@ -6,9 +6,10 @@ import time from typing import List -from metricflow.semantics.dag.dag_to_text import MetricFlowDagTextFormatter -from metricflow.semantics.dag.mf_dag import DagId -from metricflow.semantics.mf_logging.formatting import indent +from metricflow_semantics.dag.dag_to_text import MetricFlowDagTextFormatter +from metricflow_semantics.dag.mf_dag import DagId +from metricflow_semantics.mf_logging.formatting import indent + from metricflow.sql.sql_exprs import ( SqlStringExpression, ) diff --git a/tests/semantics/model/semantics/test_linkable_element_set.py b/tests/semantics/model/semantics/test_linkable_element_set.py index 6ecda24766..925e5ed8b7 100644 --- a/tests/semantics/model/semantics/test_linkable_element_set.py +++ b/tests/semantics/model/semantics/test_linkable_element_set.py @@ -20,16 +20,15 @@ TimeDimensionReference, ) from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from more_itertools import bucket - -from metricflow.semantics.model.semantics.linkable_element import ( +from metricflow_semantics.model.semantics.linkable_element import ( LinkableDimension, LinkableElementProperty, LinkableEntity, LinkableMetric, SemanticModelJoinPathElement, ) -from metricflow.semantics.model.semantics.linkable_element_set import LinkableElementSet +from metricflow_semantics.model.semantics.linkable_element_set import LinkableElementSet +from more_itertools import bucket AMBIGUOUS_NAME = "ambiguous" # Common references diff --git a/tests/semantics/model/semantics/test_linkable_spec_resolver.py b/tests/semantics/model/semantics/test_linkable_spec_resolver.py index 637e8fb44b..febd9e8b66 100644 --- a/tests/semantics/model/semantics/test_linkable_spec_resolver.py +++ b/tests/semantics/model/semantics/test_linkable_spec_resolver.py @@ -10,17 +10,17 @@ MetricReference, SemanticModelReference, ) - -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.model.semantics.linkable_element import ( +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.model.semantics.linkable_element import ( LinkableElementProperty, SemanticModelJoinPath, SemanticModelJoinPathElement, ) -from metricflow.semantics.model.semantics.linkable_spec_resolver import ( +from metricflow_semantics.model.semantics.linkable_spec_resolver import ( ValidLinkableSpecResolver, ) -from metricflow.semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS +from metricflow_semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS + from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_spec_set_snapshot_equal diff --git a/tests/semantics/model/semantics/test_semantic_model_join_evaluator.py b/tests/semantics/model/semantics/test_semantic_model_join_evaluator.py index de5ab789c6..03d81e57fa 100644 --- a/tests/semantics/model/semantics/test_semantic_model_join_evaluator.py +++ b/tests/semantics/model/semantics/test_semantic_model_join_evaluator.py @@ -5,14 +5,14 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.protocols.entity import EntityType from dbt_semantic_interfaces.references import EntityReference, SemanticModelReference - -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.model.semantics.semantic_model_join_evaluator import ( +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.model.semantics.semantic_model_join_evaluator import ( SemanticModelEntityJoin, SemanticModelEntityJoinType, SemanticModelJoinEvaluator, SemanticModelLink, ) + from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests/semantics/model/test_data_warehouse_tasks.py b/tests/semantics/model/test_data_warehouse_tasks.py index 3409945240..4b2aedccab 100644 --- a/tests/semantics/model/test_data_warehouse_tasks.py +++ b/tests/semantics/model/test_data_warehouse_tasks.py @@ -14,9 +14,9 @@ from dbt_semantic_interfaces.test_utils import semantic_model_with_guaranteed_meta from dbt_semantic_interfaces.transformations.semantic_manifest_transformer import PydanticSemanticManifestTransformer from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.validation.data_warehouse_model_validator import ( DataWarehouseModelValidator, DataWarehouseTaskBuilder, diff --git a/tests/semantics/model/test_semantic_model_container.py b/tests/semantics/model/test_semantic_model_container.py index c636888522..4b66502740 100644 --- a/tests/semantics/model/test_semantic_model_container.py +++ b/tests/semantics/model/test_semantic_model_container.py @@ -6,10 +6,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.references import EntityReference, MeasureReference, MetricReference +from metricflow_semantics.model.semantics.linkable_element import LinkableElementProperty +from metricflow_semantics.model.semantics.metric_lookup import MetricLookup +from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from metricflow.semantics.model.semantics.linkable_element import LinkableElementProperty -from metricflow.semantics.model.semantics.metric_lookup import MetricLookup -from metricflow.semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_object_snapshot_equal diff --git a/tests/semantics/model/test_where_filter_spec.py b/tests/semantics/model/test_where_filter_spec.py index 5f459dabee..1bca3a0fb9 100644 --- a/tests/semantics/model/test_where_filter_spec.py +++ b/tests/semantics/model/test_where_filter_spec.py @@ -23,19 +23,18 @@ ) from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity - -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( CallParameterSet, FilterSpecResolution, FilterSpecResolutionLookUp, ResolvedSpecLookUpKey, ) -from metricflow.semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath -from metricflow.semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath +from metricflow_semantics.query.issues.issues_base import MetricFlowQueryResolutionIssueSet +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, @@ -44,7 +43,8 @@ TimeDimensionSpec, WhereFilterSpec, ) -from metricflow.semantics.specs.where_filter_transform import WhereSpecFactory +from metricflow_semantics.specs.where_filter_transform import WhereSpecFactory + from tests.semantics.specs.conftest import EXAMPLE_FILTER_LOCATION logger = logging.getLogger(__name__) diff --git a/tests/semantics/naming/conftest.py b/tests/semantics/naming/conftest.py index 7a4e410b0c..e4862d5059 100644 --- a/tests/semantics/naming/conftest.py +++ b/tests/semantics/naming/conftest.py @@ -6,14 +6,14 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart - -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, LinkableInstanceSpec, TimeDimensionSpec, ) + from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR diff --git a/tests/semantics/naming/test_dunder_naming_scheme.py b/tests/semantics/naming/test_dunder_naming_scheme.py index 91d4273b16..4d0b4fdb11 100644 --- a/tests/semantics/naming/test_dunder_naming_scheme.py +++ b/tests/semantics/naming/test_dunder_naming_scheme.py @@ -6,9 +6,9 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart +from metricflow_semantics.naming.dunder_scheme import DunderNamingScheme +from metricflow_semantics.specs.spec_classes import DimensionSpec, EntitySpec, LinkableInstanceSpec, TimeDimensionSpec -from metricflow.semantics.naming.dunder_scheme import DunderNamingScheme -from metricflow.semantics.specs.spec_classes import DimensionSpec, EntitySpec, LinkableInstanceSpec, TimeDimensionSpec from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR diff --git a/tests/semantics/naming/test_metric_name_scheme.py b/tests/semantics/naming/test_metric_name_scheme.py index 1540e0795c..6912c306a2 100644 --- a/tests/semantics/naming/test_metric_name_scheme.py +++ b/tests/semantics/naming/test_metric_name_scheme.py @@ -3,9 +3,8 @@ from typing import Sequence import pytest - -from metricflow.semantics.naming.metric_scheme import MetricNamingScheme -from metricflow.semantics.specs.spec_classes import DimensionSpec, InstanceSpec, MetricSpec +from metricflow_semantics.naming.metric_scheme import MetricNamingScheme +from metricflow_semantics.specs.spec_classes import DimensionSpec, InstanceSpec, MetricSpec @pytest.fixture(scope="session") diff --git a/tests/semantics/naming/test_object_builder_naming_scheme.py b/tests/semantics/naming/test_object_builder_naming_scheme.py index 5bd93372ec..0488773b3f 100644 --- a/tests/semantics/naming/test_object_builder_naming_scheme.py +++ b/tests/semantics/naming/test_object_builder_naming_scheme.py @@ -6,15 +6,15 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart - -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, LinkableInstanceSpec, TimeDimensionSpec, ) + from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR diff --git a/tests/semantics/query/group_by_item/conftest.py b/tests/semantics/query/group_by_item/conftest.py index d276baa290..9da0958cb1 100644 --- a/tests/semantics/query/group_by_item/conftest.py +++ b/tests/semantics/query/group_by_item/conftest.py @@ -10,12 +10,12 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.protocols import WhereFilterIntersection from dbt_semantic_interfaces.references import MetricReference +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow_semantics.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.semantics.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId diff --git a/tests/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py b/tests/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py index 784dbb4415..58cb64d428 100644 --- a/tests/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py +++ b/tests/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py @@ -19,18 +19,18 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference from dbt_semantic_interfaces.transformations.transform_rule import SemanticManifestTransformRule - -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( DefaultWhereFilterPatternFactory, ) -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ) -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_resolver import WhereFilterSpecResolver -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_resolver import WhereFilterSpecResolver +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag + from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.semantics.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform from tests.semantics.model.modify.modify_manifest import modify_manifest diff --git a/tests/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py b/tests/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py index ef1493305f..c2cc2afd65 100644 --- a/tests/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py +++ b/tests/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py @@ -5,9 +5,9 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests/semantics/query/group_by_item/test_available_group_by_items.py b/tests/semantics/query/group_by_item/test_available_group_by_items.py index 080ee7715d..37260ba0cf 100644 --- a/tests/semantics/query/group_by_item/test_available_group_by_items.py +++ b/tests/semantics/query/group_by_item/test_available_group_by_items.py @@ -5,11 +5,11 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow_semantics.specs.spec_classes import LinkableSpecSet -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.semantics.specs.spec_classes import LinkableSpecSet from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_linkable_spec_set_snapshot_equal diff --git a/tests/semantics/query/group_by_item/test_matching_item_for_filters.py b/tests/semantics/query/group_by_item/test_matching_item_for_filters.py index 8f28287286..92042f1374 100644 --- a/tests/semantics/query/group_by_item/test_matching_item_for_filters.py +++ b/tests/semantics/query/group_by_item/test_matching_item_for_filters.py @@ -6,12 +6,12 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_object_snapshot_equal diff --git a/tests/semantics/query/group_by_item/test_matching_item_for_querying.py b/tests/semantics/query/group_by_item/test_matching_item_for_querying.py index c4ae947019..06a0147a02 100644 --- a/tests/semantics/query/group_by_item/test_matching_item_for_querying.py +++ b/tests/semantics/query/group_by_item/test_matching_item_for_querying.py @@ -8,15 +8,15 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference - -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.naming.naming_scheme import QueryItemNamingScheme -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver -from metricflow.semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from metricflow.semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver +from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) + from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests.snapshot_utils import assert_object_snapshot_equal diff --git a/tests/semantics/query/test_ambiguous_entity_path.py b/tests/semantics/query/test_ambiguous_entity_path.py index dab5fc4d07..220f32d6f0 100644 --- a/tests/semantics/query/test_ambiguous_entity_path.py +++ b/tests/semantics/query/test_ambiguous_entity_path.py @@ -4,13 +4,13 @@ import pytest from _pytest.fixtures import FixtureRequest - -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( DefaultWhereFilterPatternFactory, ) -from metricflow.semantics.query.query_exceptions import InvalidQueryException -from metricflow.semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.query.query_exceptions import InvalidQueryException +from metricflow_semantics.query.query_parser import MetricFlowQueryParser + from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.snapshot_utils import assert_object_snapshot_equal, assert_str_snapshot_equal diff --git a/tests/semantics/query/test_query_parser.py b/tests/semantics/query/test_query_parser.py index 25d2aa206b..65cddd5113 100644 --- a/tests/semantics/query/test_query_parser.py +++ b/tests/semantics/query/test_query_parser.py @@ -13,24 +13,24 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator - -from metricflow.semantics.filters.time_constraint import TimeRangeConstraint -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.query.query_exceptions import InvalidQueryException -from metricflow.semantics.query.query_parser import MetricFlowQueryParser -from metricflow.semantics.specs.query_param_implementations import ( +from metricflow_semantics.filters.time_constraint import TimeRangeConstraint +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.query_exceptions import InvalidQueryException +from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.specs.query_param_implementations import ( DimensionOrEntityParameter, MetricParameter, OrderByParameter, TimeDimensionParameter, ) -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, MetricSpec, OrderBySpec, TimeDimensionSpec, ) + from tests.semantics.model.example_project_configuration import EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE from tests.time.metric_time_dimension import MTD diff --git a/tests/semantics/query/test_suggestions.py b/tests/semantics/query/test_suggestions.py index b664737e51..8e493c8e38 100644 --- a/tests/semantics/query/test_suggestions.py +++ b/tests/semantics/query/test_suggestions.py @@ -11,11 +11,11 @@ from dbt_semantic_interfaces.implementations.semantic_manifest import PydanticSemanticManifest from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.query_exceptions import InvalidQueryException +from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from metricflow.semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow.semantics.query.query_exceptions import InvalidQueryException -from metricflow.semantics.query.query_parser import MetricFlowQueryParser from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.semantics.model.modify.modify_manifest import modify_manifest from tests.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform diff --git a/tests/semantics/specs/conftest.py b/tests/semantics/specs/conftest.py index 061ab20d1b..c5d20ec3a2 100644 --- a/tests/semantics/specs/conftest.py +++ b/tests/semantics/specs/conftest.py @@ -1,7 +1,6 @@ from __future__ import annotations from dbt_semantic_interfaces.references import MetricReference - -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_location import WhereFilterLocation EXAMPLE_FILTER_LOCATION = WhereFilterLocation.for_metric(MetricReference("example_metric")) diff --git a/tests/semantics/specs/patterns/test_entity_link_pattern.py b/tests/semantics/specs/patterns/test_entity_link_pattern.py index 1ff6041bf9..ee4d54dbfa 100644 --- a/tests/semantics/specs/patterns/test_entity_link_pattern.py +++ b/tests/semantics/specs/patterns/test_entity_link_pattern.py @@ -9,19 +9,19 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart - -from metricflow.semantics.specs.patterns.entity_link_pattern import ( +from metricflow_semantics.specs.patterns.entity_link_pattern import ( EntityLinkPattern, EntityLinkPatternParameterSet, ParameterSetField, ) -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, LinkableInstanceSpec, TimeDimensionSpec, ) + from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR logger = logging.getLogger(__name__) diff --git a/tests/semantics/specs/patterns/test_typed_patterns.py b/tests/semantics/specs/patterns/test_typed_patterns.py index 17e50270e0..4c16d8f016 100644 --- a/tests/semantics/specs/patterns/test_typed_patterns.py +++ b/tests/semantics/specs/patterns/test_typed_patterns.py @@ -18,14 +18,13 @@ ) from dbt_semantic_interfaces.type_enums import TimeGranularity from dbt_semantic_interfaces.type_enums.date_part import DatePart - -from metricflow.semantics.specs.patterns.typed_patterns import ( +from metricflow_semantics.specs.patterns.typed_patterns import ( DimensionPattern, EntityPattern, GroupByMetricPattern, TimeDimensionPattern, ) -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntitySpec, GroupByMetricSpec, diff --git a/tests/semantics/specs/test_time_dimension_spec.py b/tests/semantics/specs/test_time_dimension_spec.py index 67d4343b92..7bcba39570 100644 --- a/tests/semantics/specs/test_time_dimension_spec.py +++ b/tests/semantics/specs/test_time_dimension_spec.py @@ -4,8 +4,7 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums import TimeGranularity - -from metricflow.semantics.specs.spec_classes import TimeDimensionSpec, TimeDimensionSpecField +from metricflow_semantics.specs.spec_classes import TimeDimensionSpec, TimeDimensionSpecField logger = logging.getLogger(__name__) diff --git a/tests/semantics/specs/test_where_filter_entity.py b/tests/semantics/specs/test_where_filter_entity.py index 6d8312be79..e609d07f7d 100644 --- a/tests/semantics/specs/test_where_filter_entity.py +++ b/tests/semantics/specs/test_where_filter_entity.py @@ -1,14 +1,14 @@ from __future__ import annotations import pytest - -from metricflow.semantics.errors.error_classes import InvalidQuerySyntax -from metricflow.semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( +from metricflow_semantics.errors.error_classes import InvalidQuerySyntax +from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_lookup import ( FilterSpecResolutionLookUp, ) -from metricflow.semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow.semantics.specs.rendered_spec_tracker import RenderedSpecTracker -from metricflow.semantics.specs.where_filter_entity import WhereFilterEntity +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.rendered_spec_tracker import RenderedSpecTracker +from metricflow_semantics.specs.where_filter_entity import WhereFilterEntity + from tests.semantics.specs.conftest import EXAMPLE_FILTER_LOCATION diff --git a/tests/semantics/sql/test_bind_parameter_serialization.py b/tests/semantics/sql/test_bind_parameter_serialization.py index ea45dc243e..7d4d8b3953 100644 --- a/tests/semantics/sql/test_bind_parameter_serialization.py +++ b/tests/semantics/sql/test_bind_parameter_serialization.py @@ -2,8 +2,7 @@ import pytest from dbt_semantic_interfaces.dataclass_serialization import DataClassDeserializer, DataclassSerializer - -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameter, SqlBindParameters, SqlBindParameterValue +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameter, SqlBindParameters, SqlBindParameterValue @pytest.fixture diff --git a/tests/semantics/test_specs.py b/tests/semantics/test_specs.py index c44116ad5c..41ffb13ba7 100644 --- a/tests/semantics/test_specs.py +++ b/tests/semantics/test_specs.py @@ -4,8 +4,7 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity - -from metricflow.semantics.specs.spec_classes import ( +from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntityReference, EntitySpec, diff --git a/tests/snapshot_utils.py b/tests/snapshot_utils.py index 51eaceeea9..688d2787c3 100644 --- a/tests/snapshot_utils.py +++ b/tests/snapshot_utils.py @@ -6,16 +6,16 @@ import tabulate from _pytest.fixtures import FixtureRequest +from metricflow_semantics.dag.mf_dag import MetricFlowDag +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.semantics.linkable_spec_resolver import LinkableElementSet +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet +from metricflow_semantics.test_helpers import assert_snapshot_text_equal from metricflow.dataflow.dataflow_plan import DataflowPlan from metricflow.execution.execution_plan import ExecutionPlan from metricflow.protocols.sql_client import SqlClient, SqlEngine -from metricflow.semantics.dag.mf_dag import MetricFlowDag -from metricflow.semantics.mf_logging.pretty_print import mf_pformat -from metricflow.semantics.model.semantics.linkable_spec_resolver import LinkableElementSet -from metricflow.semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow.semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet -from metricflow.semantics.test_helpers import assert_snapshot_text_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker logger = logging.getLogger(__name__) diff --git a/tests/sql/compare_sql_plan.py b/tests/sql/compare_sql_plan.py index 79de37e733..191616454b 100644 --- a/tests/sql/compare_sql_plan.py +++ b/tests/sql/compare_sql_plan.py @@ -1,9 +1,9 @@ from __future__ import annotations from _pytest.fixtures import FixtureRequest +from metricflow_semantics.dag.mf_dag import DagId from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.dag.mf_dag import DagId from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer from metricflow.sql.sql_plan import SqlQueryPlan, SqlQueryPlanNode from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker diff --git a/tests/sql/optimizer/test_column_pruner.py b/tests/sql/optimizer/test_column_pruner.py index 69b9b450cd..01b076f53c 100644 --- a/tests/sql/optimizer/test_column_pruner.py +++ b/tests/sql/optimizer/test_column_pruner.py @@ -2,8 +2,8 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.sql.sql_join_type import SqlJoinType -from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.column_pruner import SqlColumnPrunerOptimizer from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer from metricflow.sql.sql_exprs import ( diff --git a/tests/sql/optimizer/test_rewriting_sub_query_reducer.py b/tests/sql/optimizer/test_rewriting_sub_query_reducer.py index 8a51f4d5fb..dcc38e946b 100644 --- a/tests/sql/optimizer/test_rewriting_sub_query_reducer.py +++ b/tests/sql/optimizer/test_rewriting_sub_query_reducer.py @@ -2,8 +2,8 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.sql.sql_join_type import SqlJoinType -from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.rewriting_sub_query_reducer import SqlRewritingSubQueryReducer from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, diff --git a/tests/sql/optimizer/test_sub_query_reducer.py b/tests/sql/optimizer/test_sub_query_reducer.py index 8bb5952259..39246bb408 100644 --- a/tests/sql/optimizer/test_sub_query_reducer.py +++ b/tests/sql/optimizer/test_sub_query_reducer.py @@ -2,8 +2,8 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.sql.sql_join_type import SqlJoinType -from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.sub_query_reducer import SqlSubQueryReducer from metricflow.sql.sql_exprs import ( SqlColumnReference, diff --git a/tests/sql/optimizer/test_table_alias_simplifier.py b/tests/sql/optimizer/test_table_alias_simplifier.py index 232c8b6be5..e433caac05 100644 --- a/tests/sql/optimizer/test_table_alias_simplifier.py +++ b/tests/sql/optimizer/test_table_alias_simplifier.py @@ -2,8 +2,8 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.sql.sql_join_type import SqlJoinType -from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.table_alias_simplifier import SqlTableAliasSimplifier from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer from metricflow.sql.sql_exprs import ( diff --git a/tests/sql/test_sql_plan_render.py b/tests/sql/test_sql_plan_render.py index e8c259e027..e425112b0d 100644 --- a/tests/sql/test_sql_plan_render.py +++ b/tests/sql/test_sql_plan_render.py @@ -5,9 +5,9 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.sql_exprs import ( SqlAggregateFunctionExpression, SqlColumnReference, diff --git a/tests/sql_clients/test_date_time_operations.py b/tests/sql_clients/test_date_time_operations.py index 9387214501..f3fdc89c4c 100644 --- a/tests/sql_clients/test_date_time_operations.py +++ b/tests/sql_clients/test_date_time_operations.py @@ -22,9 +22,9 @@ import pandas as pd import pytest from dbt_semantic_interfaces.type_enums.date_part import DatePart +from metricflow_semantics.time.time_granularity import TimeGranularity from metricflow.protocols.sql_client import SqlClient -from metricflow.semantics.time.time_granularity import TimeGranularity from metricflow.sql.sql_exprs import ( SqlCastToTimestampExpression, SqlDateTruncExpression, diff --git a/tests/sql_clients/test_sql_client.py b/tests/sql_clients/test_sql_client.py index f9955980a8..4ec750b7bf 100644 --- a/tests/sql_clients/test_sql_client.py +++ b/tests/sql_clients/test_sql_client.py @@ -5,10 +5,10 @@ import pandas as pd import pytest +from metricflow_semantics.random_id import random_id +from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.protocols.sql_client import SqlClient, SqlEngine -from metricflow.semantics.random_id import random_id -from metricflow.semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration diff --git a/tests/table_snapshot/table_snapshots.py b/tests/table_snapshot/table_snapshots.py index 7d6d208d9e..0329939fb5 100644 --- a/tests/table_snapshot/table_snapshots.py +++ b/tests/table_snapshot/table_snapshots.py @@ -14,8 +14,8 @@ import yaml from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.implementations.base import FrozenBaseModel +from metricflow_semantics.specs.spec_classes import hash_items -from metricflow.semantics.specs.spec_classes import hash_items from metricflow.sql.sql_table import SqlTable from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods diff --git a/tests/table_snapshot/test_table_snapshots.py b/tests/table_snapshot/test_table_snapshots.py index 5970051fcc..bd4ccf8bac 100644 --- a/tests/table_snapshot/test_table_snapshots.py +++ b/tests/table_snapshot/test_table_snapshots.py @@ -6,9 +6,9 @@ import pandas as pd import pytest from dbt_semantic_interfaces.test_utils import as_datetime +from metricflow_semantics.random_id import random_id from metricflow.protocols.sql_client import SqlEngine -from metricflow.semantics.random_id import random_id from tests.compare_df import assert_dataframes_equal from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods diff --git a/tests/test_instance_serialization.py b/tests/test_instance_serialization.py index c1748a0011..853b9428bb 100644 --- a/tests/test_instance_serialization.py +++ b/tests/test_instance_serialization.py @@ -5,8 +5,8 @@ import pytest from dbt_semantic_interfaces.dataclass_serialization import DataClassDeserializer, DataclassSerializer +from metricflow_semantics.instances import InstanceSet -from metricflow.semantics.instances import InstanceSet from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup logger = logging.getLogger(__name__) From 51431b226f4849b1714453d60b273c30fdc91338 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 00:38:51 -0700 Subject: [PATCH 44/80] Add `tests_metricflow_semantics`. --- tests_metricflow_semantics/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests_metricflow_semantics/__init__.py diff --git a/tests_metricflow_semantics/__init__.py b/tests_metricflow_semantics/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From 9173de788ed669e43d4e7a7799f5deff1fbbaf36 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 00:43:39 -0700 Subject: [PATCH 45/80] Update `snapshot_path_prefix` to handle new test directories. --- metricflow-semantics/metricflow_semantics/test_helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metricflow-semantics/metricflow_semantics/test_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers.py index 8bf906dc9a..28d67e80d7 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers.py @@ -170,7 +170,7 @@ def snapshot_path_prefix( # Default to where this is defined, but use more appropriate directories if found. test_directory_root_index = -1 for i, path_item in enumerate(test_file_path_items): - if path_item in ("tests", "metricflow"): + if path_item in ("tests_metricflow", "tests_metricflow_semantics", "metricflow"): test_directory_root_index = i + 1 path_to_store_snapshots = os.sep.join(test_file_path_items[:test_directory_root_index]) From f88ad4e42f133288e1a041193c1f63ffe48e0e09 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 00:58:40 -0700 Subject: [PATCH 46/80] Add `py.typed` for `metricflow_semantics`. --- metricflow-semantics/metricflow_semantics/py.typed | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 metricflow-semantics/metricflow_semantics/py.typed diff --git a/metricflow-semantics/metricflow_semantics/py.typed b/metricflow-semantics/metricflow_semantics/py.typed new file mode 100644 index 0000000000..e69de29bb2 From be48ed5525ba2a44427ef14e42631ff4546024e2 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 01:13:51 -0700 Subject: [PATCH 47/80] Move fixtures from `setup_fixtures.py` to `sql_client_fixtures.py`. --- tests/fixtures/setup_fixtures.py | 43 ------------------------ tests/fixtures/sql_client_fixtures.py | 47 ++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 44 deletions(-) diff --git a/tests/fixtures/setup_fixtures.py b/tests/fixtures/setup_fixtures.py index 7495dfa2a5..21b8f297cf 100644 --- a/tests/fixtures/setup_fixtures.py +++ b/tests/fixtures/setup_fixtures.py @@ -3,12 +3,10 @@ import datetime import logging import os -import warnings from pathlib import Path import _pytest.config import pytest -import sqlalchemy.util from _pytest.fixtures import FixtureRequest from metricflow_semantics.random_id import random_id from metricflow_semantics.test_helpers import ( @@ -165,44 +163,3 @@ def dbt_project_dir() -> str: This is necessary for configuring both the dbt adapter for integration tests and the project location for CLI tests. """ return os.path.join(os.path.dirname(__file__), Path("dbt_projects", "metricflow_testing")) - - -@pytest.fixture(scope="session", autouse=True) -def warn_user_about_slow_tests_without_parallelism( # noqa: D103 - request: FixtureRequest, - mf_test_configuration: MetricFlowTestConfiguration, -) -> None: - worker_count_env_var = os.environ.get("PYTEST_XDIST_WORKER_COUNT", "1") - try: - num_workers = int(worker_count_env_var) - except ValueError as e: - raise ValueError( - f"Could not convert environment variable PYTEST_XDIST_WORKER_COUNT to int! " - f"Value in environ was: {worker_count_env_var}" - ) from e - - num_items = len(request.session.items) - dialect = dialect_from_url(mf_test_configuration.sql_engine_url) - - # If already running in parallel or if there's not many test items, no need to print the warning. Picking 10/30 as - # the thresholds, but not much thought has been put into it. - if num_workers > 1 or num_items < 10: - return - - # Since DuckDB / Postgres is fast, use 30 as the threshold. - if (dialect is SqlDialect.DUCKDB or dialect is SqlDialect.POSTGRESQL) and num_items < 30: - return - - if num_items > 10: - warnings.warn( - f"This test session with {dialect.name} and {num_items} item(s) is running with {num_workers} worker(s). " - f'Consider using the pytest-xdist option "-n " to parallelize execution and speed ' - f"up the session." - ) - - -@pytest.fixture(scope="session", autouse=True) -def disable_sql_alchemy_deprecation_warning() -> None: - """Since MF is tied to using SQLAlchemy 1.x.x due to the Snowflake connector, silence 2.0 deprecation warnings.""" - # Seeing 'error: Module has no attribute "SILENCE_UBER_WARNING"' in the type checker, but this seems to work. - sqlalchemy.util.deprecations.SILENCE_UBER_WARNING = True # type:ignore diff --git a/tests/fixtures/sql_client_fixtures.py b/tests/fixtures/sql_client_fixtures.py index 6a15a3c8c9..25f6d7ea2d 100644 --- a/tests/fixtures/sql_client_fixtures.py +++ b/tests/fixtures/sql_client_fixtures.py @@ -3,15 +3,19 @@ import json import logging import os +import warnings from typing import Generator import pytest import sqlalchemy +import sqlalchemy.util +from _pytest.fixtures import FixtureRequest from dbt.adapters.factory import get_adapter_by_type from dbt.cli.main import dbtRunner +from metricflow_semantics.test_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, dbt_project_dir, dialect_from_url +from tests.fixtures.setup_fixtures import dbt_project_dir, dialect_from_url from tests.fixtures.sql_clients.adapter_backed_ddl_client import AdapterBackedDDLSqlClient from tests.fixtures.sql_clients.common_client import SqlDialect from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods @@ -216,3 +220,44 @@ def sql_client(ddl_sql_client: SqlClientWithDDLMethods) -> SqlClient: Unless the test case itself requires the DDL methods, this is the fixture we should use. """ return ddl_sql_client + + +@pytest.fixture(scope="session", autouse=True) +def warn_user_about_slow_tests_without_parallelism( # noqa: D103 + request: FixtureRequest, + mf_test_configuration: MetricFlowTestConfiguration, +) -> None: + worker_count_env_var = os.environ.get("PYTEST_XDIST_WORKER_COUNT", "1") + try: + num_workers = int(worker_count_env_var) + except ValueError as e: + raise ValueError( + f"Could not convert environment variable PYTEST_XDIST_WORKER_COUNT to int! " + f"Value in environ was: {worker_count_env_var}" + ) from e + + num_items = len(request.session.items) + dialect = dialect_from_url(mf_test_configuration.sql_engine_url) + + # If already running in parallel or if there's not many test items, no need to print the warning. Picking 10/30 as + # the thresholds, but not much thought has been put into it. + if num_workers > 1 or num_items < 10: + return + + # Since DuckDB / Postgres is fast, use 30 as the threshold. + if (dialect is SqlDialect.DUCKDB or dialect is SqlDialect.POSTGRESQL) and num_items < 30: + return + + if num_items > 10: + warnings.warn( + f"This test session with {dialect.name} and {num_items} item(s) is running with {num_workers} worker(s). " + f'Consider using the pytest-xdist option "-n " to parallelize execution and speed ' + f"up the session." + ) + + +@pytest.fixture(scope="session", autouse=True) +def disable_sql_alchemy_deprecation_warning() -> None: + """Since MF is tied to using SQLAlchemy 1.x.x due to the Snowflake connector, silence 2.0 deprecation warnings.""" + # Seeing 'error: Module has no attribute "SILENCE_UBER_WARNING"' in the type checker, but this seems to work. + sqlalchemy.util.deprecations.SILENCE_UBER_WARNING = True # type:ignore From d2094c097ccd8b45d924dd8d6f36754c8e52d86b Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 01:49:38 -0700 Subject: [PATCH 48/80] Rename tests -> tests_metricflow. --- tests/conftest.py | 11 ----------- {tests => tests_metricflow}/__init__.py | 0 {tests => tests_metricflow}/cli/__init__.py | 0 {tests => tests_metricflow}/cli/test_cli.py | 10 ++++++---- .../cli/test_custom_click_types.py | 0 {tests => tests_metricflow}/compare_df.py | 0 tests_metricflow/conftest.py | 11 +++++++++++ {tests => tests_metricflow}/dataflow/__init__.py | 0 .../dataflow/builder/__init__.py | 0 .../dataflow/builder/test_cyclic_join.py | 10 +++++----- .../dataflow/builder/test_dataflow_plan_builder.py | 8 ++++---- .../dataflow/builder/test_measure_additiveness.py | 0 .../dataflow/builder/test_node_data_set.py | 6 +++--- .../dataflow/builder/test_node_evaluator.py | 2 +- .../dataflow/optimizer/__init__.py | 0 .../dataflow/optimizer/source_scan/__init__.py | 0 .../optimizer/source_scan/test_cm_branch_combiner.py | 8 ++++---- .../source_scan/test_source_scan_optimizer.py | 6 +++--- .../dataflow/test_sql_column.py | 0 .../dataflow/test_sql_table.py | 0 {tests => tests_metricflow}/dataflow_plan_to_svg.py | 2 +- {tests => tests_metricflow}/dataset/__init__.py | 0 .../dataset/test_convert_semantic_model.py | 8 ++++---- {tests => tests_metricflow}/examples/__init__.py | 0 .../examples/test_node_sql.py | 0 {tests => tests_metricflow}/execution/__init__.py | 0 {tests => tests_metricflow}/execution/noop_task.py | 0 .../execution/test_sequential_executor.py | 2 +- {tests => tests_metricflow}/execution/test_tasks.py | 4 ++-- {tests => tests_metricflow}/fixtures/__init__.py | 0 {tests => tests_metricflow}/fixtures/cli_fixtures.py | 2 +- .../fixtures/dataflow_fixtures.py | 6 +++--- .../dbt_projects/metricflow_testing/.gitignore | 0 .../dbt_projects/metricflow_testing/.user.yml | 0 .../dbt_projects/metricflow_testing/README.md | 0 .../metricflow_testing/analyses/.gitkeep | 0 .../dbt_projects/metricflow_testing/dbt_project.yml | 0 .../dbt_projects/metricflow_testing/macros/.gitkeep | 0 .../models/example/my_first_dbt_model.sql | 0 .../models/example/my_second_dbt_model.sql | 0 .../metricflow_testing/models/example/schema.yml | 0 .../dbt_projects/metricflow_testing/profiles.yml | 0 .../dbt_projects/metricflow_testing/seeds/.gitkeep | 0 .../metricflow_testing/snapshots/.gitkeep | 0 .../dbt_projects/metricflow_testing/tests/.gitkeep | 0 {tests => tests_metricflow}/fixtures/id_fixtures.py | 0 .../fixtures/manifest_fixtures.py | 4 ++-- .../ambiguous_resolution_manifest/metrics.yaml | 0 .../project_configuration.yaml | 0 .../semantic_models/monthly_measures_source.yaml | 0 .../semantic_models/yearly_measures_source.yaml | 0 .../multiple_semantic_models_without_divider.yml | 0 .../project_configuration.yaml | 0 .../cyclic_join_manifest/listings_latest.yaml | 0 .../cyclic_join_manifest/listings_latest_cyclic.yaml | 0 .../cyclic_join_manifest/project_configuration.yaml | 0 .../project_configuration.yaml | 0 .../semantic_models/semantic_model1.yml | 0 .../metrics/bookings_cumulative.yaml | 0 .../metrics/bookings_last_month.yaml | 0 .../metrics/bookings_monthly_cumulative.yaml | 0 .../project_configuration.yaml | 0 .../semantic_models/bookings_monthly_source.yaml | 0 .../semantic_models/extended_bookings_source.yaml | 0 .../semantic_models/listings_extended_source.yaml | 0 .../join_types_manifest/bookings_source.yaml | 0 .../join_types_manifest/listings_source.yaml | 0 .../join_types_manifest/project_configuration.yaml | 0 .../multi_hop_join_manifest/account_month_txns.yaml | 0 .../multi_hop_join_manifest/bridge_table.yaml | 0 .../multi_hop_join_manifest/customer_other_data.yaml | 0 .../multi_hop_join_manifest/customer_table.yaml | 0 .../project_configuration.yaml | 0 .../multi_hop_join_manifest/third_hop_table.yaml | 0 .../non_sm_manifest/bookings_source.yaml | 0 .../non_sm_manifest/listings_latest.yaml | 0 .../non_sm_manifest/project_configuration.yaml | 0 .../account_month_txns.yaml | 0 .../bridge_table.yaml | 0 .../customer_other_data.yaml | 0 .../customer_table.yaml | 0 .../project_configuration.yaml | 0 .../third_hop_table.yaml | 0 .../scd_manifest/project_configuration.yaml | 0 .../scd_manifest/scd_accounts.yaml | 0 .../scd_manifest/scd_bookings.yaml | 0 .../scd_manifest/scd_companies.yaml | 0 .../scd_manifest/scd_listings.yaml | 0 .../scd_manifest/scd_lux_listings.yaml | 0 .../scd_manifest/scd_metrics.yaml | 0 .../scd_manifest/scd_users.yaml | 0 .../shared/project_configuration.yaml | 0 .../simple_manifest/metrics.yaml | 0 .../simple_manifest/project_configuration.yaml | 0 .../simple_manifest/saved_queries.yaml | 0 .../semantic_models/accounts_source.yaml | 0 .../semantic_models/bookings_source.yaml | 0 .../simple_manifest/semantic_models/buys_source.yaml | 0 .../simple_manifest/semantic_models/companies.yaml | 0 .../semantic_models/id_verifications.yaml | 0 .../semantic_models/listings_latest.yaml | 0 .../semantic_models/lux_listing_mapping.yaml | 0 .../simple_manifest/semantic_models/revenue.yaml | 0 .../semantic_models/user_sm_source.yaml | 0 .../semantic_models/users_latest.yaml | 0 .../semantic_models/views_source.yaml | 0 .../semantic_models/visits_source.yaml | 0 .../all_entity_measure_source.yaml | 0 .../entity_0_dimension_source.yaml | 0 .../entity_0_measure_source.yaml | 0 .../entity_1_and_entity_2_measure_source.yaml | 0 .../entity_1_dimension_source.yaml | 0 .../entity_1_measure_source.yaml | 0 .../entity_1_to_entity_0_mapping_source.yaml | 0 .../entity_2_to_entity_0_mapping_source.yaml | 0 .../simple_multi_hop_join_manifest/metrics.yaml | 0 .../project_configuration.yaml | 0 .../fixtures/setup_fixtures.py | 4 ++-- .../data_warehouse_validation_model/fct_animals.yaml | 0 .../extended_date_model/dim_listings_extended.yaml | 0 .../extended_date_model/fct_bookings_extended.yaml | 0 .../fct_bookings_extended_monthly.yaml | 0 .../multi_hop_join_model/account_month_txns.yaml | 0 .../multi_hop_join_model/bridge_table.yaml | 0 .../multi_hop_join_model/customer_other_data.yaml | 0 .../multi_hop_join_model/customer_table.yaml | 0 .../multi_hop_join_model/third_hop_table.yaml | 0 .../simple_model/dim_companies.yaml | 0 .../simple_model/dim_listings.yaml | 0 .../simple_model/dim_listings_latest.yaml | 0 .../simple_model/dim_lux_listing_id_mapping.yaml | 0 .../simple_model/dim_lux_listings.yaml | 0 .../simple_model/dim_primary_accounts.yaml | 0 .../simple_model/dim_users.yaml | 0 .../simple_model/dim_users_latest.yaml | 0 .../simple_model/fct_accounts.yaml | 0 .../simple_model/fct_bookings.yaml | 0 .../simple_model/fct_bookings_dt.yaml | 0 .../simple_model/fct_buys.yaml | 0 .../simple_model/fct_id_verifications.yaml | 0 .../simple_model/fct_revenue.yaml | 0 .../simple_model/fct_views.yaml | 0 .../simple_model/fct_visits.yaml | 0 .../all_entity_measure_table.yaml | 0 .../entity_0_dimension_table.yaml | 0 .../entity_0_measure_table.yaml | 0 .../entity_1_and_entity_2_measure_table.yaml | 0 .../entity_1_dimension_table.yaml | 0 .../entity_1_measure_table.yaml | 0 .../entity_1_to_entity_0_mapping_table.yaml | 0 .../entity_2_measure_table.yaml | 0 .../entity_2_to_entity_0_mapping_table.yaml | 0 .../time_spine_table/mf_time_spine.yaml | 0 .../fixtures/sql_client_fixtures.py | 8 ++++---- .../fixtures/sql_clients/__init__.py | 0 .../sql_clients/adapter_backed_ddl_client.py | 0 .../sql_clients/base_sql_client_implementation.py | 0 .../fixtures/sql_clients/common_client.py | 0 .../fixtures/sql_clients/ddl_sql_client.py | 0 .../fixtures/sql_clients/sqlalchemy_dialect.py | 2 +- {tests => tests_metricflow}/fixtures/sql_fixtures.py | 2 +- .../fixtures/table_fixtures.py | 8 ++++---- {tests => tests_metricflow}/generate_snapshots.py | 2 +- {tests => tests_metricflow}/inference/__init__.py | 0 .../inference/context/__init__.py | 0 .../inference/context/test_data_warehouse.py | 0 .../inference/context/test_snowflake.py | 0 .../inference/renderer/__init__.py | 0 .../inference/renderer/test_config_file.py | 0 .../inference/rule/__init__.py | 0 .../inference/rule/conftest.py | 0 .../inference/rule/test_defaults.py | 0 .../inference/rule/test_rules.py | 0 .../inference/solver/__init__.py | 0 .../inference/solver/test_weighted_tree.py | 0 {tests => tests_metricflow}/inference/test_models.py | 0 {tests => tests_metricflow}/integration/__init__.py | 0 .../integration/configured_test_case.py | 0 {tests => tests_metricflow}/integration/conftest.py | 2 +- .../integration/query_output/__init__.py | 0 .../query_output/test_cumulative_metrics.py | 6 +++--- .../query_output/test_fill_nulls_with_0.py | 6 +++--- .../query_output/test_metric_filter_output.py | 6 +++--- .../integration/query_output/test_offset_metrics.py | 6 +++--- .../integration/test_cases/itest_constraints.yaml | 0 .../test_cases/itest_conversion_metric.yaml | 0 .../test_cases/itest_cumulative_metric.yaml | 0 .../integration/test_cases/itest_dimensions.yaml | 0 .../test_cases/itest_dundered_identifiers.yaml | 0 .../integration/test_cases/itest_granularity.yaml | 0 .../integration/test_cases/itest_joins.yaml | 0 .../test_cases/itest_measure_aggregations.yaml | 0 .../test_cases/itest_measure_constraints.yaml | 0 .../itest_metric_queries_no_dimensions.yaml | 0 .../integration/test_cases/itest_metrics.yaml | 0 .../integration/test_cases/itest_multi_hop_join.yaml | 0 .../integration/test_cases/itest_order_limit.yaml | 0 .../integration/test_cases/itest_partitions.yaml | 0 .../integration/test_cases/itest_scd.yaml | 0 .../test_cases/itest_semi_additive_measure.yaml | 0 .../integration/test_cases/itest_simple.yaml | 0 .../integration/test_cases/itest_simple_non_sm.yaml | 0 .../integration/test_configured_cases.py | 6 +++--- .../integration/test_mf_engine.py | 6 +++--- .../integration/test_rendered_query.py | 6 +++--- .../plan_conversion/__init__.py | 0 .../plan_conversion/dataflow_to_sql/__init__.py | 0 .../test_conversion_metrics_to_sql.py | 4 ++-- .../dataflow_to_sql/test_distinct_values_to_sql.py | 4 ++-- .../test_metric_time_dimension_to_sql.py | 8 ++++---- .../plan_conversion/instance_converters/__init__.py | 0 ...create_select_columns_with_measures_aggregated.py | 2 +- .../test_create_validity_window_join_description.py | 2 +- .../plan_conversion/test_dataflow_to_execution.py | 4 ++-- .../plan_conversion/test_dataflow_to_sql_plan.py | 12 ++++++------ .../plan_conversion/test_time_spine.py | 0 .../populate_persistent_source_schemas.py | 2 +- {tests => tests_metricflow}/prototype_utils.py | 0 .../query_rendering/__init__.py | 0 .../query_rendering/compare_rendered_query.py | 6 +++--- .../test_cumulative_metric_rendering.py | 8 ++++---- .../query_rendering/test_derived_metric_rendering.py | 6 +++--- .../test_fill_nulls_with_rendering.py | 4 ++-- .../test_granularity_date_part_rendering.py | 4 ++-- .../query_rendering/test_metric_filter_rendering.py | 4 ++-- .../test_metric_time_without_metrics.py | 6 +++--- .../query_rendering/test_query_rendering.py | 6 +++--- .../test_time_spine_join_rendering.py | 4 ++-- {tests => tests_metricflow}/semantics/__init__.py | 0 .../semantics/collection_helpers/__init__.py | 0 .../semantics/collection_helpers/test_merger.py | 0 .../collection_helpers/test_pretty_print.py | 2 +- .../semantics/mf_logging/__init__.py | 0 .../semantics/mf_logging/test_dag_to_text.py | 0 .../semantics/model/__init__.py | 0 .../semantics/model/example_project_configuration.py | 0 .../semantics/model/modify/__init__.py | 0 .../model/modify/modify_input_measure_filter.py | 0 .../model/modify/modify_input_metric_filter.py | 0 .../semantics/model/modify/modify_manifest.py | 0 .../semantics/model/modify/modify_metric_filter.py | 0 .../semantics/model/semantics/__init__.py | 0 .../model/semantics/test_linkable_element_set.py | 0 .../model/semantics/test_linkable_spec_resolver.py | 4 ++-- .../semantics/test_semantic_model_join_evaluator.py | 2 +- .../semantics/model/test_data_warehouse_tasks.py | 4 ++-- .../semantics/model/test_semantic_model_container.py | 4 ++-- .../semantics/model/test_where_filter_spec.py | 2 +- .../semantics/naming/__init__.py | 0 .../semantics/naming/conftest.py | 2 +- .../semantics/naming/test_dunder_naming_scheme.py | 2 +- .../semantics/naming/test_metric_name_scheme.py | 0 .../naming/test_object_builder_naming_scheme.py | 2 +- .../semantics/query/__init__.py | 0 .../semantics/query/group_by_item/__init__.py | 0 .../group_by_item/ambiguous_resolution_query_id.py | 0 .../semantics/query/group_by_item/conftest.py | 4 ++-- .../group_by_item/filter_spec_resolution/__init__.py | 0 .../filter_spec_resolution/test_spec_lookup.py | 12 ++++++------ .../query/group_by_item/resolution_dag/__init__.py | 0 .../resolution_dag/test_resolution_dags.py | 6 +++--- .../group_by_item/test_available_group_by_items.py | 6 +++--- .../group_by_item/test_matching_item_for_filters.py | 6 +++--- .../group_by_item/test_matching_item_for_querying.py | 8 ++++---- .../semantics/query/test_ambiguous_entity_path.py | 4 ++-- .../semantics/query/test_query_parser.py | 6 ++++-- .../semantics/query/test_suggestions.py | 8 ++++---- .../semantics/specs/__init__.py | 0 .../semantics/specs/conftest.py | 0 .../semantics/specs/patterns/__init__.py | 0 .../specs/patterns/test_entity_link_pattern.py | 2 +- .../semantics/specs/patterns/test_typed_patterns.py | 0 .../semantics/specs/test_time_dimension_spec.py | 0 .../semantics/specs/test_where_filter_entity.py | 2 +- .../semantics/sql/__init__.py | 0 .../sql/test_bind_parameter_serialization.py | 0 {tests => tests_metricflow}/semantics/test_specs.py | 0 {tests => tests_metricflow}/snapshot_utils.py | 2 +- ...solves_to_shortest_entity_path_item__result_0.txt | 0 ...st_resolvable_ambiguous_entity_path__result_0.txt | 0 ...biguous_entity_path_due_to_mismatch__result_0.txt | 0 ...entity_path_due_to_multiple_matches__result_0.txt | 0 ..._items__accumulate_last_2_months_metric__set0.txt | 0 ...etric_with_different_parent_time_grains__set0.txt | 0 ...ved_metric_with_same_parent_time_grains__set0.txt | 0 ...ems__metrics_with_different_time_grains__set0.txt | 0 ...by_items__metrics_with_same_time_grains__set0.txt | 0 ...st_available_group_by_items__no_metrics__set0.txt | 0 ...available_group_by_items__simple_metric__set0.txt | 0 .../str/BigQuery/test_saved_query__cli_output.txt | 0 ...aved_query_with_cumulative_metric__cli_output.txt | 0 .../test_saved_query_with_limit__cli_output.txt | 0 .../test_saved_query_with_where__cli_output.txt | 0 .../str/Databricks/test_saved_query__cli_output.txt | 0 ...aved_query_with_cumulative_metric__cli_output.txt | 0 .../test_saved_query_with_limit__cli_output.txt | 0 .../test_saved_query_with_where__cli_output.txt | 0 .../str/DuckDB/test_saved_query__cli_output.txt | 0 ...aved_query_with_cumulative_metric__cli_output.txt | 0 .../test_saved_query_with_limit__cli_output.txt | 0 .../test_saved_query_with_where__cli_output.txt | 0 .../str/Postgres/test_saved_query__cli_output.txt | 0 ...aved_query_with_cumulative_metric__cli_output.txt | 0 .../test_saved_query_with_limit__cli_output.txt | 0 .../test_saved_query_with_where__cli_output.txt | 0 .../str/Redshift/test_saved_query__cli_output.txt | 0 ...aved_query_with_cumulative_metric__cli_output.txt | 0 .../test_saved_query_with_limit__cli_output.txt | 0 .../test_saved_query_with_where__cli_output.txt | 0 .../str/Snowflake/test_saved_query__cli_output.txt | 0 ...aved_query_with_cumulative_metric__cli_output.txt | 0 .../test_saved_query_with_limit__cli_output.txt | 0 .../test_saved_query_with_where__cli_output.txt | 0 .../str/Trino/test_saved_query__cli_output.txt | 0 ...aved_query_with_cumulative_metric__cli_output.txt | 0 .../test_saved_query_with_limit__cli_output.txt | 0 .../test_saved_query_with_where__cli_output.txt | 0 .../DataflowPlan/test_filter_combination__dfpo_0.xml | 0 .../test_read_sql_source_combination__dfpo_0.xml | 0 .../test_dont_prune_if_in_where__after_pruning.sql | 0 .../test_dont_prune_if_in_where__before_pruning.sql | 0 .../test_dont_prune_with_str_expr__after_pruning.sql | 0 ...test_dont_prune_with_str_expr__before_pruning.sql | 0 .../SqlQueryPlan/test_no_pruning__after_pruning.sql | 0 .../SqlQueryPlan/test_no_pruning__before_pruning.sql | 0 .../test_prune_distinct_select__after_pruning.sql | 0 .../test_prune_distinct_select__before_pruning.sql | 0 .../test_prune_from_source__after_pruning.sql | 0 .../test_prune_from_source__before_pruning.sql | 0 .../test_prune_grandparents__after_pruning.sql | 0 .../test_prune_grandparents__before_pruning.sql | 0 ...une_grandparents_in_join_query__after_pruning.sql | 0 ...ne_grandparents_in_join_query__before_pruning.sql | 0 .../test_prune_joined_source__after_pruning.sql | 0 .../test_prune_joined_source__before_pruning.sql | 0 .../test_prune_str_expr__after_pruning.sql | 0 .../test_prune_str_expr__before_pruning.sql | 0 .../test_prune_with_str_expr__after_pruning.sql | 0 .../test_prune_with_str_expr__before_pruning.sql | 0 ...test_conversion_count_with_no_group_by__plan0.sql | 0 ...rsion_count_with_no_group_by__plan0_optimized.sql | 0 ...oin_to_timespine_and_fill_nulls_with_0__plan0.sql | 0 ...espine_and_fill_nulls_with_0__plan0_optimized.sql | 0 .../BigQuery/test_conversion_rate__plan0.sql | 0 .../test_conversion_rate__plan0_optimized.sql | 0 ...nversion_rate_with_constant_properties__plan0.sql | 0 ...ate_with_constant_properties__plan0_optimized.sql | 0 .../test_conversion_rate_with_no_group_by__plan0.sql | 0 ...ersion_rate_with_no_group_by__plan0_optimized.sql | 0 .../test_conversion_rate_with_window__plan0.sql | 0 ..._conversion_rate_with_window__plan0_optimized.sql | 0 ...test_conversion_count_with_no_group_by__plan0.sql | 0 ...rsion_count_with_no_group_by__plan0_optimized.sql | 0 ...oin_to_timespine_and_fill_nulls_with_0__plan0.sql | 0 ...espine_and_fill_nulls_with_0__plan0_optimized.sql | 0 .../Databricks/test_conversion_rate__plan0.sql | 0 .../test_conversion_rate__plan0_optimized.sql | 0 ...nversion_rate_with_constant_properties__plan0.sql | 0 ...ate_with_constant_properties__plan0_optimized.sql | 0 .../test_conversion_rate_with_no_group_by__plan0.sql | 0 ...ersion_rate_with_no_group_by__plan0_optimized.sql | 0 .../test_conversion_rate_with_window__plan0.sql | 0 ..._conversion_rate_with_window__plan0_optimized.sql | 0 ...test_conversion_count_with_no_group_by__plan0.sql | 0 ...rsion_count_with_no_group_by__plan0_optimized.sql | 0 ...oin_to_timespine_and_fill_nulls_with_0__plan0.sql | 0 ...espine_and_fill_nulls_with_0__plan0_optimized.sql | 0 .../DuckDB/test_conversion_rate__plan0.sql | 0 .../DuckDB/test_conversion_rate__plan0_optimized.sql | 0 ...nversion_rate_with_constant_properties__plan0.sql | 0 ...ate_with_constant_properties__plan0_optimized.sql | 0 .../test_conversion_rate_with_no_group_by__plan0.sql | 0 ...ersion_rate_with_no_group_by__plan0_optimized.sql | 0 .../test_conversion_rate_with_window__plan0.sql | 0 ..._conversion_rate_with_window__plan0_optimized.sql | 0 ...test_conversion_count_with_no_group_by__plan0.sql | 0 ...rsion_count_with_no_group_by__plan0_optimized.sql | 0 ...oin_to_timespine_and_fill_nulls_with_0__plan0.sql | 0 ...espine_and_fill_nulls_with_0__plan0_optimized.sql | 0 .../Postgres/test_conversion_rate__plan0.sql | 0 .../test_conversion_rate__plan0_optimized.sql | 0 ...nversion_rate_with_constant_properties__plan0.sql | 0 ...ate_with_constant_properties__plan0_optimized.sql | 0 .../test_conversion_rate_with_no_group_by__plan0.sql | 0 ...ersion_rate_with_no_group_by__plan0_optimized.sql | 0 .../test_conversion_rate_with_window__plan0.sql | 0 ..._conversion_rate_with_window__plan0_optimized.sql | 0 ...test_conversion_count_with_no_group_by__plan0.sql | 0 ...rsion_count_with_no_group_by__plan0_optimized.sql | 0 ...oin_to_timespine_and_fill_nulls_with_0__plan0.sql | 0 ...espine_and_fill_nulls_with_0__plan0_optimized.sql | 0 .../Redshift/test_conversion_rate__plan0.sql | 0 .../test_conversion_rate__plan0_optimized.sql | 0 ...nversion_rate_with_constant_properties__plan0.sql | 0 ...ate_with_constant_properties__plan0_optimized.sql | 0 .../test_conversion_rate_with_no_group_by__plan0.sql | 0 ...ersion_rate_with_no_group_by__plan0_optimized.sql | 0 .../test_conversion_rate_with_window__plan0.sql | 0 ..._conversion_rate_with_window__plan0_optimized.sql | 0 ...test_conversion_count_with_no_group_by__plan0.sql | 0 ...rsion_count_with_no_group_by__plan0_optimized.sql | 0 ...oin_to_timespine_and_fill_nulls_with_0__plan0.sql | 0 ...espine_and_fill_nulls_with_0__plan0_optimized.sql | 0 .../Snowflake/test_conversion_rate__plan0.sql | 0 .../test_conversion_rate__plan0_optimized.sql | 0 ...nversion_rate_with_constant_properties__plan0.sql | 0 ...ate_with_constant_properties__plan0_optimized.sql | 0 .../test_conversion_rate_with_no_group_by__plan0.sql | 0 ...ersion_rate_with_no_group_by__plan0_optimized.sql | 0 .../test_conversion_rate_with_window__plan0.sql | 0 ..._conversion_rate_with_window__plan0_optimized.sql | 0 ...test_conversion_count_with_no_group_by__plan0.sql | 0 ...rsion_count_with_no_group_by__plan0_optimized.sql | 0 ...oin_to_timespine_and_fill_nulls_with_0__plan0.sql | 0 ...espine_and_fill_nulls_with_0__plan0_optimized.sql | 0 .../Trino/test_conversion_rate__plan0.sql | 0 .../Trino/test_conversion_rate__plan0_optimized.sql | 0 ...nversion_rate_with_constant_properties__plan0.sql | 0 ...ate_with_constant_properties__plan0_optimized.sql | 0 .../test_conversion_rate_with_no_group_by__plan0.sql | 0 ...ersion_rate_with_no_group_by__plan0_optimized.sql | 0 .../test_conversion_rate_with_window__plan0.sql | 0 ..._conversion_rate_with_window__plan0_optimized.sql | 0 ...test_conversion_count_with_no_group_by__plan0.xml | 0 ...oin_to_timespine_and_fill_nulls_with_0__plan0.xml | 0 .../SqlQueryPlan/test_conversion_rate__plan0.xml | 0 ...nversion_rate_with_constant_properties__plan0.xml | 0 .../test_conversion_rate_with_no_group_by__plan0.xml | 0 .../test_conversion_rate_with_window__plan0.xml | 0 .../test_convert_query_semantic_model__plan0.sql | 0 ...ert_table_semantic_model_with_measures__plan0.sql | 0 ..._table_semantic_model_without_measures__plan0.sql | 0 .../test_convert_query_semantic_model__plan0.sql | 0 ...ert_table_semantic_model_with_measures__plan0.sql | 0 ..._table_semantic_model_without_measures__plan0.sql | 0 .../test_convert_query_semantic_model__plan0.sql | 0 ...ert_table_semantic_model_with_measures__plan0.sql | 0 ..._table_semantic_model_without_measures__plan0.sql | 0 .../test_convert_query_semantic_model__plan0.sql | 0 ...ert_table_semantic_model_with_measures__plan0.sql | 0 ..._table_semantic_model_without_measures__plan0.sql | 0 .../test_convert_query_semantic_model__plan0.sql | 0 ...ert_table_semantic_model_with_measures__plan0.sql | 0 ..._table_semantic_model_without_measures__plan0.sql | 0 .../test_convert_query_semantic_model__plan0.sql | 0 ...ert_table_semantic_model_with_measures__plan0.sql | 0 ..._table_semantic_model_without_measures__plan0.sql | 0 .../test_convert_query_semantic_model__plan0.sql | 0 ...ert_table_semantic_model_with_measures__plan0.sql | 0 ..._table_semantic_model_without_measures__plan0.sql | 0 ...t_table_semantic_model_with_measures__result0.txt | 0 ...able_semantic_model_without_measures__result0.txt | 0 .../BigQuery/test_cumulative_metric__plan0.sql | 0 .../test_cumulative_metric__plan0_optimized.sql | 0 .../test_cumulative_metric_grain_to_date__plan0.sql | 0 ...ulative_metric_grain_to_date__plan0_optimized.sql | 0 .../BigQuery/test_cumulative_metric_month__plan0.sql | 0 ...test_cumulative_metric_month__plan0_optimized.sql | 0 .../BigQuery/test_cumulative_metric_no_ds__plan0.sql | 0 ...test_cumulative_metric_no_ds__plan0_optimized.sql | 0 .../test_cumulative_metric_no_window__plan0.sql | 0 ..._cumulative_metric_no_window__plan0_optimized.sql | 0 ..._metric_no_window_with_time_constraint__plan0.sql | 0 ..._window_with_time_constraint__plan0_optimized.sql | 0 ...ulative_metric_with_agg_time_dimension__plan0.sql | 0 ...tric_with_agg_time_dimension__plan0_optimized.sql | 0 ...metric_with_non_adjustable_time_filter__plan0.sql | 0 ...h_non_adjustable_time_filter__plan0_optimized.sql | 0 ...cumulative_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../Databricks/test_cumulative_metric__plan0.sql | 0 .../test_cumulative_metric__plan0_optimized.sql | 0 .../test_cumulative_metric_grain_to_date__plan0.sql | 0 ...ulative_metric_grain_to_date__plan0_optimized.sql | 0 .../test_cumulative_metric_month__plan0.sql | 0 ...test_cumulative_metric_month__plan0_optimized.sql | 0 .../test_cumulative_metric_no_ds__plan0.sql | 0 ...test_cumulative_metric_no_ds__plan0_optimized.sql | 0 .../test_cumulative_metric_no_window__plan0.sql | 0 ..._cumulative_metric_no_window__plan0_optimized.sql | 0 ..._metric_no_window_with_time_constraint__plan0.sql | 0 ..._window_with_time_constraint__plan0_optimized.sql | 0 ...ulative_metric_with_agg_time_dimension__plan0.sql | 0 ...tric_with_agg_time_dimension__plan0_optimized.sql | 0 ...metric_with_non_adjustable_time_filter__plan0.sql | 0 ...h_non_adjustable_time_filter__plan0_optimized.sql | 0 ...cumulative_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../DuckDB/test_cumulative_metric__plan0.sql | 0 .../test_cumulative_metric__plan0_optimized.sql | 0 .../test_cumulative_metric_grain_to_date__plan0.sql | 0 ...ulative_metric_grain_to_date__plan0_optimized.sql | 0 .../DuckDB/test_cumulative_metric_month__plan0.sql | 0 ...test_cumulative_metric_month__plan0_optimized.sql | 0 .../DuckDB/test_cumulative_metric_no_ds__plan0.sql | 0 ...test_cumulative_metric_no_ds__plan0_optimized.sql | 0 .../test_cumulative_metric_no_window__plan0.sql | 0 ..._cumulative_metric_no_window__plan0_optimized.sql | 0 ..._metric_no_window_with_time_constraint__plan0.sql | 0 ..._window_with_time_constraint__plan0_optimized.sql | 0 ...ulative_metric_with_agg_time_dimension__plan0.sql | 0 ...tric_with_agg_time_dimension__plan0_optimized.sql | 0 ...metric_with_non_adjustable_time_filter__plan0.sql | 0 ...h_non_adjustable_time_filter__plan0_optimized.sql | 0 ...cumulative_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../Postgres/test_cumulative_metric__plan0.sql | 0 .../test_cumulative_metric__plan0_optimized.sql | 0 .../test_cumulative_metric_grain_to_date__plan0.sql | 0 ...ulative_metric_grain_to_date__plan0_optimized.sql | 0 .../Postgres/test_cumulative_metric_month__plan0.sql | 0 ...test_cumulative_metric_month__plan0_optimized.sql | 0 .../Postgres/test_cumulative_metric_no_ds__plan0.sql | 0 ...test_cumulative_metric_no_ds__plan0_optimized.sql | 0 .../test_cumulative_metric_no_window__plan0.sql | 0 ..._cumulative_metric_no_window__plan0_optimized.sql | 0 ..._metric_no_window_with_time_constraint__plan0.sql | 0 ..._window_with_time_constraint__plan0_optimized.sql | 0 ...ulative_metric_with_agg_time_dimension__plan0.sql | 0 ...tric_with_agg_time_dimension__plan0_optimized.sql | 0 ...metric_with_non_adjustable_time_filter__plan0.sql | 0 ...h_non_adjustable_time_filter__plan0_optimized.sql | 0 ...cumulative_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../Redshift/test_cumulative_metric__plan0.sql | 0 .../test_cumulative_metric__plan0_optimized.sql | 0 .../test_cumulative_metric_grain_to_date__plan0.sql | 0 ...ulative_metric_grain_to_date__plan0_optimized.sql | 0 .../Redshift/test_cumulative_metric_month__plan0.sql | 0 ...test_cumulative_metric_month__plan0_optimized.sql | 0 .../Redshift/test_cumulative_metric_no_ds__plan0.sql | 0 ...test_cumulative_metric_no_ds__plan0_optimized.sql | 0 .../test_cumulative_metric_no_window__plan0.sql | 0 ..._cumulative_metric_no_window__plan0_optimized.sql | 0 ..._metric_no_window_with_time_constraint__plan0.sql | 0 ..._window_with_time_constraint__plan0_optimized.sql | 0 ...ulative_metric_with_agg_time_dimension__plan0.sql | 0 ...tric_with_agg_time_dimension__plan0_optimized.sql | 0 ...metric_with_non_adjustable_time_filter__plan0.sql | 0 ...h_non_adjustable_time_filter__plan0_optimized.sql | 0 ...cumulative_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../Snowflake/test_cumulative_metric__plan0.sql | 0 .../test_cumulative_metric__plan0_optimized.sql | 0 .../test_cumulative_metric_grain_to_date__plan0.sql | 0 ...ulative_metric_grain_to_date__plan0_optimized.sql | 0 .../test_cumulative_metric_month__plan0.sql | 0 ...test_cumulative_metric_month__plan0_optimized.sql | 0 .../test_cumulative_metric_no_ds__plan0.sql | 0 ...test_cumulative_metric_no_ds__plan0_optimized.sql | 0 .../test_cumulative_metric_no_window__plan0.sql | 0 ..._cumulative_metric_no_window__plan0_optimized.sql | 0 ..._metric_no_window_with_time_constraint__plan0.sql | 0 ..._window_with_time_constraint__plan0_optimized.sql | 0 ...ulative_metric_with_agg_time_dimension__plan0.sql | 0 ...tric_with_agg_time_dimension__plan0_optimized.sql | 0 ...metric_with_non_adjustable_time_filter__plan0.sql | 0 ...h_non_adjustable_time_filter__plan0_optimized.sql | 0 ...cumulative_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../Trino/test_cumulative_metric__plan0.sql | 0 .../test_cumulative_metric__plan0_optimized.sql | 0 .../test_cumulative_metric_grain_to_date__plan0.sql | 0 ...ulative_metric_grain_to_date__plan0_optimized.sql | 0 .../Trino/test_cumulative_metric_month__plan0.sql | 0 ...test_cumulative_metric_month__plan0_optimized.sql | 0 .../Trino/test_cumulative_metric_no_ds__plan0.sql | 0 ...test_cumulative_metric_no_ds__plan0_optimized.sql | 0 .../test_cumulative_metric_no_window__plan0.sql | 0 ..._cumulative_metric_no_window__plan0_optimized.sql | 0 ..._metric_no_window_with_time_constraint__plan0.sql | 0 ..._window_with_time_constraint__plan0_optimized.sql | 0 ...ulative_metric_with_agg_time_dimension__plan0.sql | 0 ...tric_with_agg_time_dimension__plan0_optimized.sql | 0 ...metric_with_non_adjustable_time_filter__plan0.sql | 0 ...h_non_adjustable_time_filter__plan0_optimized.sql | 0 ...cumulative_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 ...tric_with_non_adjustable_filter__query_output.txt | 0 ...grain_to_date_cumulative_metric__query_output.txt | 0 ...est_multiple_cumulative_metrics__query_output.txt | 0 ..._non_additive_cumulative_metric__query_output.txt | 0 .../test_simple_cumulative_metric__query_output.txt | 0 ...tric_with_non_adjustable_filter__query_output.txt | 0 ...grain_to_date_cumulative_metric__query_output.txt | 0 ...est_multiple_cumulative_metrics__query_output.txt | 0 ..._non_additive_cumulative_metric__query_output.txt | 0 .../test_simple_cumulative_metric__query_output.txt | 0 ...tric_with_non_adjustable_filter__query_output.txt | 0 ...grain_to_date_cumulative_metric__query_output.txt | 0 ...est_multiple_cumulative_metrics__query_output.txt | 0 ..._non_additive_cumulative_metric__query_output.txt | 0 .../test_simple_cumulative_metric__query_output.txt | 0 ...tric_with_non_adjustable_filter__query_output.txt | 0 ...grain_to_date_cumulative_metric__query_output.txt | 0 ...est_multiple_cumulative_metrics__query_output.txt | 0 ..._non_additive_cumulative_metric__query_output.txt | 0 .../test_simple_cumulative_metric__query_output.txt | 0 ...tric_with_non_adjustable_filter__query_output.txt | 0 ...grain_to_date_cumulative_metric__query_output.txt | 0 ...est_multiple_cumulative_metrics__query_output.txt | 0 ..._non_additive_cumulative_metric__query_output.txt | 0 .../test_simple_cumulative_metric__query_output.txt | 0 ...tric_with_non_adjustable_filter__query_output.txt | 0 ...grain_to_date_cumulative_metric__query_output.txt | 0 ...est_multiple_cumulative_metrics__query_output.txt | 0 ..._non_additive_cumulative_metric__query_output.txt | 0 .../test_simple_cumulative_metric__query_output.txt | 0 ...tric_with_non_adjustable_filter__query_output.txt | 0 ...grain_to_date_cumulative_metric__query_output.txt | 0 ...est_multiple_cumulative_metrics__query_output.txt | 0 ..._non_additive_cumulative_metric__query_output.txt | 0 .../test_simple_cumulative_metric__query_output.txt | 0 .../DataflowPlan/test_cyclic_join__dfp_0.xml | 0 .../str/BigQuery/test_build_metric_tasks__query0.sql | 0 .../Databricks/test_build_metric_tasks__query0.sql | 0 .../str/DuckDB/test_build_metric_tasks__query0.sql | 0 .../str/Postgres/test_build_metric_tasks__query0.sql | 0 .../str/Redshift/test_build_metric_tasks__query0.sql | 0 .../Snowflake/test_build_metric_tasks__query0.sql | 0 .../str/Trino/test_build_metric_tasks__query0.sql | 0 .../test_common_semantic_model__dfp_0.xml | 0 ...ic_no_window_or_grain_with_metric_time__dfp_0.xml | 0 ...no_window_or_grain_without_metric_time__dfp_0.xml | 0 .../test_cumulative_metric_with_window__dfp_0.xml | 0 .../test_derived_metric_offset_to_grain__dfp_0.xml | 0 .../test_derived_metric_offset_window__dfp_0.xml | 0 ...derived_metric_offset_with_granularity__dfp_0.xml | 0 .../test_derived_offset_cumulative_metric__dfp_0.xml | 0 .../test_dimensions_with_time_constraint__dfp_0.xml | 0 .../test_distinct_values_plan__dfp_0.xml | 0 .../test_distinct_values_plan_with_join__dfp_0.xml | 0 ...e_spine_if_no_time_dimension_requested__dfp_0.xml | 0 ...test_join_to_time_spine_derived_metric__dfp_0.xml | 0 .../test_join_to_time_spine_with_filters__dfp_0.xml | 0 ...st_join_to_time_spine_with_metric_time__dfp_0.xml | 0 ...oin_to_time_spine_with_non_metric_time__dfp_0.xml | 0 .../DataflowPlan/test_joined_plan__dfp_0.xml | 0 .../DataflowPlan/test_limit_rows_plan__dfp_0.xml | 0 .../test_measure_constraint_plan__dfp_0.xml | 0 ...re_constraint_with_reused_measure_plan__dfp_0.xml | 0 .../test_metric_in_metric_where_filter__dfp_0.xml | 0 .../test_metric_in_query_where_filter__dfp_0.xml | 0 .../DataflowPlan/test_metric_time_only__dfp_0.xml | 0 .../DataflowPlan/test_metric_time_quarter__dfp_0.xml | 0 ...test_metric_time_with_other_dimensions__dfp_0.xml | 0 .../DataflowPlan/test_min_max_metric_time__dfp_0.xml | 0 .../test_min_max_metric_time_week__dfp_0.xml | 0 .../test_min_max_only_categorical__dfp_0.xml | 0 .../DataflowPlan/test_min_max_only_time__dfp_0.xml | 0 .../test_min_max_only_time_year__dfp_0.xml | 0 ...ulti_semantic_model_ratio_metrics_plan__dfp_0.xml | 0 .../DataflowPlan/test_multihop_join_plan__dfp_0.xml | 0 .../test_multiple_metrics_plan__dfp_0.xml | 0 ...ested_derived_metric_with_outer_offset__dfp_0.xml | 0 ...and_query_have_different_granularities__dfp_0.xml | 0 ...and_query_have_different_granularities__dfp_0.xml | 0 .../DataflowPlan/test_order_by_plan__dfp_0.xml | 0 .../test_primary_entity_dimension__dfp_0.xml | 0 .../DataflowPlan/test_simple_plan__dfp_0.xml | 0 ...ngle_semantic_model_ratio_metrics_plan__dfp_0.xml | 0 .../test_where_constrained_plan__dfp_0.xml | 0 ..._where_constrained_plan_time_dimension__dfp_0.xml | 0 ..._constrained_with_common_linkable_plan__dfp_0.xml | 0 .../BigQuery/test_combined_metrics_plan__ep_0.xml | 0 .../BigQuery/test_joined_plan__ep_0.xml | 0 .../BigQuery/test_multihop_joined_plan__ep_0.xml | 0 .../test_small_combined_metrics_plan__ep_0.xml | 0 .../Databricks/test_combined_metrics_plan__ep_0.xml | 0 .../Databricks/test_joined_plan__ep_0.xml | 0 .../Databricks/test_multihop_joined_plan__ep_0.xml | 0 .../test_small_combined_metrics_plan__ep_0.xml | 0 .../DuckDB/test_combined_metrics_plan__ep_0.xml | 0 .../ExecutionPlan/DuckDB/test_joined_plan__ep_0.xml | 0 .../DuckDB/test_multihop_joined_plan__ep_0.xml | 0 .../test_small_combined_metrics_plan__ep_0.xml | 0 .../Postgres/test_combined_metrics_plan__ep_0.xml | 0 .../Postgres/test_joined_plan__ep_0.xml | 0 .../Postgres/test_multihop_joined_plan__ep_0.xml | 0 .../test_small_combined_metrics_plan__ep_0.xml | 0 .../Redshift/test_combined_metrics_plan__ep_0.xml | 0 .../Redshift/test_joined_plan__ep_0.xml | 0 .../Redshift/test_multihop_joined_plan__ep_0.xml | 0 .../test_small_combined_metrics_plan__ep_0.xml | 0 .../Snowflake/test_combined_metrics_plan__ep_0.xml | 0 .../Snowflake/test_joined_plan__ep_0.xml | 0 .../Snowflake/test_multihop_joined_plan__ep_0.xml | 0 .../test_small_combined_metrics_plan__ep_0.xml | 0 .../Trino/test_combined_metrics_plan__ep_0.xml | 0 .../ExecutionPlan/Trino/test_joined_plan__ep_0.xml | 0 .../Trino/test_multihop_joined_plan__ep_0.xml | 0 .../Trino/test_small_combined_metrics_plan__ep_0.xml | 0 .../test_compute_metrics_node_simple_expr__plan0.xml | 0 ...o_time_spine_node_with_offset_to_grain__plan0.xml | 0 ..._to_time_spine_node_with_offset_window__plan0.xml | 0 ...join_to_time_spine_node_without_offset__plan0.xml | 0 .../BigQuery/test_combine_output_node__plan0.sql | 0 .../test_combine_output_node__plan0_optimized.sql | 0 .../BigQuery/test_compute_metrics_node__plan0.sql | 0 .../test_compute_metrics_node__plan0_optimized.sql | 0 ...de_ratio_from_multiple_semantic_models__plan0.sql | 0 ...rom_multiple_semantic_models__plan0_optimized.sql | 0 ..._node_ratio_from_single_semantic_model__plan0.sql | 0 ...o_from_single_semantic_model__plan0_optimized.sql | 0 .../test_compute_metrics_node_simple_expr__plan0.sql | 0 ...ute_metrics_node_simple_expr__plan0_optimized.sql | 0 .../test_constrain_time_range_node__plan0.sql | 0 ...st_constrain_time_range_node__plan0_optimized.sql | 0 ...dimension_with_joined_where_constraint__plan0.sql | 0 ...with_joined_where_constraint__plan0_optimized.sql | 0 .../test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 .../BigQuery/test_filter_node__plan0.sql | 0 .../BigQuery/test_filter_node__plan0_optimized.sql | 0 ...test_filter_with_where_constraint_node__plan0.sql | 0 ...r_with_where_constraint_node__plan0_optimized.sql | 0 ...o_time_spine_node_with_offset_to_grain__plan0.sql | 0 ...ne_node_with_offset_to_grain__plan0_optimized.sql | 0 ..._to_time_spine_node_with_offset_window__plan0.sql | 0 ...pine_node_with_offset_window__plan0_optimized.sql | 0 ...join_to_time_spine_node_without_offset__plan0.sql | 0 ...me_spine_node_without_offset__plan0_optimized.sql | 0 .../test_measure_aggregation_node__plan0.sql | 0 ...est_measure_aggregation_node__plan0_optimized.sql | 0 .../BigQuery/test_multi_join_node__plan0.sql | 0 .../test_multi_join_node__plan0_optimized.sql | 0 .../BigQuery/test_order_by_node__plan0.sql | 0 .../BigQuery/test_order_by_node__plan0_optimized.sql | 0 .../BigQuery/test_semi_additive_join_node__plan0.sql | 0 ...test_semi_additive_join_node__plan0_optimized.sql | 0 ..._semi_additive_join_node_with_grouping__plan0.sql | 0 ...tive_join_node_with_grouping__plan0_optimized.sql | 0 ...ditive_join_node_with_queried_group_by__plan0.sql | 0 ...n_node_with_queried_group_by__plan0_optimized.sql | 0 .../BigQuery/test_single_join_node__plan0.sql | 0 .../test_single_join_node__plan0_optimized.sql | 0 .../BigQuery/test_source_node__plan0.sql | 0 .../BigQuery/test_source_node__plan0_optimized.sql | 0 .../Databricks/test_combine_output_node__plan0.sql | 0 .../test_combine_output_node__plan0_optimized.sql | 0 .../Databricks/test_compute_metrics_node__plan0.sql | 0 .../test_compute_metrics_node__plan0_optimized.sql | 0 ...de_ratio_from_multiple_semantic_models__plan0.sql | 0 ...rom_multiple_semantic_models__plan0_optimized.sql | 0 ..._node_ratio_from_single_semantic_model__plan0.sql | 0 ...o_from_single_semantic_model__plan0_optimized.sql | 0 .../test_compute_metrics_node_simple_expr__plan0.sql | 0 ...ute_metrics_node_simple_expr__plan0_optimized.sql | 0 .../test_constrain_time_range_node__plan0.sql | 0 ...st_constrain_time_range_node__plan0_optimized.sql | 0 ...dimension_with_joined_where_constraint__plan0.sql | 0 ...with_joined_where_constraint__plan0_optimized.sql | 0 .../test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 .../Databricks/test_filter_node__plan0.sql | 0 .../Databricks/test_filter_node__plan0_optimized.sql | 0 ...test_filter_with_where_constraint_node__plan0.sql | 0 ...r_with_where_constraint_node__plan0_optimized.sql | 0 ...o_time_spine_node_with_offset_to_grain__plan0.sql | 0 ...ne_node_with_offset_to_grain__plan0_optimized.sql | 0 ..._to_time_spine_node_with_offset_window__plan0.sql | 0 ...pine_node_with_offset_window__plan0_optimized.sql | 0 ...join_to_time_spine_node_without_offset__plan0.sql | 0 ...me_spine_node_without_offset__plan0_optimized.sql | 0 .../test_measure_aggregation_node__plan0.sql | 0 ...est_measure_aggregation_node__plan0_optimized.sql | 0 .../Databricks/test_multi_join_node__plan0.sql | 0 .../test_multi_join_node__plan0_optimized.sql | 0 .../Databricks/test_order_by_node__plan0.sql | 0 .../test_order_by_node__plan0_optimized.sql | 0 .../test_semi_additive_join_node__plan0.sql | 0 ...test_semi_additive_join_node__plan0_optimized.sql | 0 ..._semi_additive_join_node_with_grouping__plan0.sql | 0 ...tive_join_node_with_grouping__plan0_optimized.sql | 0 ...ditive_join_node_with_queried_group_by__plan0.sql | 0 ...n_node_with_queried_group_by__plan0_optimized.sql | 0 .../Databricks/test_single_join_node__plan0.sql | 0 .../test_single_join_node__plan0_optimized.sql | 0 .../Databricks/test_source_node__plan0.sql | 0 .../Databricks/test_source_node__plan0_optimized.sql | 0 .../DuckDB/test_combine_output_node__plan0.sql | 0 .../test_combine_output_node__plan0_optimized.sql | 0 .../DuckDB/test_compute_metrics_node__plan0.sql | 0 .../test_compute_metrics_node__plan0_optimized.sql | 0 ...de_ratio_from_multiple_semantic_models__plan0.sql | 0 ...rom_multiple_semantic_models__plan0_optimized.sql | 0 ..._node_ratio_from_single_semantic_model__plan0.sql | 0 ...o_from_single_semantic_model__plan0_optimized.sql | 0 .../test_compute_metrics_node_simple_expr__plan0.sql | 0 ...ute_metrics_node_simple_expr__plan0_optimized.sql | 0 .../DuckDB/test_constrain_time_range_node__plan0.sql | 0 ...st_constrain_time_range_node__plan0_optimized.sql | 0 ...dimension_with_joined_where_constraint__plan0.sql | 0 ...with_joined_where_constraint__plan0_optimized.sql | 0 .../DuckDB/test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 .../SqlQueryPlan/DuckDB/test_filter_node__plan0.sql | 0 .../DuckDB/test_filter_node__plan0_optimized.sql | 0 ...test_filter_with_where_constraint_node__plan0.sql | 0 ...r_with_where_constraint_node__plan0_optimized.sql | 0 ...o_time_spine_node_with_offset_to_grain__plan0.sql | 0 ...ne_node_with_offset_to_grain__plan0_optimized.sql | 0 ..._to_time_spine_node_with_offset_window__plan0.sql | 0 ...pine_node_with_offset_window__plan0_optimized.sql | 0 ...join_to_time_spine_node_without_offset__plan0.sql | 0 ...me_spine_node_without_offset__plan0_optimized.sql | 0 .../DuckDB/test_measure_aggregation_node__plan0.sql | 0 ...est_measure_aggregation_node__plan0_optimized.sql | 0 .../DuckDB/test_multi_join_node__plan0.sql | 0 .../DuckDB/test_multi_join_node__plan0_optimized.sql | 0 .../DuckDB/test_order_by_node__plan0.sql | 0 .../DuckDB/test_order_by_node__plan0_optimized.sql | 0 .../DuckDB/test_semi_additive_join_node__plan0.sql | 0 ...test_semi_additive_join_node__plan0_optimized.sql | 0 ..._semi_additive_join_node_with_grouping__plan0.sql | 0 ...tive_join_node_with_grouping__plan0_optimized.sql | 0 ...ditive_join_node_with_queried_group_by__plan0.sql | 0 ...n_node_with_queried_group_by__plan0_optimized.sql | 0 .../DuckDB/test_single_join_node__plan0.sql | 0 .../test_single_join_node__plan0_optimized.sql | 0 .../SqlQueryPlan/DuckDB/test_source_node__plan0.sql | 0 .../DuckDB/test_source_node__plan0_optimized.sql | 0 .../Postgres/test_combine_output_node__plan0.sql | 0 .../test_combine_output_node__plan0_optimized.sql | 0 .../Postgres/test_compute_metrics_node__plan0.sql | 0 .../test_compute_metrics_node__plan0_optimized.sql | 0 ...de_ratio_from_multiple_semantic_models__plan0.sql | 0 ...rom_multiple_semantic_models__plan0_optimized.sql | 0 ..._node_ratio_from_single_semantic_model__plan0.sql | 0 ...o_from_single_semantic_model__plan0_optimized.sql | 0 .../test_compute_metrics_node_simple_expr__plan0.sql | 0 ...ute_metrics_node_simple_expr__plan0_optimized.sql | 0 .../test_constrain_time_range_node__plan0.sql | 0 ...st_constrain_time_range_node__plan0_optimized.sql | 0 ...dimension_with_joined_where_constraint__plan0.sql | 0 ...with_joined_where_constraint__plan0_optimized.sql | 0 .../test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 .../Postgres/test_filter_node__plan0.sql | 0 .../Postgres/test_filter_node__plan0_optimized.sql | 0 ...test_filter_with_where_constraint_node__plan0.sql | 0 ...r_with_where_constraint_node__plan0_optimized.sql | 0 ...o_time_spine_node_with_offset_to_grain__plan0.sql | 0 ...ne_node_with_offset_to_grain__plan0_optimized.sql | 0 ..._to_time_spine_node_with_offset_window__plan0.sql | 0 ...pine_node_with_offset_window__plan0_optimized.sql | 0 ...join_to_time_spine_node_without_offset__plan0.sql | 0 ...me_spine_node_without_offset__plan0_optimized.sql | 0 .../test_measure_aggregation_node__plan0.sql | 0 ...est_measure_aggregation_node__plan0_optimized.sql | 0 .../Postgres/test_multi_join_node__plan0.sql | 0 .../test_multi_join_node__plan0_optimized.sql | 0 .../Postgres/test_order_by_node__plan0.sql | 0 .../Postgres/test_order_by_node__plan0_optimized.sql | 0 .../Postgres/test_semi_additive_join_node__plan0.sql | 0 ...test_semi_additive_join_node__plan0_optimized.sql | 0 ..._semi_additive_join_node_with_grouping__plan0.sql | 0 ...tive_join_node_with_grouping__plan0_optimized.sql | 0 ...ditive_join_node_with_queried_group_by__plan0.sql | 0 ...n_node_with_queried_group_by__plan0_optimized.sql | 0 .../Postgres/test_single_join_node__plan0.sql | 0 .../test_single_join_node__plan0_optimized.sql | 0 .../Postgres/test_source_node__plan0.sql | 0 .../Postgres/test_source_node__plan0_optimized.sql | 0 .../Redshift/test_combine_output_node__plan0.sql | 0 .../test_combine_output_node__plan0_optimized.sql | 0 .../Redshift/test_compute_metrics_node__plan0.sql | 0 .../test_compute_metrics_node__plan0_optimized.sql | 0 ...de_ratio_from_multiple_semantic_models__plan0.sql | 0 ...rom_multiple_semantic_models__plan0_optimized.sql | 0 ..._node_ratio_from_single_semantic_model__plan0.sql | 0 ...o_from_single_semantic_model__plan0_optimized.sql | 0 .../test_compute_metrics_node_simple_expr__plan0.sql | 0 ...ute_metrics_node_simple_expr__plan0_optimized.sql | 0 .../test_constrain_time_range_node__plan0.sql | 0 ...st_constrain_time_range_node__plan0_optimized.sql | 0 ...dimension_with_joined_where_constraint__plan0.sql | 0 ...with_joined_where_constraint__plan0_optimized.sql | 0 .../test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 .../Redshift/test_filter_node__plan0.sql | 0 .../Redshift/test_filter_node__plan0_optimized.sql | 0 ...test_filter_with_where_constraint_node__plan0.sql | 0 ...r_with_where_constraint_node__plan0_optimized.sql | 0 ...o_time_spine_node_with_offset_to_grain__plan0.sql | 0 ...ne_node_with_offset_to_grain__plan0_optimized.sql | 0 ..._to_time_spine_node_with_offset_window__plan0.sql | 0 ...pine_node_with_offset_window__plan0_optimized.sql | 0 ...join_to_time_spine_node_without_offset__plan0.sql | 0 ...me_spine_node_without_offset__plan0_optimized.sql | 0 .../test_measure_aggregation_node__plan0.sql | 0 ...est_measure_aggregation_node__plan0_optimized.sql | 0 .../Redshift/test_multi_join_node__plan0.sql | 0 .../test_multi_join_node__plan0_optimized.sql | 0 .../Redshift/test_order_by_node__plan0.sql | 0 .../Redshift/test_order_by_node__plan0_optimized.sql | 0 .../Redshift/test_semi_additive_join_node__plan0.sql | 0 ...test_semi_additive_join_node__plan0_optimized.sql | 0 ..._semi_additive_join_node_with_grouping__plan0.sql | 0 ...tive_join_node_with_grouping__plan0_optimized.sql | 0 ...ditive_join_node_with_queried_group_by__plan0.sql | 0 ...n_node_with_queried_group_by__plan0_optimized.sql | 0 .../Redshift/test_single_join_node__plan0.sql | 0 .../test_single_join_node__plan0_optimized.sql | 0 .../Redshift/test_source_node__plan0.sql | 0 .../Redshift/test_source_node__plan0_optimized.sql | 0 .../Snowflake/test_combine_output_node__plan0.sql | 0 .../test_combine_output_node__plan0_optimized.sql | 0 .../Snowflake/test_compute_metrics_node__plan0.sql | 0 .../test_compute_metrics_node__plan0_optimized.sql | 0 ...de_ratio_from_multiple_semantic_models__plan0.sql | 0 ...rom_multiple_semantic_models__plan0_optimized.sql | 0 ..._node_ratio_from_single_semantic_model__plan0.sql | 0 ...o_from_single_semantic_model__plan0_optimized.sql | 0 .../test_compute_metrics_node_simple_expr__plan0.sql | 0 ...ute_metrics_node_simple_expr__plan0_optimized.sql | 0 .../test_constrain_time_range_node__plan0.sql | 0 ...st_constrain_time_range_node__plan0_optimized.sql | 0 ...dimension_with_joined_where_constraint__plan0.sql | 0 ...with_joined_where_constraint__plan0_optimized.sql | 0 .../test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 .../Snowflake/test_filter_node__plan0.sql | 0 .../Snowflake/test_filter_node__plan0_optimized.sql | 0 ...test_filter_with_where_constraint_node__plan0.sql | 0 ...r_with_where_constraint_node__plan0_optimized.sql | 0 ...o_time_spine_node_with_offset_to_grain__plan0.sql | 0 ...ne_node_with_offset_to_grain__plan0_optimized.sql | 0 ..._to_time_spine_node_with_offset_window__plan0.sql | 0 ...pine_node_with_offset_window__plan0_optimized.sql | 0 ...join_to_time_spine_node_without_offset__plan0.sql | 0 ...me_spine_node_without_offset__plan0_optimized.sql | 0 .../test_measure_aggregation_node__plan0.sql | 0 ...est_measure_aggregation_node__plan0_optimized.sql | 0 .../Snowflake/test_multi_join_node__plan0.sql | 0 .../test_multi_join_node__plan0_optimized.sql | 0 .../Snowflake/test_order_by_node__plan0.sql | 0 .../test_order_by_node__plan0_optimized.sql | 0 .../test_semi_additive_join_node__plan0.sql | 0 ...test_semi_additive_join_node__plan0_optimized.sql | 0 ..._semi_additive_join_node_with_grouping__plan0.sql | 0 ...tive_join_node_with_grouping__plan0_optimized.sql | 0 ...ditive_join_node_with_queried_group_by__plan0.sql | 0 ...n_node_with_queried_group_by__plan0_optimized.sql | 0 .../Snowflake/test_single_join_node__plan0.sql | 0 .../test_single_join_node__plan0_optimized.sql | 0 .../Snowflake/test_source_node__plan0.sql | 0 .../Snowflake/test_source_node__plan0_optimized.sql | 0 .../Trino/test_combine_output_node__plan0.sql | 0 .../test_combine_output_node__plan0_optimized.sql | 0 .../Trino/test_compute_metrics_node__plan0.sql | 0 .../test_compute_metrics_node__plan0_optimized.sql | 0 ...de_ratio_from_multiple_semantic_models__plan0.sql | 0 ...rom_multiple_semantic_models__plan0_optimized.sql | 0 ..._node_ratio_from_single_semantic_model__plan0.sql | 0 ...o_from_single_semantic_model__plan0_optimized.sql | 0 .../test_compute_metrics_node_simple_expr__plan0.sql | 0 ...ute_metrics_node_simple_expr__plan0_optimized.sql | 0 .../Trino/test_constrain_time_range_node__plan0.sql | 0 ...st_constrain_time_range_node__plan0_optimized.sql | 0 ...dimension_with_joined_where_constraint__plan0.sql | 0 ...with_joined_where_constraint__plan0_optimized.sql | 0 .../Trino/test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 .../SqlQueryPlan/Trino/test_filter_node__plan0.sql | 0 .../Trino/test_filter_node__plan0_optimized.sql | 0 ...test_filter_with_where_constraint_node__plan0.sql | 0 ...r_with_where_constraint_node__plan0_optimized.sql | 0 ...o_time_spine_node_with_offset_to_grain__plan0.sql | 0 ...ne_node_with_offset_to_grain__plan0_optimized.sql | 0 ..._to_time_spine_node_with_offset_window__plan0.sql | 0 ...pine_node_with_offset_window__plan0_optimized.sql | 0 ...join_to_time_spine_node_without_offset__plan0.sql | 0 ...me_spine_node_without_offset__plan0_optimized.sql | 0 .../Trino/test_measure_aggregation_node__plan0.sql | 0 ...est_measure_aggregation_node__plan0_optimized.sql | 0 .../Trino/test_multi_join_node__plan0.sql | 0 .../Trino/test_multi_join_node__plan0_optimized.sql | 0 .../SqlQueryPlan/Trino/test_order_by_node__plan0.sql | 0 .../Trino/test_order_by_node__plan0_optimized.sql | 0 .../Trino/test_semi_additive_join_node__plan0.sql | 0 ...test_semi_additive_join_node__plan0_optimized.sql | 0 ..._semi_additive_join_node_with_grouping__plan0.sql | 0 ...tive_join_node_with_grouping__plan0_optimized.sql | 0 ...ditive_join_node_with_queried_group_by__plan0.sql | 0 ...n_node_with_queried_group_by__plan0_optimized.sql | 0 .../Trino/test_single_join_node__plan0.sql | 0 .../Trino/test_single_join_node__plan0_optimized.sql | 0 .../SqlQueryPlan/Trino/test_source_node__plan0.sql | 0 .../Trino/test_source_node__plan0_optimized.sql | 0 .../SqlQueryPlan/test_combine_output_node__plan0.xml | 0 .../test_compute_metrics_node__plan0.xml | 0 ...de_ratio_from_multiple_semantic_models__plan0.xml | 0 ..._node_ratio_from_single_semantic_model__plan0.xml | 0 .../test_compute_metrics_node_simple_expr__plan0.xml | 0 .../test_constrain_time_range_node__plan0.xml | 0 ...dimension_with_joined_where_constraint__plan0.xml | 0 .../test_dimensions_requiring_join__plan0.xml | 0 .../SqlQueryPlan/test_filter_node__plan0.xml | 0 ...test_filter_with_where_constraint_node__plan0.xml | 0 ...o_time_spine_node_with_offset_to_grain__plan0.xml | 0 ..._to_time_spine_node_with_offset_window__plan0.xml | 0 ...join_to_time_spine_node_without_offset__plan0.xml | 0 .../test_measure_aggregation_node__plan0.xml | 0 .../SqlQueryPlan/test_multi_join_node__plan0.xml | 0 .../SqlQueryPlan/test_order_by_node__plan0.xml | 0 .../test_semi_additive_join_node__plan0.xml | 0 ..._semi_additive_join_node_with_grouping__plan0.xml | 0 ...ditive_join_node_with_queried_group_by__plan0.xml | 0 .../SqlQueryPlan/test_single_join_node__plan0.xml | 0 .../SqlQueryPlan/test_source_node__plan0.xml | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../BigQuery/test_derived_metric__plan0.sql | 0 .../test_derived_metric__plan0_optimized.sql | 0 ...with_month_dimension_and_offset_window__plan0.sql | 0 ..._dimension_and_offset_window__plan0_optimized.sql | 0 ...st_derived_metric_with_offset_to_grain__plan0.sql | 0 ..._metric_with_offset_to_grain__plan0_optimized.sql | 0 ...c_with_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...test_derived_metric_with_offset_window__plan0.sql | 0 ...ed_metric_with_offset_window__plan0_optimized.sql | 0 ...ric_with_offset_window_and_granularity__plan0.sql | 0 ...ffset_window_and_granularity__plan0_optimized.sql | 0 ...with_offset_window_and_offset_to_grain__plan0.sql | 0 ...t_window_and_offset_to_grain__plan0_optimized.sql | 0 ...ow_and_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...ric_with_offset_window_and_time_filter__plan0.sql | 0 ...ffset_window_and_time_filter__plan0_optimized.sql | 0 .../test_derived_offset_cumulative_metric__plan0.sql | 0 ...ved_offset_cumulative_metric__plan0_optimized.sql | 0 ...erived_offset_metric_with_agg_time_dim__plan0.sql | 0 ...set_metric_with_agg_time_dim__plan0_optimized.sql | 0 ...ed_offset_metric_with_one_input_metric__plan0.sql | 0 ...metric_with_one_input_metric__plan0_optimized.sql | 0 .../BigQuery/test_multi_metric_fill_null__plan0.sql | 0 .../test_multi_metric_fill_null__plan0_optimized.sql | 0 .../BigQuery/test_nested_derived_metric__plan0.sql | 0 .../test_nested_derived_metric__plan0_optimized.sql | 0 ...h_joined_where_constraint_not_selected__plan0.sql | 0 ...here_constraint_not_selected__plan0_optimized.sql | 0 ...ric_with_offset_multiple_input_metrics__plan0.sql | 0 ...ffset_multiple_input_metrics__plan0_optimized.sql | 0 ...t_nested_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 ..._nulls_without_time_spine_multi_metric__plan0.sql | 0 ...hout_time_spine_multi_metric__plan0_optimized.sql | 0 .../BigQuery/test_nested_filters__plan0.sql | 0 .../test_nested_filters__plan0_optimized.sql | 0 .../BigQuery/test_nested_offsets__plan0.sql | 0 .../test_nested_offsets__plan0_optimized.sql | 0 ...st_nested_offsets_with_time_constraint__plan0.sql | 0 ...offsets_with_time_constraint__plan0_optimized.sql | 0 ...t_nested_offsets_with_where_constraint__plan0.sql | 0 ...ffsets_with_where_constraint__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...to_grain_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 ...test_offset_to_grain_with_agg_time_dim__plan0.sql | 0 ...t_to_grain_with_agg_time_dim__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...t_window_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 .../test_offset_window_with_agg_time_dim__plan0.sql | 0 ...set_window_with_agg_time_dim__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../Databricks/test_derived_metric__plan0.sql | 0 .../test_derived_metric__plan0_optimized.sql | 0 ...with_month_dimension_and_offset_window__plan0.sql | 0 ..._dimension_and_offset_window__plan0_optimized.sql | 0 ...st_derived_metric_with_offset_to_grain__plan0.sql | 0 ..._metric_with_offset_to_grain__plan0_optimized.sql | 0 ...c_with_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...test_derived_metric_with_offset_window__plan0.sql | 0 ...ed_metric_with_offset_window__plan0_optimized.sql | 0 ...ric_with_offset_window_and_granularity__plan0.sql | 0 ...ffset_window_and_granularity__plan0_optimized.sql | 0 ...with_offset_window_and_offset_to_grain__plan0.sql | 0 ...t_window_and_offset_to_grain__plan0_optimized.sql | 0 ...ow_and_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...ric_with_offset_window_and_time_filter__plan0.sql | 0 ...ffset_window_and_time_filter__plan0_optimized.sql | 0 .../test_derived_offset_cumulative_metric__plan0.sql | 0 ...ved_offset_cumulative_metric__plan0_optimized.sql | 0 ...erived_offset_metric_with_agg_time_dim__plan0.sql | 0 ...set_metric_with_agg_time_dim__plan0_optimized.sql | 0 ...ed_offset_metric_with_one_input_metric__plan0.sql | 0 ...metric_with_one_input_metric__plan0_optimized.sql | 0 .../test_multi_metric_fill_null__plan0.sql | 0 .../test_multi_metric_fill_null__plan0_optimized.sql | 0 .../Databricks/test_nested_derived_metric__plan0.sql | 0 .../test_nested_derived_metric__plan0_optimized.sql | 0 ...h_joined_where_constraint_not_selected__plan0.sql | 0 ...here_constraint_not_selected__plan0_optimized.sql | 0 ...ric_with_offset_multiple_input_metrics__plan0.sql | 0 ...ffset_multiple_input_metrics__plan0_optimized.sql | 0 ...t_nested_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 ..._nulls_without_time_spine_multi_metric__plan0.sql | 0 ...hout_time_spine_multi_metric__plan0_optimized.sql | 0 .../Databricks/test_nested_filters__plan0.sql | 0 .../test_nested_filters__plan0_optimized.sql | 0 .../Databricks/test_nested_offsets__plan0.sql | 0 .../test_nested_offsets__plan0_optimized.sql | 0 ...st_nested_offsets_with_time_constraint__plan0.sql | 0 ...offsets_with_time_constraint__plan0_optimized.sql | 0 ...t_nested_offsets_with_where_constraint__plan0.sql | 0 ...ffsets_with_where_constraint__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...to_grain_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 ...test_offset_to_grain_with_agg_time_dim__plan0.sql | 0 ...t_to_grain_with_agg_time_dim__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...t_window_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 .../test_offset_window_with_agg_time_dim__plan0.sql | 0 ...set_window_with_agg_time_dim__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../DuckDB/test_derived_metric__plan0.sql | 0 .../DuckDB/test_derived_metric__plan0_optimized.sql | 0 ...with_month_dimension_and_offset_window__plan0.sql | 0 ..._dimension_and_offset_window__plan0_optimized.sql | 0 ...st_derived_metric_with_offset_to_grain__plan0.sql | 0 ..._metric_with_offset_to_grain__plan0_optimized.sql | 0 ...c_with_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...test_derived_metric_with_offset_window__plan0.sql | 0 ...ed_metric_with_offset_window__plan0_optimized.sql | 0 ...ric_with_offset_window_and_granularity__plan0.sql | 0 ...ffset_window_and_granularity__plan0_optimized.sql | 0 ...with_offset_window_and_offset_to_grain__plan0.sql | 0 ...t_window_and_offset_to_grain__plan0_optimized.sql | 0 ...ow_and_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...ric_with_offset_window_and_time_filter__plan0.sql | 0 ...ffset_window_and_time_filter__plan0_optimized.sql | 0 .../test_derived_offset_cumulative_metric__plan0.sql | 0 ...ved_offset_cumulative_metric__plan0_optimized.sql | 0 ...erived_offset_metric_with_agg_time_dim__plan0.sql | 0 ...set_metric_with_agg_time_dim__plan0_optimized.sql | 0 ...ed_offset_metric_with_one_input_metric__plan0.sql | 0 ...metric_with_one_input_metric__plan0_optimized.sql | 0 .../DuckDB/test_multi_metric_fill_null__plan0.sql | 0 .../test_multi_metric_fill_null__plan0_optimized.sql | 0 .../DuckDB/test_nested_derived_metric__plan0.sql | 0 .../test_nested_derived_metric__plan0_optimized.sql | 0 ...h_joined_where_constraint_not_selected__plan0.sql | 0 ...here_constraint_not_selected__plan0_optimized.sql | 0 ...ric_with_offset_multiple_input_metrics__plan0.sql | 0 ...ffset_multiple_input_metrics__plan0_optimized.sql | 0 ...t_nested_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 ..._nulls_without_time_spine_multi_metric__plan0.sql | 0 ...hout_time_spine_multi_metric__plan0_optimized.sql | 0 .../DuckDB/test_nested_filters__plan0.sql | 0 .../DuckDB/test_nested_filters__plan0_optimized.sql | 0 .../DuckDB/test_nested_offsets__plan0.sql | 0 .../DuckDB/test_nested_offsets__plan0_optimized.sql | 0 ...st_nested_offsets_with_time_constraint__plan0.sql | 0 ...offsets_with_time_constraint__plan0_optimized.sql | 0 ...t_nested_offsets_with_where_constraint__plan0.sql | 0 ...ffsets_with_where_constraint__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...to_grain_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 ...test_offset_to_grain_with_agg_time_dim__plan0.sql | 0 ...t_to_grain_with_agg_time_dim__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...t_window_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 .../test_offset_window_with_agg_time_dim__plan0.sql | 0 ...set_window_with_agg_time_dim__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../Postgres/test_derived_metric__plan0.sql | 0 .../test_derived_metric__plan0_optimized.sql | 0 ...with_month_dimension_and_offset_window__plan0.sql | 0 ..._dimension_and_offset_window__plan0_optimized.sql | 0 ...st_derived_metric_with_offset_to_grain__plan0.sql | 0 ..._metric_with_offset_to_grain__plan0_optimized.sql | 0 ...c_with_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...test_derived_metric_with_offset_window__plan0.sql | 0 ...ed_metric_with_offset_window__plan0_optimized.sql | 0 ...ric_with_offset_window_and_granularity__plan0.sql | 0 ...ffset_window_and_granularity__plan0_optimized.sql | 0 ...with_offset_window_and_offset_to_grain__plan0.sql | 0 ...t_window_and_offset_to_grain__plan0_optimized.sql | 0 ...ow_and_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...ric_with_offset_window_and_time_filter__plan0.sql | 0 ...ffset_window_and_time_filter__plan0_optimized.sql | 0 .../test_derived_offset_cumulative_metric__plan0.sql | 0 ...ved_offset_cumulative_metric__plan0_optimized.sql | 0 ...erived_offset_metric_with_agg_time_dim__plan0.sql | 0 ...set_metric_with_agg_time_dim__plan0_optimized.sql | 0 ...ed_offset_metric_with_one_input_metric__plan0.sql | 0 ...metric_with_one_input_metric__plan0_optimized.sql | 0 .../Postgres/test_multi_metric_fill_null__plan0.sql | 0 .../test_multi_metric_fill_null__plan0_optimized.sql | 0 .../Postgres/test_nested_derived_metric__plan0.sql | 0 .../test_nested_derived_metric__plan0_optimized.sql | 0 ...h_joined_where_constraint_not_selected__plan0.sql | 0 ...here_constraint_not_selected__plan0_optimized.sql | 0 ...ric_with_offset_multiple_input_metrics__plan0.sql | 0 ...ffset_multiple_input_metrics__plan0_optimized.sql | 0 ...t_nested_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 ..._nulls_without_time_spine_multi_metric__plan0.sql | 0 ...hout_time_spine_multi_metric__plan0_optimized.sql | 0 .../Postgres/test_nested_filters__plan0.sql | 0 .../test_nested_filters__plan0_optimized.sql | 0 .../Postgres/test_nested_offsets__plan0.sql | 0 .../test_nested_offsets__plan0_optimized.sql | 0 ...st_nested_offsets_with_time_constraint__plan0.sql | 0 ...offsets_with_time_constraint__plan0_optimized.sql | 0 ...t_nested_offsets_with_where_constraint__plan0.sql | 0 ...ffsets_with_where_constraint__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...to_grain_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 ...test_offset_to_grain_with_agg_time_dim__plan0.sql | 0 ...t_to_grain_with_agg_time_dim__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...t_window_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 .../test_offset_window_with_agg_time_dim__plan0.sql | 0 ...set_window_with_agg_time_dim__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../Redshift/test_derived_metric__plan0.sql | 0 .../test_derived_metric__plan0_optimized.sql | 0 ...with_month_dimension_and_offset_window__plan0.sql | 0 ..._dimension_and_offset_window__plan0_optimized.sql | 0 ...st_derived_metric_with_offset_to_grain__plan0.sql | 0 ..._metric_with_offset_to_grain__plan0_optimized.sql | 0 ...c_with_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...test_derived_metric_with_offset_window__plan0.sql | 0 ...ed_metric_with_offset_window__plan0_optimized.sql | 0 ...ric_with_offset_window_and_granularity__plan0.sql | 0 ...ffset_window_and_granularity__plan0_optimized.sql | 0 ...with_offset_window_and_offset_to_grain__plan0.sql | 0 ...t_window_and_offset_to_grain__plan0_optimized.sql | 0 ...ow_and_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...ric_with_offset_window_and_time_filter__plan0.sql | 0 ...ffset_window_and_time_filter__plan0_optimized.sql | 0 .../test_derived_offset_cumulative_metric__plan0.sql | 0 ...ved_offset_cumulative_metric__plan0_optimized.sql | 0 ...erived_offset_metric_with_agg_time_dim__plan0.sql | 0 ...set_metric_with_agg_time_dim__plan0_optimized.sql | 0 ...ed_offset_metric_with_one_input_metric__plan0.sql | 0 ...metric_with_one_input_metric__plan0_optimized.sql | 0 .../Redshift/test_multi_metric_fill_null__plan0.sql | 0 .../test_multi_metric_fill_null__plan0_optimized.sql | 0 .../Redshift/test_nested_derived_metric__plan0.sql | 0 .../test_nested_derived_metric__plan0_optimized.sql | 0 ...h_joined_where_constraint_not_selected__plan0.sql | 0 ...here_constraint_not_selected__plan0_optimized.sql | 0 ...ric_with_offset_multiple_input_metrics__plan0.sql | 0 ...ffset_multiple_input_metrics__plan0_optimized.sql | 0 ...t_nested_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 ..._nulls_without_time_spine_multi_metric__plan0.sql | 0 ...hout_time_spine_multi_metric__plan0_optimized.sql | 0 .../Redshift/test_nested_filters__plan0.sql | 0 .../test_nested_filters__plan0_optimized.sql | 0 .../Redshift/test_nested_offsets__plan0.sql | 0 .../test_nested_offsets__plan0_optimized.sql | 0 ...st_nested_offsets_with_time_constraint__plan0.sql | 0 ...offsets_with_time_constraint__plan0_optimized.sql | 0 ...t_nested_offsets_with_where_constraint__plan0.sql | 0 ...ffsets_with_where_constraint__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...to_grain_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 ...test_offset_to_grain_with_agg_time_dim__plan0.sql | 0 ...t_to_grain_with_agg_time_dim__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...t_window_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 .../test_offset_window_with_agg_time_dim__plan0.sql | 0 ...set_window_with_agg_time_dim__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../Snowflake/test_derived_metric__plan0.sql | 0 .../test_derived_metric__plan0_optimized.sql | 0 ...with_month_dimension_and_offset_window__plan0.sql | 0 ..._dimension_and_offset_window__plan0_optimized.sql | 0 ...st_derived_metric_with_offset_to_grain__plan0.sql | 0 ..._metric_with_offset_to_grain__plan0_optimized.sql | 0 ...c_with_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...test_derived_metric_with_offset_window__plan0.sql | 0 ...ed_metric_with_offset_window__plan0_optimized.sql | 0 ...ric_with_offset_window_and_granularity__plan0.sql | 0 ...ffset_window_and_granularity__plan0_optimized.sql | 0 ...with_offset_window_and_offset_to_grain__plan0.sql | 0 ...t_window_and_offset_to_grain__plan0_optimized.sql | 0 ...ow_and_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...ric_with_offset_window_and_time_filter__plan0.sql | 0 ...ffset_window_and_time_filter__plan0_optimized.sql | 0 .../test_derived_offset_cumulative_metric__plan0.sql | 0 ...ved_offset_cumulative_metric__plan0_optimized.sql | 0 ...erived_offset_metric_with_agg_time_dim__plan0.sql | 0 ...set_metric_with_agg_time_dim__plan0_optimized.sql | 0 ...ed_offset_metric_with_one_input_metric__plan0.sql | 0 ...metric_with_one_input_metric__plan0_optimized.sql | 0 .../Snowflake/test_multi_metric_fill_null__plan0.sql | 0 .../test_multi_metric_fill_null__plan0_optimized.sql | 0 .../Snowflake/test_nested_derived_metric__plan0.sql | 0 .../test_nested_derived_metric__plan0_optimized.sql | 0 ...h_joined_where_constraint_not_selected__plan0.sql | 0 ...here_constraint_not_selected__plan0_optimized.sql | 0 ...ric_with_offset_multiple_input_metrics__plan0.sql | 0 ...ffset_multiple_input_metrics__plan0_optimized.sql | 0 ...t_nested_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 ..._nulls_without_time_spine_multi_metric__plan0.sql | 0 ...hout_time_spine_multi_metric__plan0_optimized.sql | 0 .../Snowflake/test_nested_filters__plan0.sql | 0 .../test_nested_filters__plan0_optimized.sql | 0 .../Snowflake/test_nested_offsets__plan0.sql | 0 .../test_nested_offsets__plan0_optimized.sql | 0 ...st_nested_offsets_with_time_constraint__plan0.sql | 0 ...offsets_with_time_constraint__plan0_optimized.sql | 0 ...t_nested_offsets_with_where_constraint__plan0.sql | 0 ...ffsets_with_where_constraint__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...to_grain_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 ...test_offset_to_grain_with_agg_time_dim__plan0.sql | 0 ...t_to_grain_with_agg_time_dim__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...t_window_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 .../test_offset_window_with_agg_time_dim__plan0.sql | 0 ...set_window_with_agg_time_dim__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 .../Trino/test_derived_metric__plan0.sql | 0 .../Trino/test_derived_metric__plan0_optimized.sql | 0 ...with_month_dimension_and_offset_window__plan0.sql | 0 ..._dimension_and_offset_window__plan0_optimized.sql | 0 ...st_derived_metric_with_offset_to_grain__plan0.sql | 0 ..._metric_with_offset_to_grain__plan0_optimized.sql | 0 ...c_with_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...test_derived_metric_with_offset_window__plan0.sql | 0 ...ed_metric_with_offset_window__plan0_optimized.sql | 0 ...ric_with_offset_window_and_granularity__plan0.sql | 0 ...ffset_window_and_granularity__plan0_optimized.sql | 0 ...with_offset_window_and_offset_to_grain__plan0.sql | 0 ...t_window_and_offset_to_grain__plan0_optimized.sql | 0 ...ow_and_offset_to_grain_and_granularity__plan0.sql | 0 ...set_to_grain_and_granularity__plan0_optimized.sql | 0 ...ric_with_offset_window_and_time_filter__plan0.sql | 0 ...ffset_window_and_time_filter__plan0_optimized.sql | 0 .../test_derived_offset_cumulative_metric__plan0.sql | 0 ...ved_offset_cumulative_metric__plan0_optimized.sql | 0 ...erived_offset_metric_with_agg_time_dim__plan0.sql | 0 ...set_metric_with_agg_time_dim__plan0_optimized.sql | 0 ...ed_offset_metric_with_one_input_metric__plan0.sql | 0 ...metric_with_one_input_metric__plan0_optimized.sql | 0 .../Trino/test_multi_metric_fill_null__plan0.sql | 0 .../test_multi_metric_fill_null__plan0_optimized.sql | 0 .../Trino/test_nested_derived_metric__plan0.sql | 0 .../test_nested_derived_metric__plan0_optimized.sql | 0 ...h_joined_where_constraint_not_selected__plan0.sql | 0 ...here_constraint_not_selected__plan0_optimized.sql | 0 ...ric_with_offset_multiple_input_metrics__plan0.sql | 0 ...ffset_multiple_input_metrics__plan0_optimized.sql | 0 ...t_nested_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 ..._nulls_without_time_spine_multi_metric__plan0.sql | 0 ...hout_time_spine_multi_metric__plan0_optimized.sql | 0 .../Trino/test_nested_filters__plan0.sql | 0 .../Trino/test_nested_filters__plan0_optimized.sql | 0 .../Trino/test_nested_offsets__plan0.sql | 0 .../Trino/test_nested_offsets__plan0_optimized.sql | 0 ...st_nested_offsets_with_time_constraint__plan0.sql | 0 ...offsets_with_time_constraint__plan0_optimized.sql | 0 ...t_nested_offsets_with_where_constraint__plan0.sql | 0 ...ffsets_with_where_constraint__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...to_grain_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 ...test_offset_to_grain_with_agg_time_dim__plan0.sql | 0 ...t_to_grain_with_agg_time_dim__plan0_optimized.sql | 0 ...and_query_have_different_granularities__plan0.sql | 0 ...have_different_granularities__plan0_optimized.sql | 0 ...t_window_metric_multiple_granularities__plan0.sql | 0 ...etric_multiple_granularities__plan0_optimized.sql | 0 .../test_offset_window_with_agg_time_dim__plan0.sql | 0 ...set_window_with_agg_time_dim__plan0_optimized.sql | 0 ...ime_offset_metric_with_time_constraint__plan0.sql | 0 ..._metric_with_time_constraint__plan0_optimized.sql | 0 ...ension_values_with_a_join_and_a_filter__plan0.sql | 0 ...ues_with_a_join_and_a_filter__plan0_optimized.sql | 0 .../test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 ...ension_values_with_a_join_and_a_filter__plan0.sql | 0 ...ues_with_a_join_and_a_filter__plan0_optimized.sql | 0 .../test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 ...ension_values_with_a_join_and_a_filter__plan0.sql | 0 ...ues_with_a_join_and_a_filter__plan0_optimized.sql | 0 .../DuckDB/test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 ...ension_values_with_a_join_and_a_filter__plan0.sql | 0 ...ues_with_a_join_and_a_filter__plan0_optimized.sql | 0 .../test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 ...ension_values_with_a_join_and_a_filter__plan0.sql | 0 ...ues_with_a_join_and_a_filter__plan0_optimized.sql | 0 .../test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 ...ension_values_with_a_join_and_a_filter__plan0.sql | 0 ...ues_with_a_join_and_a_filter__plan0_optimized.sql | 0 .../test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 ...ension_values_with_a_join_and_a_filter__plan0.sql | 0 ...ues_with_a_join_and_a_filter__plan0_optimized.sql | 0 .../Trino/test_dimensions_requiring_join__plan0.sql | 0 ...st_dimensions_requiring_join__plan0_optimized.sql | 0 ...ension_values_with_a_join_and_a_filter__plan0.xml | 0 .../test_dimensions_requiring_join__plan0.xml | 0 ...approximate_continuous_percentile_expr__plan0.sql | 0 .../BigQuery/test_cast_to_timestamp__plan0.sql | 0 .../BigQuery/test_generate_uuid__plan0.sql | 0 ...t_approximate_discrete_percentile_expr__plan0.sql | 0 .../Databricks/test_cast_to_timestamp__plan0.sql | 0 .../test_continuous_percentile_expr__plan0.sql | 0 .../Databricks/test_generate_uuid__plan0.sql | 0 ...approximate_continuous_percentile_expr__plan0.sql | 0 .../DuckDB/test_cast_to_timestamp__plan0.sql | 0 .../test_continuous_percentile_expr__plan0.sql | 0 .../DuckDB/test_discrete_percentile_expr__plan0.sql | 0 .../DuckDB/test_generate_uuid__plan0.sql | 0 .../Postgres/test_cast_to_timestamp__plan0.sql | 0 .../test_continuous_percentile_expr__plan0.sql | 0 .../test_discrete_percentile_expr__plan0.sql | 0 .../Postgres/test_generate_uuid__plan0.sql | 0 ...t_approximate_discrete_percentile_expr__plan0.sql | 0 .../Redshift/test_cast_to_timestamp__plan0.sql | 0 .../test_continuous_percentile_expr__plan0.sql | 0 .../Redshift/test_generate_uuid__plan0.sql | 0 ...approximate_continuous_percentile_expr__plan0.sql | 0 .../Snowflake/test_cast_to_timestamp__plan0.sql | 0 .../test_continuous_percentile_expr__plan0.sql | 0 .../test_discrete_percentile_expr__plan0.sql | 0 .../Snowflake/test_generate_uuid__plan0.sql | 0 ...approximate_continuous_percentile_expr__plan0.sql | 0 .../Trino/test_cast_to_timestamp__plan0.sql | 0 .../SqlQueryPlan/Trino/test_generate_uuid__plan0.sql | 0 ...nulls_with_0_multi_metric_query__query_output.txt | 0 ...uery_with_categorical_dimension__query_output.txt | 0 ...e_fill_nulls_with_0_metric_time__query_output.txt | 0 ..._simple_fill_nulls_with_0_month__query_output.txt | 0 .../test_simple_join_to_time_spine__query_output.txt | 0 ...nulls_with_0_multi_metric_query__query_output.txt | 0 ...uery_with_categorical_dimension__query_output.txt | 0 ...e_fill_nulls_with_0_metric_time__query_output.txt | 0 ..._simple_fill_nulls_with_0_month__query_output.txt | 0 .../test_simple_join_to_time_spine__query_output.txt | 0 ...nulls_with_0_multi_metric_query__query_output.txt | 0 ...uery_with_categorical_dimension__query_output.txt | 0 ...e_fill_nulls_with_0_metric_time__query_output.txt | 0 ..._simple_fill_nulls_with_0_month__query_output.txt | 0 .../test_simple_join_to_time_spine__query_output.txt | 0 ...nulls_with_0_multi_metric_query__query_output.txt | 0 ...uery_with_categorical_dimension__query_output.txt | 0 ...e_fill_nulls_with_0_metric_time__query_output.txt | 0 ..._simple_fill_nulls_with_0_month__query_output.txt | 0 .../test_simple_join_to_time_spine__query_output.txt | 0 ...nulls_with_0_multi_metric_query__query_output.txt | 0 ...uery_with_categorical_dimension__query_output.txt | 0 ...e_fill_nulls_with_0_metric_time__query_output.txt | 0 ..._simple_fill_nulls_with_0_month__query_output.txt | 0 .../test_simple_join_to_time_spine__query_output.txt | 0 ...nulls_with_0_multi_metric_query__query_output.txt | 0 ...uery_with_categorical_dimension__query_output.txt | 0 ...e_fill_nulls_with_0_metric_time__query_output.txt | 0 ..._simple_fill_nulls_with_0_month__query_output.txt | 0 .../test_simple_join_to_time_spine__query_output.txt | 0 ...nulls_with_0_multi_metric_query__query_output.txt | 0 ...uery_with_categorical_dimension__query_output.txt | 0 ...e_fill_nulls_with_0_metric_time__query_output.txt | 0 ..._simple_fill_nulls_with_0_month__query_output.txt | 0 .../test_simple_join_to_time_spine__query_output.txt | 0 .../BigQuery/test_cumulative_fill_nulls__plan0.sql | 0 .../test_cumulative_fill_nulls__plan0_optimized.sql | 0 ...erived_fill_nulls_for_one_input_metric__plan0.sql | 0 ...l_nulls_for_one_input_metric__plan0_optimized.sql | 0 .../test_join_to_time_spine_with_filters__plan0.sql | 0 ...n_to_time_spine_with_filters__plan0_optimized.sql | 0 ...t_simple_fill_nulls_with_0_metric_time__plan0.sql | 0 ...ill_nulls_with_0_metric_time__plan0_optimized.sql | 0 .../test_simple_fill_nulls_with_0_month__plan0.sql | 0 ...mple_fill_nulls_with_0_month__plan0_optimized.sql | 0 ...ulls_with_0_with_categorical_dimension__plan0.sql | 0 ...0_with_categorical_dimension__plan0_optimized.sql | 0 ...fill_nulls_with_0_with_non_metric_time__plan0.sql | 0 ..._with_0_with_non_metric_time__plan0_optimized.sql | 0 ...t_simple_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 .../Databricks/test_cumulative_fill_nulls__plan0.sql | 0 .../test_cumulative_fill_nulls__plan0_optimized.sql | 0 ...erived_fill_nulls_for_one_input_metric__plan0.sql | 0 ...l_nulls_for_one_input_metric__plan0_optimized.sql | 0 .../test_join_to_time_spine_with_filters__plan0.sql | 0 ...n_to_time_spine_with_filters__plan0_optimized.sql | 0 ...t_simple_fill_nulls_with_0_metric_time__plan0.sql | 0 ...ill_nulls_with_0_metric_time__plan0_optimized.sql | 0 .../test_simple_fill_nulls_with_0_month__plan0.sql | 0 ...mple_fill_nulls_with_0_month__plan0_optimized.sql | 0 ...ulls_with_0_with_categorical_dimension__plan0.sql | 0 ...0_with_categorical_dimension__plan0_optimized.sql | 0 ...fill_nulls_with_0_with_non_metric_time__plan0.sql | 0 ..._with_0_with_non_metric_time__plan0_optimized.sql | 0 ...t_simple_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 .../DuckDB/test_cumulative_fill_nulls__plan0.sql | 0 .../test_cumulative_fill_nulls__plan0_optimized.sql | 0 ...erived_fill_nulls_for_one_input_metric__plan0.sql | 0 ...l_nulls_for_one_input_metric__plan0_optimized.sql | 0 .../test_join_to_time_spine_with_filters__plan0.sql | 0 ...n_to_time_spine_with_filters__plan0_optimized.sql | 0 ...t_simple_fill_nulls_with_0_metric_time__plan0.sql | 0 ...ill_nulls_with_0_metric_time__plan0_optimized.sql | 0 .../test_simple_fill_nulls_with_0_month__plan0.sql | 0 ...mple_fill_nulls_with_0_month__plan0_optimized.sql | 0 ...ulls_with_0_with_categorical_dimension__plan0.sql | 0 ...0_with_categorical_dimension__plan0_optimized.sql | 0 ...fill_nulls_with_0_with_non_metric_time__plan0.sql | 0 ..._with_0_with_non_metric_time__plan0_optimized.sql | 0 ...t_simple_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 .../Postgres/test_cumulative_fill_nulls__plan0.sql | 0 .../test_cumulative_fill_nulls__plan0_optimized.sql | 0 ...erived_fill_nulls_for_one_input_metric__plan0.sql | 0 ...l_nulls_for_one_input_metric__plan0_optimized.sql | 0 .../test_join_to_time_spine_with_filters__plan0.sql | 0 ...n_to_time_spine_with_filters__plan0_optimized.sql | 0 ...t_simple_fill_nulls_with_0_metric_time__plan0.sql | 0 ...ill_nulls_with_0_metric_time__plan0_optimized.sql | 0 .../test_simple_fill_nulls_with_0_month__plan0.sql | 0 ...mple_fill_nulls_with_0_month__plan0_optimized.sql | 0 ...ulls_with_0_with_categorical_dimension__plan0.sql | 0 ...0_with_categorical_dimension__plan0_optimized.sql | 0 ...fill_nulls_with_0_with_non_metric_time__plan0.sql | 0 ..._with_0_with_non_metric_time__plan0_optimized.sql | 0 ...t_simple_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 .../Redshift/test_cumulative_fill_nulls__plan0.sql | 0 .../test_cumulative_fill_nulls__plan0_optimized.sql | 0 ...erived_fill_nulls_for_one_input_metric__plan0.sql | 0 ...l_nulls_for_one_input_metric__plan0_optimized.sql | 0 .../test_join_to_time_spine_with_filters__plan0.sql | 0 ...n_to_time_spine_with_filters__plan0_optimized.sql | 0 ...t_simple_fill_nulls_with_0_metric_time__plan0.sql | 0 ...ill_nulls_with_0_metric_time__plan0_optimized.sql | 0 .../test_simple_fill_nulls_with_0_month__plan0.sql | 0 ...mple_fill_nulls_with_0_month__plan0_optimized.sql | 0 ...ulls_with_0_with_categorical_dimension__plan0.sql | 0 ...0_with_categorical_dimension__plan0_optimized.sql | 0 ...fill_nulls_with_0_with_non_metric_time__plan0.sql | 0 ..._with_0_with_non_metric_time__plan0_optimized.sql | 0 ...t_simple_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 .../Snowflake/test_cumulative_fill_nulls__plan0.sql | 0 .../test_cumulative_fill_nulls__plan0_optimized.sql | 0 ...erived_fill_nulls_for_one_input_metric__plan0.sql | 0 ...l_nulls_for_one_input_metric__plan0_optimized.sql | 0 .../test_join_to_time_spine_with_filters__plan0.sql | 0 ...n_to_time_spine_with_filters__plan0_optimized.sql | 0 ...t_simple_fill_nulls_with_0_metric_time__plan0.sql | 0 ...ill_nulls_with_0_metric_time__plan0_optimized.sql | 0 .../test_simple_fill_nulls_with_0_month__plan0.sql | 0 ...mple_fill_nulls_with_0_month__plan0_optimized.sql | 0 ...ulls_with_0_with_categorical_dimension__plan0.sql | 0 ...0_with_categorical_dimension__plan0_optimized.sql | 0 ...fill_nulls_with_0_with_non_metric_time__plan0.sql | 0 ..._with_0_with_non_metric_time__plan0_optimized.sql | 0 ...t_simple_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 .../Trino/test_cumulative_fill_nulls__plan0.sql | 0 .../test_cumulative_fill_nulls__plan0_optimized.sql | 0 ...erived_fill_nulls_for_one_input_metric__plan0.sql | 0 ...l_nulls_for_one_input_metric__plan0_optimized.sql | 0 .../test_join_to_time_spine_with_filters__plan0.sql | 0 ...n_to_time_spine_with_filters__plan0_optimized.sql | 0 ...t_simple_fill_nulls_with_0_metric_time__plan0.sql | 0 ...ill_nulls_with_0_metric_time__plan0_optimized.sql | 0 .../test_simple_fill_nulls_with_0_month__plan0.sql | 0 ...mple_fill_nulls_with_0_month__plan0_optimized.sql | 0 ...ulls_with_0_with_categorical_dimension__plan0.sql | 0 ...0_with_categorical_dimension__plan0_optimized.sql | 0 ...fill_nulls_with_0_with_non_metric_time__plan0.sql | 0 ..._with_0_with_non_metric_time__plan0_optimized.sql | 0 ...t_simple_fill_nulls_without_time_spine__plan0.sql | 0 ...ill_nulls_without_time_spine__plan0_optimized.sql | 0 .../test_offset_window_with_date_part__plan0.sql | 0 ...offset_window_with_date_part__plan0_optimized.sql | 0 .../test_simple_query_with_date_part__plan0.sql | 0 ..._simple_query_with_date_part__plan0_optimized.sql | 0 ..._simple_query_with_multiple_date_parts__plan0.sql | 0 ...ery_with_multiple_date_parts__plan0_optimized.sql | 0 .../test_offset_window_with_date_part__plan0.sql | 0 ...offset_window_with_date_part__plan0_optimized.sql | 0 .../test_simple_query_with_date_part__plan0.sql | 0 ..._simple_query_with_date_part__plan0_optimized.sql | 0 ..._simple_query_with_multiple_date_parts__plan0.sql | 0 ...ery_with_multiple_date_parts__plan0_optimized.sql | 0 .../test_offset_window_with_date_part__plan0.sql | 0 ...offset_window_with_date_part__plan0_optimized.sql | 0 .../test_simple_query_with_date_part__plan0.sql | 0 ..._simple_query_with_date_part__plan0_optimized.sql | 0 ..._simple_query_with_multiple_date_parts__plan0.sql | 0 ...ery_with_multiple_date_parts__plan0_optimized.sql | 0 .../test_offset_window_with_date_part__plan0.sql | 0 ...offset_window_with_date_part__plan0_optimized.sql | 0 .../test_simple_query_with_date_part__plan0.sql | 0 ..._simple_query_with_date_part__plan0_optimized.sql | 0 ..._simple_query_with_multiple_date_parts__plan0.sql | 0 ...ery_with_multiple_date_parts__plan0_optimized.sql | 0 .../test_offset_window_with_date_part__plan0.sql | 0 ...offset_window_with_date_part__plan0_optimized.sql | 0 .../test_simple_query_with_date_part__plan0.sql | 0 ..._simple_query_with_date_part__plan0_optimized.sql | 0 ..._simple_query_with_multiple_date_parts__plan0.sql | 0 ...ery_with_multiple_date_parts__plan0_optimized.sql | 0 .../test_offset_window_with_date_part__plan0.sql | 0 ...offset_window_with_date_part__plan0_optimized.sql | 0 .../test_simple_query_with_date_part__plan0.sql | 0 ..._simple_query_with_date_part__plan0_optimized.sql | 0 ..._simple_query_with_multiple_date_parts__plan0.sql | 0 ...ery_with_multiple_date_parts__plan0_optimized.sql | 0 .../test_offset_window_with_date_part__plan0.sql | 0 ...offset_window_with_date_part__plan0_optimized.sql | 0 .../test_simple_query_with_date_part__plan0.sql | 0 ..._simple_query_with_date_part__plan0_optimized.sql | 0 ..._simple_query_with_multiple_date_parts__plan0.sql | 0 ...ery_with_multiple_date_parts__plan0_optimized.sql | 0 .../test_linkable_element_set_as_spec_set__set0.txt | 0 .../str/test_all_properties__result0.txt | 0 ..._linkable_element_set_from_join_path__result0.txt | 0 ...element_set_from_join_path_multi_hop__result0.txt | 0 .../str/test_cyclic_join_manifest__result0.txt | 0 ..._time_property_for_cumulative_metric__result0.txt | 0 ...ic_time_property_for_derived_metrics__result0.txt | 0 .../str/test_one_property__result0.txt | 0 ...lter__accumulate_last_2_months_metric__result.txt | 0 ...ric_with_different_parent_time_grains__result.txt | 0 ...d_metric_with_same_parent_time_grains__result.txt | 0 ...r__metrics_with_different_time_grains__result.txt | 0 ...filter__metrics_with_same_time_grains__result.txt | 0 ...tric_time_in_query_filter__no_metrics__result.txt | 0 ...c_time_in_query_filter__simple_metric__result.txt | 0 .../test_missing_parent_for_metric__result.txt | 0 .../test_invalid_group_by_item__result.txt | 0 ...roup_by_item_in_derived_metric_parent__result.txt | 0 ...ric_with_metric_in_where_filter__query_output.txt | 0 ...h_simple_metric_in_where_filter__query_output.txt | 0 ...ric_with_metric_in_where_filter__query_output.txt | 0 ...h_simple_metric_in_where_filter__query_output.txt | 0 ...ric_with_metric_in_where_filter__query_output.txt | 0 ...h_simple_metric_in_where_filter__query_output.txt | 0 ...ric_with_metric_in_where_filter__query_output.txt | 0 ...h_simple_metric_in_where_filter__query_output.txt | 0 ...ric_with_metric_in_where_filter__query_output.txt | 0 ...h_simple_metric_in_where_filter__query_output.txt | 0 ...ric_with_metric_in_where_filter__query_output.txt | 0 ...h_simple_metric_in_where_filter__query_output.txt | 0 ...ric_with_metric_in_where_filter__query_output.txt | 0 ...h_simple_metric_in_where_filter__query_output.txt | 0 ...stinct_values_query_with_metric_filter__plan0.sql | 0 ...ues_query_with_metric_filter__plan0_optimized.sql | 0 ..._same_semantic_model_as_queried_metric__plan0.sql | 0 ...ntic_model_as_queried_metric__plan0_optimized.sql | 0 ...est_metric_with_metric_in_where_filter__plan0.sql | 0 ..._with_metric_in_where_filter__plan0_optimized.sql | 0 ...with_cumulative_metric_in_where_filter__plan0.sql | 0 ...ative_metric_in_where_filter__plan0_optimized.sql | 0 ...ry_with_derived_metric_in_where_filter__plan0.sql | 0 ...rived_metric_in_where_filter__plan0_optimized.sql | 0 ..._query_with_multiple_metrics_in_filter__plan0.sql | 0 ...h_multiple_metrics_in_filter__plan0_optimized.sql | 0 ...uery_with_ratio_metric_in_where_filter__plan0.sql | 0 ...ratio_metric_in_where_filter__plan0_optimized.sql | 0 ...ery_with_simple_metric_in_where_filter__plan0.sql | 0 ...imple_metric_in_where_filter__plan0_optimized.sql | 0 ...stinct_values_query_with_metric_filter__plan0.sql | 0 ...ues_query_with_metric_filter__plan0_optimized.sql | 0 ..._same_semantic_model_as_queried_metric__plan0.sql | 0 ...ntic_model_as_queried_metric__plan0_optimized.sql | 0 ...est_metric_with_metric_in_where_filter__plan0.sql | 0 ..._with_metric_in_where_filter__plan0_optimized.sql | 0 ...with_cumulative_metric_in_where_filter__plan0.sql | 0 ...ative_metric_in_where_filter__plan0_optimized.sql | 0 ...ry_with_derived_metric_in_where_filter__plan0.sql | 0 ...rived_metric_in_where_filter__plan0_optimized.sql | 0 ..._query_with_multiple_metrics_in_filter__plan0.sql | 0 ...h_multiple_metrics_in_filter__plan0_optimized.sql | 0 ...uery_with_ratio_metric_in_where_filter__plan0.sql | 0 ...ratio_metric_in_where_filter__plan0_optimized.sql | 0 ...ery_with_simple_metric_in_where_filter__plan0.sql | 0 ...imple_metric_in_where_filter__plan0_optimized.sql | 0 ...stinct_values_query_with_metric_filter__plan0.sql | 0 ...ues_query_with_metric_filter__plan0_optimized.sql | 0 ..._same_semantic_model_as_queried_metric__plan0.sql | 0 ...ntic_model_as_queried_metric__plan0_optimized.sql | 0 ...est_metric_with_metric_in_where_filter__plan0.sql | 0 ..._with_metric_in_where_filter__plan0_optimized.sql | 0 ...with_cumulative_metric_in_where_filter__plan0.sql | 0 ...ative_metric_in_where_filter__plan0_optimized.sql | 0 ...ry_with_derived_metric_in_where_filter__plan0.sql | 0 ...rived_metric_in_where_filter__plan0_optimized.sql | 0 ..._query_with_multiple_metrics_in_filter__plan0.sql | 0 ...h_multiple_metrics_in_filter__plan0_optimized.sql | 0 ...uery_with_ratio_metric_in_where_filter__plan0.sql | 0 ...ratio_metric_in_where_filter__plan0_optimized.sql | 0 ...ery_with_simple_metric_in_where_filter__plan0.sql | 0 ...imple_metric_in_where_filter__plan0_optimized.sql | 0 ...stinct_values_query_with_metric_filter__plan0.sql | 0 ...ues_query_with_metric_filter__plan0_optimized.sql | 0 ..._same_semantic_model_as_queried_metric__plan0.sql | 0 ...ntic_model_as_queried_metric__plan0_optimized.sql | 0 ...est_metric_with_metric_in_where_filter__plan0.sql | 0 ..._with_metric_in_where_filter__plan0_optimized.sql | 0 ...with_cumulative_metric_in_where_filter__plan0.sql | 0 ...ative_metric_in_where_filter__plan0_optimized.sql | 0 ...ry_with_derived_metric_in_where_filter__plan0.sql | 0 ...rived_metric_in_where_filter__plan0_optimized.sql | 0 ..._query_with_multiple_metrics_in_filter__plan0.sql | 0 ...h_multiple_metrics_in_filter__plan0_optimized.sql | 0 ...uery_with_ratio_metric_in_where_filter__plan0.sql | 0 ...ratio_metric_in_where_filter__plan0_optimized.sql | 0 ...ery_with_simple_metric_in_where_filter__plan0.sql | 0 ...imple_metric_in_where_filter__plan0_optimized.sql | 0 ...stinct_values_query_with_metric_filter__plan0.sql | 0 ...ues_query_with_metric_filter__plan0_optimized.sql | 0 ..._same_semantic_model_as_queried_metric__plan0.sql | 0 ...ntic_model_as_queried_metric__plan0_optimized.sql | 0 ...est_metric_with_metric_in_where_filter__plan0.sql | 0 ..._with_metric_in_where_filter__plan0_optimized.sql | 0 ...with_cumulative_metric_in_where_filter__plan0.sql | 0 ...ative_metric_in_where_filter__plan0_optimized.sql | 0 ...ry_with_derived_metric_in_where_filter__plan0.sql | 0 ...rived_metric_in_where_filter__plan0_optimized.sql | 0 ..._query_with_multiple_metrics_in_filter__plan0.sql | 0 ...h_multiple_metrics_in_filter__plan0_optimized.sql | 0 ...uery_with_ratio_metric_in_where_filter__plan0.sql | 0 ...ratio_metric_in_where_filter__plan0_optimized.sql | 0 ...ery_with_simple_metric_in_where_filter__plan0.sql | 0 ...imple_metric_in_where_filter__plan0_optimized.sql | 0 ...stinct_values_query_with_metric_filter__plan0.sql | 0 ...ues_query_with_metric_filter__plan0_optimized.sql | 0 ..._same_semantic_model_as_queried_metric__plan0.sql | 0 ...ntic_model_as_queried_metric__plan0_optimized.sql | 0 ...est_metric_with_metric_in_where_filter__plan0.sql | 0 ..._with_metric_in_where_filter__plan0_optimized.sql | 0 ...with_cumulative_metric_in_where_filter__plan0.sql | 0 ...ative_metric_in_where_filter__plan0_optimized.sql | 0 ...ry_with_derived_metric_in_where_filter__plan0.sql | 0 ...rived_metric_in_where_filter__plan0_optimized.sql | 0 ..._query_with_multiple_metrics_in_filter__plan0.sql | 0 ...h_multiple_metrics_in_filter__plan0_optimized.sql | 0 ...uery_with_ratio_metric_in_where_filter__plan0.sql | 0 ...ratio_metric_in_where_filter__plan0_optimized.sql | 0 ...ery_with_simple_metric_in_where_filter__plan0.sql | 0 ...imple_metric_in_where_filter__plan0_optimized.sql | 0 ...stinct_values_query_with_metric_filter__plan0.sql | 0 ...ues_query_with_metric_filter__plan0_optimized.sql | 0 ..._same_semantic_model_as_queried_metric__plan0.sql | 0 ...ntic_model_as_queried_metric__plan0_optimized.sql | 0 ...est_metric_with_metric_in_where_filter__plan0.sql | 0 ..._with_metric_in_where_filter__plan0_optimized.sql | 0 ...with_cumulative_metric_in_where_filter__plan0.sql | 0 ...ative_metric_in_where_filter__plan0_optimized.sql | 0 ...ry_with_derived_metric_in_where_filter__plan0.sql | 0 ...rived_metric_in_where_filter__plan0_optimized.sql | 0 ..._query_with_multiple_metrics_in_filter__plan0.sql | 0 ...h_multiple_metrics_in_filter__plan0_optimized.sql | 0 ...uery_with_ratio_metric_in_where_filter__plan0.sql | 0 ...ratio_metric_in_where_filter__plan0_optimized.sql | 0 ...ery_with_simple_metric_in_where_filter__plan0.sql | 0 ...imple_metric_in_where_filter__plan0_optimized.sql | 0 ..._transform_node_using_non_primary_time__plan0.sql | 0 ..._node_using_non_primary_time__plan0_optimized.sql | 0 ...sion_transform_node_using_primary_time__plan0.sql | 0 ...form_node_using_primary_time__plan0_optimized.sql | 0 ...imple_query_with_metric_time_dimension__plan0.sql | 0 ...y_with_metric_time_dimension__plan0_optimized.sql | 0 ..._transform_node_using_non_primary_time__plan0.sql | 0 ..._node_using_non_primary_time__plan0_optimized.sql | 0 ...sion_transform_node_using_primary_time__plan0.sql | 0 ...form_node_using_primary_time__plan0_optimized.sql | 0 ...imple_query_with_metric_time_dimension__plan0.sql | 0 ...y_with_metric_time_dimension__plan0_optimized.sql | 0 ..._transform_node_using_non_primary_time__plan0.sql | 0 ..._node_using_non_primary_time__plan0_optimized.sql | 0 ...sion_transform_node_using_primary_time__plan0.sql | 0 ...form_node_using_primary_time__plan0_optimized.sql | 0 ...imple_query_with_metric_time_dimension__plan0.sql | 0 ...y_with_metric_time_dimension__plan0_optimized.sql | 0 ..._transform_node_using_non_primary_time__plan0.sql | 0 ..._node_using_non_primary_time__plan0_optimized.sql | 0 ...sion_transform_node_using_primary_time__plan0.sql | 0 ...form_node_using_primary_time__plan0_optimized.sql | 0 ...imple_query_with_metric_time_dimension__plan0.sql | 0 ...y_with_metric_time_dimension__plan0_optimized.sql | 0 ..._transform_node_using_non_primary_time__plan0.sql | 0 ..._node_using_non_primary_time__plan0_optimized.sql | 0 ...sion_transform_node_using_primary_time__plan0.sql | 0 ...form_node_using_primary_time__plan0_optimized.sql | 0 ...imple_query_with_metric_time_dimension__plan0.sql | 0 ...y_with_metric_time_dimension__plan0_optimized.sql | 0 ..._transform_node_using_non_primary_time__plan0.sql | 0 ..._node_using_non_primary_time__plan0_optimized.sql | 0 ...sion_transform_node_using_primary_time__plan0.sql | 0 ...form_node_using_primary_time__plan0_optimized.sql | 0 ...imple_query_with_metric_time_dimension__plan0.sql | 0 ...y_with_metric_time_dimension__plan0_optimized.sql | 0 ..._transform_node_using_non_primary_time__plan0.sql | 0 ..._node_using_non_primary_time__plan0_optimized.sql | 0 ...sion_transform_node_using_primary_time__plan0.sql | 0 ...form_node_using_primary_time__plan0_optimized.sql | 0 ...imple_query_with_metric_time_dimension__plan0.sql | 0 ...y_with_metric_time_dimension__plan0_optimized.sql | 0 ..._transform_node_using_non_primary_time__plan0.xml | 0 ...sion_transform_node_using_primary_time__plan0.xml | 0 ...imple_query_with_metric_time_dimension__plan0.xml | 0 .../test_dimensions_with_time_constraint__plan0.sql | 0 ...ensions_with_time_constraint__plan0_optimized.sql | 0 .../BigQuery/test_metric_time_only__plan0.sql | 0 .../test_metric_time_only__plan0_optimized.sql | 0 .../test_metric_time_quarter_alone__plan0.sql | 0 ...st_metric_time_quarter_alone__plan0_optimized.sql | 0 ...test_metric_time_with_other_dimensions__plan0.sql | 0 ...c_time_with_other_dimensions__plan0_optimized.sql | 0 .../test_dimensions_with_time_constraint__plan0.sql | 0 ...ensions_with_time_constraint__plan0_optimized.sql | 0 .../Databricks/test_metric_time_only__plan0.sql | 0 .../test_metric_time_only__plan0_optimized.sql | 0 .../test_metric_time_quarter_alone__plan0.sql | 0 ...st_metric_time_quarter_alone__plan0_optimized.sql | 0 ...test_metric_time_with_other_dimensions__plan0.sql | 0 ...c_time_with_other_dimensions__plan0_optimized.sql | 0 .../test_dimensions_with_time_constraint__plan0.sql | 0 ...ensions_with_time_constraint__plan0_optimized.sql | 0 .../DuckDB/test_metric_time_only__plan0.sql | 0 .../test_metric_time_only__plan0_optimized.sql | 0 .../DuckDB/test_metric_time_quarter_alone__plan0.sql | 0 ...st_metric_time_quarter_alone__plan0_optimized.sql | 0 ...test_metric_time_with_other_dimensions__plan0.sql | 0 ...c_time_with_other_dimensions__plan0_optimized.sql | 0 .../test_dimensions_with_time_constraint__plan0.sql | 0 ...ensions_with_time_constraint__plan0_optimized.sql | 0 .../Postgres/test_metric_time_only__plan0.sql | 0 .../test_metric_time_only__plan0_optimized.sql | 0 .../test_metric_time_quarter_alone__plan0.sql | 0 ...st_metric_time_quarter_alone__plan0_optimized.sql | 0 ...test_metric_time_with_other_dimensions__plan0.sql | 0 ...c_time_with_other_dimensions__plan0_optimized.sql | 0 .../test_dimensions_with_time_constraint__plan0.sql | 0 ...ensions_with_time_constraint__plan0_optimized.sql | 0 .../Redshift/test_metric_time_only__plan0.sql | 0 .../test_metric_time_only__plan0_optimized.sql | 0 .../test_metric_time_quarter_alone__plan0.sql | 0 ...st_metric_time_quarter_alone__plan0_optimized.sql | 0 ...test_metric_time_with_other_dimensions__plan0.sql | 0 ...c_time_with_other_dimensions__plan0_optimized.sql | 0 .../test_dimensions_with_time_constraint__plan0.sql | 0 ...ensions_with_time_constraint__plan0_optimized.sql | 0 .../Snowflake/test_metric_time_only__plan0.sql | 0 .../test_metric_time_only__plan0_optimized.sql | 0 .../test_metric_time_quarter_alone__plan0.sql | 0 ...st_metric_time_quarter_alone__plan0_optimized.sql | 0 ...test_metric_time_with_other_dimensions__plan0.sql | 0 ...c_time_with_other_dimensions__plan0_optimized.sql | 0 .../test_dimensions_with_time_constraint__plan0.sql | 0 ...ensions_with_time_constraint__plan0_optimized.sql | 0 .../Trino/test_metric_time_only__plan0.sql | 0 .../Trino/test_metric_time_only__plan0_optimized.sql | 0 .../Trino/test_metric_time_quarter_alone__plan0.sql | 0 ...st_metric_time_quarter_alone__plan0_optimized.sql | 0 ...test_metric_time_with_other_dimensions__plan0.sql | 0 ...c_time_with_other_dimensions__plan0_optimized.sql | 0 .../test_dimensions_with_time_constraint__plan0.xml | 0 .../SqlQueryPlan/test_metric_time_only__plan0.xml | 0 .../test_metric_time_quarter_alone__plan0.xml | 0 ...test_metric_time_with_other_dimensions__plan0.xml | 0 .../list/test_list_dimensions__result0.txt | 0 .../list/test_joined_node_data_set__result0.txt | 0 ...ain_with_multiple_granularities__query_output.txt | 0 ...o_grain_with_single_granularity__query_output.txt | 0 ...ain_with_multiple_granularities__query_output.txt | 0 ...o_grain_with_single_granularity__query_output.txt | 0 ...ain_with_multiple_granularities__query_output.txt | 0 ...o_grain_with_single_granularity__query_output.txt | 0 ...ain_with_multiple_granularities__query_output.txt | 0 ...o_grain_with_single_granularity__query_output.txt | 0 ...ain_with_multiple_granularities__query_output.txt | 0 ...o_grain_with_single_granularity__query_output.txt | 0 ...ain_with_multiple_granularities__query_output.txt | 0 ...o_grain_with_single_granularity__query_output.txt | 0 ...ain_with_multiple_granularities__query_output.txt | 0 ...o_grain_with_single_granularity__query_output.txt | 0 .../BigQuery/test_common_semantic_model__plan0.sql | 0 .../test_common_semantic_model__plan0_optimized.sql | 0 .../BigQuery/test_distinct_values__plan0.sql | 0 .../test_distinct_values__plan0_optimized.sql | 0 ...lter_with_where_constraint_on_join_dim__plan0.sql | 0 ...where_constraint_on_join_dim__plan0_optimized.sql | 0 .../BigQuery/test_join_to_scd_dimension__plan0.sql | 0 .../test_join_to_scd_dimension__plan0_optimized.sql | 0 .../SqlQueryPlan/BigQuery/test_limit_rows__plan0.sql | 0 .../BigQuery/test_limit_rows__plan0_optimized.sql | 0 ...est_local_dimension_using_local_entity__plan0.sql | 0 ...dimension_using_local_entity__plan0_optimized.sql | 0 .../BigQuery/test_measure_constraint__plan0.sql | 0 .../test_measure_constraint__plan0_optimized.sql | 0 ...measure_constraint_with_reused_measure__plan0.sql | 0 ...nstraint_with_reused_measure__plan0_optimized.sql | 0 ..._constraint_with_single_expr_and_alias__plan0.sql | 0 ...t_with_single_expr_and_alias__plan0_optimized.sql | 0 ...es_from_multiple_sources_no_dimensions__plan0.sql | 0 ...ltiple_sources_no_dimensions__plan0_optimized.sql | 0 .../BigQuery/test_min_max_metric_time__plan0.sql | 0 .../test_min_max_metric_time__plan0_optimized.sql | 0 .../test_min_max_metric_time_week__plan0.sql | 0 ...est_min_max_metric_time_week__plan0_optimized.sql | 0 .../test_min_max_only_categorical__plan0.sql | 0 ...est_min_max_only_categorical__plan0_optimized.sql | 0 .../BigQuery/test_min_max_only_time__plan0.sql | 0 .../test_min_max_only_time__plan0_optimized.sql | 0 .../test_min_max_only_time_quarter__plan0.sql | 0 ...st_min_max_only_time_quarter__plan0_optimized.sql | 0 .../test_multi_hop_through_scd_dimension__plan0.sql | 0 ...ti_hop_through_scd_dimension__plan0_optimized.sql | 0 .../test_multi_hop_to_scd_dimension__plan0.sql | 0 ...t_multi_hop_to_scd_dimension__plan0_optimized.sql | 0 .../BigQuery/test_multihop_node__plan0.sql | 0 .../BigQuery/test_multihop_node__plan0_optimized.sql | 0 .../test_multiple_metrics_no_dimensions__plan0.sql | 0 ...ltiple_metrics_no_dimensions__plan0_optimized.sql | 0 .../BigQuery/test_partitioned_join__plan0.sql | 0 .../test_partitioned_join__plan0_optimized.sql | 0 .../Databricks/test_common_semantic_model__plan0.sql | 0 .../test_common_semantic_model__plan0_optimized.sql | 0 .../Databricks/test_distinct_values__plan0.sql | 0 .../test_distinct_values__plan0_optimized.sql | 0 ...lter_with_where_constraint_on_join_dim__plan0.sql | 0 ...where_constraint_on_join_dim__plan0_optimized.sql | 0 .../Databricks/test_join_to_scd_dimension__plan0.sql | 0 .../test_join_to_scd_dimension__plan0_optimized.sql | 0 .../Databricks/test_limit_rows__plan0.sql | 0 .../Databricks/test_limit_rows__plan0_optimized.sql | 0 ...est_local_dimension_using_local_entity__plan0.sql | 0 ...dimension_using_local_entity__plan0_optimized.sql | 0 .../Databricks/test_measure_constraint__plan0.sql | 0 .../test_measure_constraint__plan0_optimized.sql | 0 ...measure_constraint_with_reused_measure__plan0.sql | 0 ...nstraint_with_reused_measure__plan0_optimized.sql | 0 ..._constraint_with_single_expr_and_alias__plan0.sql | 0 ...t_with_single_expr_and_alias__plan0_optimized.sql | 0 ...es_from_multiple_sources_no_dimensions__plan0.sql | 0 ...ltiple_sources_no_dimensions__plan0_optimized.sql | 0 .../Databricks/test_min_max_metric_time__plan0.sql | 0 .../test_min_max_metric_time__plan0_optimized.sql | 0 .../test_min_max_metric_time_week__plan0.sql | 0 ...est_min_max_metric_time_week__plan0_optimized.sql | 0 .../test_min_max_only_categorical__plan0.sql | 0 ...est_min_max_only_categorical__plan0_optimized.sql | 0 .../Databricks/test_min_max_only_time__plan0.sql | 0 .../test_min_max_only_time__plan0_optimized.sql | 0 .../test_min_max_only_time_quarter__plan0.sql | 0 ...st_min_max_only_time_quarter__plan0_optimized.sql | 0 .../test_multi_hop_through_scd_dimension__plan0.sql | 0 ...ti_hop_through_scd_dimension__plan0_optimized.sql | 0 .../test_multi_hop_to_scd_dimension__plan0.sql | 0 ...t_multi_hop_to_scd_dimension__plan0_optimized.sql | 0 .../Databricks/test_multihop_node__plan0.sql | 0 .../test_multihop_node__plan0_optimized.sql | 0 .../test_multiple_metrics_no_dimensions__plan0.sql | 0 ...ltiple_metrics_no_dimensions__plan0_optimized.sql | 0 .../Databricks/test_partitioned_join__plan0.sql | 0 .../test_partitioned_join__plan0_optimized.sql | 0 .../DuckDB/test_common_semantic_model__plan0.sql | 0 .../test_common_semantic_model__plan0_optimized.sql | 0 .../DuckDB/test_distinct_values__plan0.sql | 0 .../DuckDB/test_distinct_values__plan0_optimized.sql | 0 ...lter_with_where_constraint_on_join_dim__plan0.sql | 0 ...where_constraint_on_join_dim__plan0_optimized.sql | 0 .../DuckDB/test_join_to_scd_dimension__plan0.sql | 0 .../test_join_to_scd_dimension__plan0_optimized.sql | 0 .../SqlQueryPlan/DuckDB/test_limit_rows__plan0.sql | 0 .../DuckDB/test_limit_rows__plan0_optimized.sql | 0 ...est_local_dimension_using_local_entity__plan0.sql | 0 ...dimension_using_local_entity__plan0_optimized.sql | 0 .../DuckDB/test_measure_constraint__plan0.sql | 0 .../test_measure_constraint__plan0_optimized.sql | 0 ...measure_constraint_with_reused_measure__plan0.sql | 0 ...nstraint_with_reused_measure__plan0_optimized.sql | 0 ..._constraint_with_single_expr_and_alias__plan0.sql | 0 ...t_with_single_expr_and_alias__plan0_optimized.sql | 0 ...es_from_multiple_sources_no_dimensions__plan0.sql | 0 ...ltiple_sources_no_dimensions__plan0_optimized.sql | 0 .../DuckDB/test_min_max_metric_time__plan0.sql | 0 .../test_min_max_metric_time__plan0_optimized.sql | 0 .../DuckDB/test_min_max_metric_time_week__plan0.sql | 0 ...est_min_max_metric_time_week__plan0_optimized.sql | 0 .../DuckDB/test_min_max_only_categorical__plan0.sql | 0 ...est_min_max_only_categorical__plan0_optimized.sql | 0 .../DuckDB/test_min_max_only_time__plan0.sql | 0 .../test_min_max_only_time__plan0_optimized.sql | 0 .../DuckDB/test_min_max_only_time_quarter__plan0.sql | 0 ...st_min_max_only_time_quarter__plan0_optimized.sql | 0 .../test_multi_hop_through_scd_dimension__plan0.sql | 0 ...ti_hop_through_scd_dimension__plan0_optimized.sql | 0 .../test_multi_hop_to_scd_dimension__plan0.sql | 0 ...t_multi_hop_to_scd_dimension__plan0_optimized.sql | 0 .../DuckDB/test_multihop_node__plan0.sql | 0 .../DuckDB/test_multihop_node__plan0_optimized.sql | 0 .../test_multiple_metrics_no_dimensions__plan0.sql | 0 ...ltiple_metrics_no_dimensions__plan0_optimized.sql | 0 .../DuckDB/test_partitioned_join__plan0.sql | 0 .../test_partitioned_join__plan0_optimized.sql | 0 .../Postgres/test_common_semantic_model__plan0.sql | 0 .../test_common_semantic_model__plan0_optimized.sql | 0 .../Postgres/test_distinct_values__plan0.sql | 0 .../test_distinct_values__plan0_optimized.sql | 0 ...lter_with_where_constraint_on_join_dim__plan0.sql | 0 ...where_constraint_on_join_dim__plan0_optimized.sql | 0 .../Postgres/test_join_to_scd_dimension__plan0.sql | 0 .../test_join_to_scd_dimension__plan0_optimized.sql | 0 .../SqlQueryPlan/Postgres/test_limit_rows__plan0.sql | 0 .../Postgres/test_limit_rows__plan0_optimized.sql | 0 ...est_local_dimension_using_local_entity__plan0.sql | 0 ...dimension_using_local_entity__plan0_optimized.sql | 0 .../Postgres/test_measure_constraint__plan0.sql | 0 .../test_measure_constraint__plan0_optimized.sql | 0 ...measure_constraint_with_reused_measure__plan0.sql | 0 ...nstraint_with_reused_measure__plan0_optimized.sql | 0 ..._constraint_with_single_expr_and_alias__plan0.sql | 0 ...t_with_single_expr_and_alias__plan0_optimized.sql | 0 ...es_from_multiple_sources_no_dimensions__plan0.sql | 0 ...ltiple_sources_no_dimensions__plan0_optimized.sql | 0 .../Postgres/test_min_max_metric_time__plan0.sql | 0 .../test_min_max_metric_time__plan0_optimized.sql | 0 .../test_min_max_metric_time_week__plan0.sql | 0 ...est_min_max_metric_time_week__plan0_optimized.sql | 0 .../test_min_max_only_categorical__plan0.sql | 0 ...est_min_max_only_categorical__plan0_optimized.sql | 0 .../Postgres/test_min_max_only_time__plan0.sql | 0 .../test_min_max_only_time__plan0_optimized.sql | 0 .../test_min_max_only_time_quarter__plan0.sql | 0 ...st_min_max_only_time_quarter__plan0_optimized.sql | 0 .../test_multi_hop_through_scd_dimension__plan0.sql | 0 ...ti_hop_through_scd_dimension__plan0_optimized.sql | 0 .../test_multi_hop_to_scd_dimension__plan0.sql | 0 ...t_multi_hop_to_scd_dimension__plan0_optimized.sql | 0 .../Postgres/test_multihop_node__plan0.sql | 0 .../Postgres/test_multihop_node__plan0_optimized.sql | 0 .../test_multiple_metrics_no_dimensions__plan0.sql | 0 ...ltiple_metrics_no_dimensions__plan0_optimized.sql | 0 .../Postgres/test_partitioned_join__plan0.sql | 0 .../test_partitioned_join__plan0_optimized.sql | 0 .../Redshift/test_common_semantic_model__plan0.sql | 0 .../test_common_semantic_model__plan0_optimized.sql | 0 .../Redshift/test_distinct_values__plan0.sql | 0 .../test_distinct_values__plan0_optimized.sql | 0 ...lter_with_where_constraint_on_join_dim__plan0.sql | 0 ...where_constraint_on_join_dim__plan0_optimized.sql | 0 .../Redshift/test_join_to_scd_dimension__plan0.sql | 0 .../test_join_to_scd_dimension__plan0_optimized.sql | 0 .../SqlQueryPlan/Redshift/test_limit_rows__plan0.sql | 0 .../Redshift/test_limit_rows__plan0_optimized.sql | 0 ...est_local_dimension_using_local_entity__plan0.sql | 0 ...dimension_using_local_entity__plan0_optimized.sql | 0 .../Redshift/test_measure_constraint__plan0.sql | 0 .../test_measure_constraint__plan0_optimized.sql | 0 ...measure_constraint_with_reused_measure__plan0.sql | 0 ...nstraint_with_reused_measure__plan0_optimized.sql | 0 ..._constraint_with_single_expr_and_alias__plan0.sql | 0 ...t_with_single_expr_and_alias__plan0_optimized.sql | 0 ...es_from_multiple_sources_no_dimensions__plan0.sql | 0 ...ltiple_sources_no_dimensions__plan0_optimized.sql | 0 .../Redshift/test_min_max_metric_time__plan0.sql | 0 .../test_min_max_metric_time__plan0_optimized.sql | 0 .../test_min_max_metric_time_week__plan0.sql | 0 ...est_min_max_metric_time_week__plan0_optimized.sql | 0 .../test_min_max_only_categorical__plan0.sql | 0 ...est_min_max_only_categorical__plan0_optimized.sql | 0 .../Redshift/test_min_max_only_time__plan0.sql | 0 .../test_min_max_only_time__plan0_optimized.sql | 0 .../test_min_max_only_time_quarter__plan0.sql | 0 ...st_min_max_only_time_quarter__plan0_optimized.sql | 0 .../test_multi_hop_through_scd_dimension__plan0.sql | 0 ...ti_hop_through_scd_dimension__plan0_optimized.sql | 0 .../test_multi_hop_to_scd_dimension__plan0.sql | 0 ...t_multi_hop_to_scd_dimension__plan0_optimized.sql | 0 .../Redshift/test_multihop_node__plan0.sql | 0 .../Redshift/test_multihop_node__plan0_optimized.sql | 0 .../test_multiple_metrics_no_dimensions__plan0.sql | 0 ...ltiple_metrics_no_dimensions__plan0_optimized.sql | 0 .../Redshift/test_partitioned_join__plan0.sql | 0 .../test_partitioned_join__plan0_optimized.sql | 0 .../Snowflake/test_common_semantic_model__plan0.sql | 0 .../test_common_semantic_model__plan0_optimized.sql | 0 .../Snowflake/test_distinct_values__plan0.sql | 0 .../test_distinct_values__plan0_optimized.sql | 0 ...lter_with_where_constraint_on_join_dim__plan0.sql | 0 ...where_constraint_on_join_dim__plan0_optimized.sql | 0 .../Snowflake/test_join_to_scd_dimension__plan0.sql | 0 .../test_join_to_scd_dimension__plan0_optimized.sql | 0 .../Snowflake/test_limit_rows__plan0.sql | 0 .../Snowflake/test_limit_rows__plan0_optimized.sql | 0 ...est_local_dimension_using_local_entity__plan0.sql | 0 ...dimension_using_local_entity__plan0_optimized.sql | 0 .../Snowflake/test_measure_constraint__plan0.sql | 0 .../test_measure_constraint__plan0_optimized.sql | 0 ...measure_constraint_with_reused_measure__plan0.sql | 0 ...nstraint_with_reused_measure__plan0_optimized.sql | 0 ..._constraint_with_single_expr_and_alias__plan0.sql | 0 ...t_with_single_expr_and_alias__plan0_optimized.sql | 0 ...es_from_multiple_sources_no_dimensions__plan0.sql | 0 ...ltiple_sources_no_dimensions__plan0_optimized.sql | 0 .../Snowflake/test_min_max_metric_time__plan0.sql | 0 .../test_min_max_metric_time__plan0_optimized.sql | 0 .../test_min_max_metric_time_week__plan0.sql | 0 ...est_min_max_metric_time_week__plan0_optimized.sql | 0 .../test_min_max_only_categorical__plan0.sql | 0 ...est_min_max_only_categorical__plan0_optimized.sql | 0 .../Snowflake/test_min_max_only_time__plan0.sql | 0 .../test_min_max_only_time__plan0_optimized.sql | 0 .../test_min_max_only_time_quarter__plan0.sql | 0 ...st_min_max_only_time_quarter__plan0_optimized.sql | 0 .../test_multi_hop_through_scd_dimension__plan0.sql | 0 ...ti_hop_through_scd_dimension__plan0_optimized.sql | 0 .../test_multi_hop_to_scd_dimension__plan0.sql | 0 ...t_multi_hop_to_scd_dimension__plan0_optimized.sql | 0 .../Snowflake/test_multihop_node__plan0.sql | 0 .../test_multihop_node__plan0_optimized.sql | 0 .../test_multiple_metrics_no_dimensions__plan0.sql | 0 ...ltiple_metrics_no_dimensions__plan0_optimized.sql | 0 .../Snowflake/test_partitioned_join__plan0.sql | 0 .../test_partitioned_join__plan0_optimized.sql | 0 .../Trino/test_common_semantic_model__plan0.sql | 0 .../test_common_semantic_model__plan0_optimized.sql | 0 .../Trino/test_distinct_values__plan0.sql | 0 .../Trino/test_distinct_values__plan0_optimized.sql | 0 ...lter_with_where_constraint_on_join_dim__plan0.sql | 0 ...where_constraint_on_join_dim__plan0_optimized.sql | 0 .../Trino/test_join_to_scd_dimension__plan0.sql | 0 .../test_join_to_scd_dimension__plan0_optimized.sql | 0 .../SqlQueryPlan/Trino/test_limit_rows__plan0.sql | 0 .../Trino/test_limit_rows__plan0_optimized.sql | 0 ...est_local_dimension_using_local_entity__plan0.sql | 0 ...dimension_using_local_entity__plan0_optimized.sql | 0 .../Trino/test_measure_constraint__plan0.sql | 0 .../test_measure_constraint__plan0_optimized.sql | 0 ...measure_constraint_with_reused_measure__plan0.sql | 0 ...nstraint_with_reused_measure__plan0_optimized.sql | 0 ..._constraint_with_single_expr_and_alias__plan0.sql | 0 ...t_with_single_expr_and_alias__plan0_optimized.sql | 0 ...es_from_multiple_sources_no_dimensions__plan0.sql | 0 ...ltiple_sources_no_dimensions__plan0_optimized.sql | 0 .../Trino/test_min_max_metric_time__plan0.sql | 0 .../test_min_max_metric_time__plan0_optimized.sql | 0 .../Trino/test_min_max_metric_time_week__plan0.sql | 0 ...est_min_max_metric_time_week__plan0_optimized.sql | 0 .../Trino/test_min_max_only_categorical__plan0.sql | 0 ...est_min_max_only_categorical__plan0_optimized.sql | 0 .../Trino/test_min_max_only_time__plan0.sql | 0 .../test_min_max_only_time__plan0_optimized.sql | 0 .../Trino/test_min_max_only_time_quarter__plan0.sql | 0 ...st_min_max_only_time_quarter__plan0_optimized.sql | 0 .../test_multi_hop_through_scd_dimension__plan0.sql | 0 ...ti_hop_through_scd_dimension__plan0_optimized.sql | 0 .../Trino/test_multi_hop_to_scd_dimension__plan0.sql | 0 ...t_multi_hop_to_scd_dimension__plan0_optimized.sql | 0 .../SqlQueryPlan/Trino/test_multihop_node__plan0.sql | 0 .../Trino/test_multihop_node__plan0_optimized.sql | 0 .../test_multiple_metrics_no_dimensions__plan0.sql | 0 ...ltiple_metrics_no_dimensions__plan0_optimized.sql | 0 .../Trino/test_partitioned_join__plan0.sql | 0 .../Trino/test_partitioned_join__plan0_optimized.sql | 0 .../str/BigQuery/test_id_enumeration__query.sql | 0 .../str/BigQuery/test_render_query__query0.sql | 0 .../str/Databricks/test_id_enumeration__query.sql | 0 .../str/Databricks/test_render_query__query0.sql | 0 .../str/DuckDB/test_id_enumeration__query.sql | 0 .../str/DuckDB/test_render_query__query0.sql | 0 .../str/Postgres/test_id_enumeration__query.sql | 0 .../str/Postgres/test_render_query__query0.sql | 0 .../str/Redshift/test_id_enumeration__query.sql | 0 .../str/Redshift/test_render_query__query0.sql | 0 .../str/Snowflake/test_id_enumeration__query.sql | 0 .../str/Snowflake/test_render_query__query0.sql | 0 .../str/Trino/test_id_enumeration__query.sql | 0 .../str/Trino/test_render_query__query0.sql | 0 ...shot__accumulate_last_2_months_metric__gbir_6.xml | 0 ...ric_with_different_parent_time_grains__gbir_5.xml | 0 ...d_metric_with_same_parent_time_grains__gbir_4.xml | 0 ...t__metrics_with_different_time_grains__gbir_3.xml | 0 ...apshot__metrics_with_same_time_grains__gbir_2.xml | 0 .../test_snapshot__no_metrics__gbir_0.xml | 0 .../test_snapshot__simple_metric__gbir_1.xml | 0 .../test_colliding_alias__after_reducing.sql | 0 .../test_colliding_alias__before_reducing.sql | 0 .../test_reduce_all_join_sources__after_reducing.sql | 0 ...test_reduce_all_join_sources__before_reducing.sql | 0 .../test_reduce_join__after_reducing.sql | 0 .../test_reduce_join__before_reducing.sql | 0 .../test_reduce_sub_query__after_reducing.sql | 0 .../test_reduce_sub_query__before_reducing.sql | 0 ...cing_join_left_node_statement__after_reducing.sql | 0 ...ing_join_left_node_statement__before_reducing.sql | 0 .../test_reducing_join_statement__after_reducing.sql | 0 ...test_reducing_join_statement__before_reducing.sql | 0 ...ct_select_node_is_not_reduced__after_reducing.sql | 0 ...t_select_node_is_not_reduced__before_reducing.sql | 0 .../dict/test_get_names__result0.txt | 0 .../test_linkable_elements_for_measure__result0.txt | 0 .../test_linkable_elements_for_metrics__result0.txt | 0 ...ommon_dimensions_in_different_models__result0.txt | 0 .../tuple/test_elements_for_metric__result0.txt | 0 ...nkable_elements_for_no_metrics_query__result0.txt | 0 ...est_local_linked_elements_for_metric__result0.txt | 0 .../test_2_metrics_from_1_semantic_model__dfp_0.xml | 0 .../test_2_metrics_from_1_semantic_model__dfpo_0.xml | 0 .../test_2_metrics_from_2_semantic_models__dfp_0.xml | 0 ...test_2_metrics_from_2_semantic_models__dfpo_0.xml | 0 ..._2_ratio_metrics_from_1_semantic_model__dfp_0.xml | 0 ...2_ratio_metrics_from_1_semantic_model__dfpo_0.xml | 0 .../test_3_metrics_from_2_semantic_models__dfp_0.xml | 0 ...test_3_metrics_from_2_semantic_models__dfpo_0.xml | 0 .../test_constrained_metric_not_combined__dfp_0.xml | 0 .../test_constrained_metric_not_combined__dfpo_0.xml | 0 .../DataflowPlan/test_derived_metric__dfp_0.xml | 0 .../DataflowPlan/test_derived_metric__dfpo_0.xml | 0 ...derived_metric_with_non_derived_metric__dfp_0.xml | 0 ...erived_metric_with_non_derived_metric__dfpo_0.xml | 0 .../DataflowPlan/test_duplicate_measures__dfp_0.xml | 0 .../DataflowPlan/test_duplicate_measures__dfpo_0.xml | 0 .../test_nested_derived_metric__dfp_0.xml | 0 .../test_nested_derived_metric__dfpo_0.xml | 0 ...d_metrics_with_common_filtered_metric__result.txt | 0 ..._resolution_for_invalid_metric_filter__result.txt | 0 ...ution_for_invalid_metric_input_filter__result.txt | 0 ...er_resolution_for_valid_metric_filter__result.txt | 0 ...olution_for_valid_metric_input_filter__result.txt | 0 ...tion__accumulate_last_2_months_metric__result.txt | 0 ...ric_with_different_parent_time_grains__result.txt | 0 ...d_metric_with_same_parent_time_grains__result.txt | 0 ...n__metrics_with_different_time_grains__result.txt | 0 ...lution__metrics_with_same_time_grains__result.txt | 0 ...st_filter_spec_resolution__no_metrics__result.txt | 0 ...filter_spec_resolution__simple_metric__result.txt | 0 .../str/test_window_function_expr__rendered_sql.txt | 0 .../BigQuery/test_component_rendering__plan0.sql | 0 .../BigQuery/test_component_rendering__plan1.sql | 0 .../BigQuery/test_component_rendering__plan2.sql | 0 .../BigQuery/test_component_rendering__plan3.sql | 0 .../BigQuery/test_component_rendering__plan4.sql | 0 .../BigQuery/test_component_rendering__plan5.sql | 0 .../test_render_create_table_as__create_table_as.sql | 0 .../test_render_create_table_as__create_view_as.sql | 0 .../BigQuery/test_render_limit__plan0.sql | 0 .../BigQuery/test_render_order_by__plan0.sql | 0 .../BigQuery/test_render_where__plan0.sql | 0 .../Databricks/test_component_rendering__plan0.sql | 0 .../Databricks/test_component_rendering__plan1.sql | 0 .../Databricks/test_component_rendering__plan2.sql | 0 .../Databricks/test_component_rendering__plan3.sql | 0 .../Databricks/test_component_rendering__plan4.sql | 0 .../Databricks/test_component_rendering__plan5.sql | 0 .../test_render_create_table_as__create_table_as.sql | 0 .../test_render_create_table_as__create_view_as.sql | 0 .../Databricks/test_render_limit__plan0.sql | 0 .../Databricks/test_render_order_by__plan0.sql | 0 .../Databricks/test_render_where__plan0.sql | 0 .../DuckDB/test_component_rendering__plan0.sql | 0 .../DuckDB/test_component_rendering__plan1.sql | 0 .../DuckDB/test_component_rendering__plan2.sql | 0 .../DuckDB/test_component_rendering__plan3.sql | 0 .../DuckDB/test_component_rendering__plan4.sql | 0 .../DuckDB/test_component_rendering__plan5.sql | 0 .../test_render_create_table_as__create_table_as.sql | 0 .../test_render_create_table_as__create_view_as.sql | 0 .../SqlQueryPlan/DuckDB/test_render_limit__plan0.sql | 0 .../DuckDB/test_render_order_by__plan0.sql | 0 .../SqlQueryPlan/DuckDB/test_render_where__plan0.sql | 0 .../Postgres/test_component_rendering__plan0.sql | 0 .../Postgres/test_component_rendering__plan1.sql | 0 .../Postgres/test_component_rendering__plan2.sql | 0 .../Postgres/test_component_rendering__plan3.sql | 0 .../Postgres/test_component_rendering__plan4.sql | 0 .../Postgres/test_component_rendering__plan5.sql | 0 .../test_render_create_table_as__create_table_as.sql | 0 .../test_render_create_table_as__create_view_as.sql | 0 .../Postgres/test_render_limit__plan0.sql | 0 .../Postgres/test_render_order_by__plan0.sql | 0 .../Postgres/test_render_where__plan0.sql | 0 .../Redshift/test_component_rendering__plan0.sql | 0 .../Redshift/test_component_rendering__plan1.sql | 0 .../Redshift/test_component_rendering__plan2.sql | 0 .../Redshift/test_component_rendering__plan3.sql | 0 .../Redshift/test_component_rendering__plan4.sql | 0 .../Redshift/test_component_rendering__plan5.sql | 0 .../test_render_create_table_as__create_table_as.sql | 0 .../test_render_create_table_as__create_view_as.sql | 0 .../Redshift/test_render_limit__plan0.sql | 0 .../Redshift/test_render_order_by__plan0.sql | 0 .../Redshift/test_render_where__plan0.sql | 0 .../Snowflake/test_component_rendering__plan0.sql | 0 .../Snowflake/test_component_rendering__plan1.sql | 0 .../Snowflake/test_component_rendering__plan2.sql | 0 .../Snowflake/test_component_rendering__plan3.sql | 0 .../Snowflake/test_component_rendering__plan4.sql | 0 .../Snowflake/test_component_rendering__plan5.sql | 0 .../test_render_create_table_as__create_table_as.sql | 0 .../test_render_create_table_as__create_view_as.sql | 0 .../Snowflake/test_render_limit__plan0.sql | 0 .../Snowflake/test_render_order_by__plan0.sql | 0 .../Snowflake/test_render_where__plan0.sql | 0 .../Trino/test_component_rendering__plan0.sql | 0 .../Trino/test_component_rendering__plan1.sql | 0 .../Trino/test_component_rendering__plan2.sql | 0 .../Trino/test_component_rendering__plan3.sql | 0 .../Trino/test_component_rendering__plan4.sql | 0 .../Trino/test_component_rendering__plan5.sql | 0 .../test_render_create_table_as__create_table_as.sql | 0 .../test_render_create_table_as__create_view_as.sql | 0 .../SqlQueryPlan/Trino/test_render_limit__plan0.sql | 0 .../Trino/test_render_order_by__plan0.sql | 0 .../SqlQueryPlan/Trino/test_render_where__plan0.sql | 0 ...ct_select_node_is_not_reduced__after_reducing.sql | 0 ...t_select_node_is_not_reduced__before_reducing.sql | 0 .../test_reduce_sub_query__after_reducing.sql | 0 .../test_reduce_sub_query__before_reducing.sql | 0 ...rder_by_with_a_join_in_parent__after_reducing.sql | 0 ...der_by_with_a_join_in_parent__before_reducing.sql | 0 ...fined_filters_in_multi_metric_query__result_0.txt | 0 ...uggestions_for_defined_where_filter__result_0.txt | 0 .../test_suggestions_for_group_by_item__result_0.txt | 0 .../str/test_suggestions_for_metric__result_0.txt | 0 ...st_suggestions_for_multiple_metrics__result_0.txt | 0 ...as_simplification__after_alias_simplification.sql | 0 ...s_simplification__before_alias_simplification.sql | 0 .../test_simple_join_to_time_spine__plan0.sql | 0 ...st_simple_join_to_time_spine__plan0_optimized.sql | 0 .../test_simple_join_to_time_spine__plan0.sql | 0 ...st_simple_join_to_time_spine__plan0_optimized.sql | 0 .../DuckDB/test_simple_join_to_time_spine__plan0.sql | 0 ...st_simple_join_to_time_spine__plan0_optimized.sql | 0 .../test_simple_join_to_time_spine__plan0.sql | 0 ...st_simple_join_to_time_spine__plan0_optimized.sql | 0 .../test_simple_join_to_time_spine__plan0.sql | 0 ...st_simple_join_to_time_spine__plan0_optimized.sql | 0 .../test_simple_join_to_time_spine__plan0.sql | 0 ...st_simple_join_to_time_spine__plan0_optimized.sql | 0 .../Trino/test_simple_join_to_time_spine__plan0.sql | 0 ...st_simple_join_to_time_spine__plan0_optimized.sql | 0 {tests => tests_metricflow}/source_schema_tools.py | 6 +++--- {tests => tests_metricflow}/sql/__init__.py | 0 {tests => tests_metricflow}/sql/compare_sql_plan.py | 4 ++-- .../sql/optimizer/__init__.py | 0 .../sql/optimizer/test_column_pruner.py | 4 ++-- .../optimizer/test_rewriting_sub_query_reducer.py | 4 ++-- .../sql/optimizer/test_sub_query_reducer.py | 4 ++-- .../sql/optimizer/test_table_alias_simplifier.py | 4 ++-- .../sql/test_engine_specific_rendering.py | 4 ++-- .../sql/test_sql_expr_render.py | 4 ++-- .../sql/test_sql_plan_render.py | 4 ++-- {tests => tests_metricflow}/sql_clients/__init__.py | 0 .../sql_clients/test_date_time_operations.py | 0 .../sql_clients/test_sql_client.py | 6 +++--- .../table_snapshot/__init__.py | 0 .../table_snapshot/example_table_snapshot.yaml | 0 .../table_snapshot/table_snapshots.py | 2 +- .../table_snapshot/test_source_schema.py | 10 +++++----- .../table_snapshot/test_table_snapshots.py | 8 ++++---- {tests => tests_metricflow}/telemetry/__init__.py | 0 .../telemetry/test_telemetry.py | 2 +- .../test_instance_serialization.py | 2 +- {tests => tests_metricflow}/time/__init__.py | 0 .../time/metric_time_dimension.py | 0 2424 files changed, 209 insertions(+), 205 deletions(-) delete mode 100644 tests/conftest.py rename {tests => tests_metricflow}/__init__.py (100%) rename {tests => tests_metricflow}/cli/__init__.py (100%) rename {tests => tests_metricflow}/cli/test_cli.py (96%) rename {tests => tests_metricflow}/cli/test_custom_click_types.py (100%) rename {tests => tests_metricflow}/compare_df.py (100%) create mode 100644 tests_metricflow/conftest.py rename {tests => tests_metricflow}/dataflow/__init__.py (100%) rename {tests => tests_metricflow}/dataflow/builder/__init__.py (100%) rename {tests => tests_metricflow}/dataflow/builder/test_cyclic_join.py (80%) rename {tests => tests_metricflow}/dataflow/builder/test_dataflow_plan_builder.py (99%) rename {tests => tests_metricflow}/dataflow/builder/test_measure_additiveness.py (100%) rename {tests => tests_metricflow}/dataflow/builder/test_node_data_set.py (95%) rename {tests => tests_metricflow}/dataflow/builder/test_node_evaluator.py (99%) rename {tests => tests_metricflow}/dataflow/optimizer/__init__.py (100%) rename {tests => tests_metricflow}/dataflow/optimizer/source_scan/__init__.py (100%) rename {tests => tests_metricflow}/dataflow/optimizer/source_scan/test_cm_branch_combiner.py (91%) rename {tests => tests_metricflow}/dataflow/optimizer/source_scan/test_source_scan_optimizer.py (98%) rename {tests => tests_metricflow}/dataflow/test_sql_column.py (100%) rename {tests => tests_metricflow}/dataflow/test_sql_table.py (100%) rename {tests => tests_metricflow}/dataflow_plan_to_svg.py (93%) rename {tests => tests_metricflow}/dataset/__init__.py (100%) rename {tests => tests_metricflow}/dataset/test_convert_semantic_model.py (91%) rename {tests => tests_metricflow}/examples/__init__.py (100%) rename {tests => tests_metricflow}/examples/test_node_sql.py (100%) rename {tests => tests_metricflow}/execution/__init__.py (100%) rename {tests => tests_metricflow}/execution/noop_task.py (100%) rename {tests => tests_metricflow}/execution/test_sequential_executor.py (97%) rename {tests => tests_metricflow}/execution/test_tasks.py (94%) rename {tests => tests_metricflow}/fixtures/__init__.py (100%) rename {tests => tests_metricflow}/fixtures/cli_fixtures.py (98%) rename {tests => tests_metricflow}/fixtures/dataflow_fixtures.py (92%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/.gitignore (100%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/.user.yml (100%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/README.md (100%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/analyses/.gitkeep (100%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/dbt_project.yml (100%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/macros/.gitkeep (100%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/models/example/my_first_dbt_model.sql (100%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/models/example/my_second_dbt_model.sql (100%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/models/example/schema.yml (100%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/profiles.yml (100%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/seeds/.gitkeep (100%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/snapshots/.gitkeep (100%) rename {tests => tests_metricflow}/fixtures/dbt_projects/metricflow_testing/tests/.gitkeep (100%) rename {tests => tests_metricflow}/fixtures/id_fixtures.py (100%) rename {tests => tests_metricflow}/fixtures/manifest_fixtures.py (98%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/metrics.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/monthly_measures_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/yearly_measures_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/config_linter_manifest/multiple_semantic_models_without_divider.yml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/config_linter_manifest/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest_cyclic.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/cyclic_join_manifest/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/semantic_models/semantic_model1.yml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_cumulative.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_last_month.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_monthly_cumulative.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/extended_date_manifest/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/bookings_monthly_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/extended_bookings_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/listings_extended_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/join_types_manifest/bookings_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/join_types_manifest/listings_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/join_types_manifest/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/account_month_txns.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/bridge_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_other_data.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/third_hop_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/non_sm_manifest/bookings_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/non_sm_manifest/listings_latest.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/non_sm_manifest/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/account_month_txns.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/bridge_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_other_data.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/third_hop_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/scd_manifest/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/scd_manifest/scd_accounts.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/scd_manifest/scd_bookings.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/scd_manifest/scd_companies.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/scd_manifest/scd_listings.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/scd_manifest/scd_lux_listings.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/scd_manifest/scd_metrics.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/scd_manifest/scd_users.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/shared/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/metrics.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/saved_queries.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/accounts_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/bookings_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/buys_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/companies.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/id_verifications.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/listings_latest.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/lux_listing_mapping.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/revenue.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/users_latest.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/views_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/visits_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/all_entity_measure_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_dimension_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_measure_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_dimension_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_measure_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_source.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/metrics.yaml (100%) rename {tests => tests_metricflow}/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/project_configuration.yaml (100%) rename {tests => tests_metricflow}/fixtures/setup_fixtures.py (97%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/data_warehouse_validation_model/fct_animals.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/extended_date_model/dim_listings_extended.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/extended_date_model/fct_bookings_extended.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/extended_date_model/fct_bookings_extended_monthly.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/multi_hop_join_model/account_month_txns.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/multi_hop_join_model/bridge_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/multi_hop_join_model/customer_other_data.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/multi_hop_join_model/customer_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/multi_hop_join_model/third_hop_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/dim_companies.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/dim_listings.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/dim_listings_latest.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/dim_lux_listing_id_mapping.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/dim_lux_listings.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/dim_primary_accounts.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/dim_users.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/dim_users_latest.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/fct_accounts.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/fct_bookings.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/fct_bookings_dt.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/fct_buys.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/fct_id_verifications.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/fct_revenue.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/fct_views.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_model/fct_visits.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/all_entity_measure_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_0_dimension_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_0_measure_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_dimension_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_measure_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_2_measure_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_table.yaml (100%) rename {tests => tests_metricflow}/fixtures/source_table_snapshots/time_spine_table/mf_time_spine.yaml (100%) rename {tests => tests_metricflow}/fixtures/sql_client_fixtures.py (97%) rename {tests => tests_metricflow}/fixtures/sql_clients/__init__.py (100%) rename {tests => tests_metricflow}/fixtures/sql_clients/adapter_backed_ddl_client.py (100%) rename {tests => tests_metricflow}/fixtures/sql_clients/base_sql_client_implementation.py (100%) rename {tests => tests_metricflow}/fixtures/sql_clients/common_client.py (100%) rename {tests => tests_metricflow}/fixtures/sql_clients/ddl_sql_client.py (100%) rename {tests => tests_metricflow}/fixtures/sql_clients/sqlalchemy_dialect.py (97%) rename {tests => tests_metricflow}/fixtures/sql_fixtures.py (94%) rename {tests => tests_metricflow}/fixtures/table_fixtures.py (90%) rename {tests => tests_metricflow}/generate_snapshots.py (98%) rename {tests => tests_metricflow}/inference/__init__.py (100%) rename {tests => tests_metricflow}/inference/context/__init__.py (100%) rename {tests => tests_metricflow}/inference/context/test_data_warehouse.py (100%) rename {tests => tests_metricflow}/inference/context/test_snowflake.py (100%) rename {tests => tests_metricflow}/inference/renderer/__init__.py (100%) rename {tests => tests_metricflow}/inference/renderer/test_config_file.py (100%) rename {tests => tests_metricflow}/inference/rule/__init__.py (100%) rename {tests => tests_metricflow}/inference/rule/conftest.py (100%) rename {tests => tests_metricflow}/inference/rule/test_defaults.py (100%) rename {tests => tests_metricflow}/inference/rule/test_rules.py (100%) rename {tests => tests_metricflow}/inference/solver/__init__.py (100%) rename {tests => tests_metricflow}/inference/solver/test_weighted_tree.py (100%) rename {tests => tests_metricflow}/inference/test_models.py (100%) rename {tests => tests_metricflow}/integration/__init__.py (100%) rename {tests => tests_metricflow}/integration/configured_test_case.py (100%) rename {tests => tests_metricflow}/integration/conftest.py (95%) rename {tests => tests_metricflow}/integration/query_output/__init__.py (100%) rename {tests => tests_metricflow}/integration/query_output/test_cumulative_metrics.py (96%) rename {tests => tests_metricflow}/integration/query_output/test_fill_nulls_with_0.py (95%) rename {tests => tests_metricflow}/integration/query_output/test_metric_filter_output.py (90%) rename {tests => tests_metricflow}/integration/query_output/test_offset_metrics.py (90%) rename {tests => tests_metricflow}/integration/test_cases/itest_constraints.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_conversion_metric.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_cumulative_metric.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_dimensions.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_dundered_identifiers.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_granularity.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_joins.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_measure_aggregations.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_measure_constraints.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_metric_queries_no_dimensions.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_metrics.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_multi_hop_join.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_order_limit.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_partitions.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_scd.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_semi_additive_measure.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_simple.yaml (100%) rename {tests => tests_metricflow}/integration/test_cases/itest_simple_non_sm.yaml (100%) rename {tests => tests_metricflow}/integration/test_configured_cases.py (98%) rename {tests => tests_metricflow}/integration/test_mf_engine.py (68%) rename {tests => tests_metricflow}/integration/test_rendered_query.py (93%) rename {tests => tests_metricflow}/plan_conversion/__init__.py (100%) rename {tests => tests_metricflow}/plan_conversion/dataflow_to_sql/__init__.py (100%) rename {tests => tests_metricflow}/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py (97%) rename {tests => tests_metricflow}/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py (94%) rename {tests => tests_metricflow}/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py (91%) rename {tests => tests_metricflow}/plan_conversion/instance_converters/__init__.py (100%) rename {tests => tests_metricflow}/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py (98%) rename {tests => tests_metricflow}/plan_conversion/instance_converters/test_create_validity_window_join_description.py (97%) rename {tests => tests_metricflow}/plan_conversion/test_dataflow_to_execution.py (97%) rename {tests => tests_metricflow}/plan_conversion/test_dataflow_to_sql_plan.py (98%) rename {tests => tests_metricflow}/plan_conversion/test_time_spine.py (100%) rename {tests => tests_metricflow}/populate_persistent_source_schemas.py (96%) rename {tests => tests_metricflow}/prototype_utils.py (100%) rename {tests => tests_metricflow}/query_rendering/__init__.py (100%) rename {tests => tests_metricflow}/query_rendering/compare_rendered_query.py (90%) rename {tests => tests_metricflow}/query_rendering/test_cumulative_metric_rendering.py (97%) rename {tests => tests_metricflow}/query_rendering/test_derived_metric_rendering.py (99%) rename {tests => tests_metricflow}/query_rendering/test_fill_nulls_with_rendering.py (98%) rename {tests => tests_metricflow}/query_rendering/test_granularity_date_part_rendering.py (96%) rename {tests => tests_metricflow}/query_rendering/test_metric_filter_rendering.py (98%) rename {tests => tests_metricflow}/query_rendering/test_metric_time_without_metrics.py (95%) rename {tests => tests_metricflow}/query_rendering/test_query_rendering.py (98%) rename {tests => tests_metricflow}/query_rendering/test_time_spine_join_rendering.py (91%) rename {tests => tests_metricflow}/semantics/__init__.py (100%) rename {tests => tests_metricflow}/semantics/collection_helpers/__init__.py (100%) rename {tests => tests_metricflow}/semantics/collection_helpers/test_merger.py (100%) rename {tests => tests_metricflow}/semantics/collection_helpers/test_pretty_print.py (98%) rename {tests => tests_metricflow}/semantics/mf_logging/__init__.py (100%) rename {tests => tests_metricflow}/semantics/mf_logging/test_dag_to_text.py (100%) rename {tests => tests_metricflow}/semantics/model/__init__.py (100%) rename {tests => tests_metricflow}/semantics/model/example_project_configuration.py (100%) rename {tests => tests_metricflow}/semantics/model/modify/__init__.py (100%) rename {tests => tests_metricflow}/semantics/model/modify/modify_input_measure_filter.py (100%) rename {tests => tests_metricflow}/semantics/model/modify/modify_input_metric_filter.py (100%) rename {tests => tests_metricflow}/semantics/model/modify/modify_manifest.py (100%) rename {tests => tests_metricflow}/semantics/model/modify/modify_metric_filter.py (100%) rename {tests => tests_metricflow}/semantics/model/semantics/__init__.py (100%) rename {tests => tests_metricflow}/semantics/model/semantics/test_linkable_element_set.py (100%) rename {tests => tests_metricflow}/semantics/model/semantics/test_linkable_spec_resolver.py (97%) rename {tests => tests_metricflow}/semantics/model/semantics/test_semantic_model_join_evaluator.py (99%) rename {tests => tests_metricflow}/semantics/model/test_data_warehouse_tasks.py (98%) rename {tests => tests_metricflow}/semantics/model/test_semantic_model_container.py (97%) rename {tests => tests_metricflow}/semantics/model/test_where_filter_spec.py (99%) rename {tests => tests_metricflow}/semantics/naming/__init__.py (100%) rename {tests => tests_metricflow}/semantics/naming/conftest.py (95%) rename {tests => tests_metricflow}/semantics/naming/test_dunder_naming_scheme.py (97%) rename {tests => tests_metricflow}/semantics/naming/test_metric_name_scheme.py (100%) rename {tests => tests_metricflow}/semantics/naming/test_object_builder_naming_scheme.py (97%) rename {tests => tests_metricflow}/semantics/query/__init__.py (100%) rename {tests => tests_metricflow}/semantics/query/group_by_item/__init__.py (100%) rename {tests => tests_metricflow}/semantics/query/group_by_item/ambiguous_resolution_query_id.py (100%) rename {tests => tests_metricflow}/semantics/query/group_by_item/conftest.py (95%) rename {tests => tests_metricflow}/semantics/query/group_by_item/filter_spec_resolution/__init__.py (100%) rename {tests => tests_metricflow}/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py (94%) rename {tests => tests_metricflow}/semantics/query/group_by_item/resolution_dag/__init__.py (100%) rename {tests => tests_metricflow}/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py (80%) rename {tests => tests_metricflow}/semantics/query/group_by_item/test_available_group_by_items.py (84%) rename {tests => tests_metricflow}/semantics/query/group_by_item/test_matching_item_for_filters.py (88%) rename {tests => tests_metricflow}/semantics/query/group_by_item/test_matching_item_for_querying.py (94%) rename {tests => tests_metricflow}/semantics/query/test_ambiguous_entity_path.py (95%) rename {tests => tests_metricflow}/semantics/query/test_query_parser.py (99%) rename {tests => tests_metricflow}/semantics/query/test_suggestions.py (94%) rename {tests => tests_metricflow}/semantics/specs/__init__.py (100%) rename {tests => tests_metricflow}/semantics/specs/conftest.py (100%) rename {tests => tests_metricflow}/semantics/specs/patterns/__init__.py (100%) rename {tests => tests_metricflow}/semantics/specs/patterns/test_entity_link_pattern.py (98%) rename {tests => tests_metricflow}/semantics/specs/patterns/test_typed_patterns.py (100%) rename {tests => tests_metricflow}/semantics/specs/test_time_dimension_spec.py (100%) rename {tests => tests_metricflow}/semantics/specs/test_where_filter_entity.py (92%) rename {tests => tests_metricflow}/semantics/sql/__init__.py (100%) rename {tests => tests_metricflow}/semantics/sql/test_bind_parameter_serialization.py (100%) rename {tests => tests_metricflow}/semantics/test_specs.py (100%) rename {tests => tests_metricflow}/snapshot_utils.py (99%) rename {tests => tests_metricflow}/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_ambiguous_entity_path_resolves_to_shortest_entity_path_item__result_0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_resolvable_ambiguous_entity_path__result_0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_mismatch__result_0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_multiple_matches__result_0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__accumulate_last_2_months_metric__set0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_different_parent_time_grains__set0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_same_parent_time_grains__set0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_different_time_grains__set0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_same_time_grains__set0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__simple_metric__set0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/BigQuery/test_saved_query__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_cumulative_metric__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_limit__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_where__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Databricks/test_saved_query__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Databricks/test_saved_query_with_cumulative_metric__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Databricks/test_saved_query_with_limit__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Databricks/test_saved_query_with_where__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/DuckDB/test_saved_query__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_cumulative_metric__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_limit__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_where__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Postgres/test_saved_query__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Postgres/test_saved_query_with_cumulative_metric__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Postgres/test_saved_query_with_limit__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Postgres/test_saved_query_with_where__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Redshift/test_saved_query__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Redshift/test_saved_query_with_cumulative_metric__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Redshift/test_saved_query_with_limit__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Redshift/test_saved_query_with_where__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Snowflake/test_saved_query__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_cumulative_metric__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_limit__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_where__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Trino/test_saved_query__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Trino/test_saved_query_with_cumulative_metric__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Trino/test_saved_query_with_limit__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cli.py/str/Trino/test_saved_query_with_where__cli_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cm_branch_combiner.py/DataflowPlan/test_filter_combination__dfpo_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_cm_branch_combiner.py/DataflowPlan/test_read_sql_source_combination__dfpo_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_if_in_where__after_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_if_in_where__before_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_with_str_expr__after_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_with_str_expr__before_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_no_pruning__after_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_no_pruning__before_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_distinct_select__after_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_distinct_select__before_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_from_source__after_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_from_source__before_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents__after_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents__before_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents_in_join_query__after_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents_in_join_query__before_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_joined_source__after_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_joined_source__before_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_str_expr__after_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_str_expr__before_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_with_str_expr__after_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_with_str_expr__before_pruning.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_count_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_count_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_count_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_count_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_constant_properties__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_constant_properties__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_count_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_count_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_count_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_count_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_constant_properties__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_constant_properties__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_count_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_count_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_constant_properties__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_constant_properties__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_count_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_count_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_count_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_count_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_constant_properties__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_constant_properties__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_no_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_no_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_count_with_no_group_by__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_constant_properties__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_no_group_by__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_window__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_query_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_table_semantic_model_with_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_table_semantic_model_without_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_query_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_table_semantic_model_with_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_table_semantic_model_without_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_query_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_table_semantic_model_with_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_table_semantic_model_without_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_query_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_table_semantic_model_with_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_table_semantic_model_without_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_query_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_table_semantic_model_with_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_table_semantic_model_without_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_query_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_table_semantic_model_with_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_table_semantic_model_without_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_query_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_table_semantic_model_with_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_table_semantic_model_without_measures__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/list/test_convert_table_semantic_model_with_measures__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_convert_semantic_model.py/list/test_convert_table_semantic_model_without_measures__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_grain_to_date__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_grain_to_date__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_ds__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_ds__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_agg_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_grain_to_date__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_grain_to_date__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_ds__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_ds__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_agg_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_grain_to_date__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_grain_to_date__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_ds__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_ds__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_agg_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_grain_to_date__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_grain_to_date__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_ds__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_ds__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_agg_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_grain_to_date__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_grain_to_date__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_ds__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_ds__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_agg_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_grain_to_date__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_grain_to_date__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_ds__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_ds__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_agg_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_grain_to_date__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_grain_to_date__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_ds__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_ds__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_agg_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/BigQuery/test_cumulative_metric_with_non_adjustable_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/BigQuery/test_grain_to_date_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/BigQuery/test_multiple_cumulative_metrics__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/BigQuery/test_non_additive_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/BigQuery/test_simple_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Databricks/test_cumulative_metric_with_non_adjustable_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Databricks/test_grain_to_date_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Databricks/test_multiple_cumulative_metrics__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Databricks/test_non_additive_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Databricks/test_simple_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/DuckDB/test_cumulative_metric_with_non_adjustable_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/DuckDB/test_grain_to_date_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/DuckDB/test_multiple_cumulative_metrics__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/DuckDB/test_non_additive_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/DuckDB/test_simple_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Postgres/test_cumulative_metric_with_non_adjustable_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Postgres/test_grain_to_date_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Postgres/test_multiple_cumulative_metrics__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Postgres/test_non_additive_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Postgres/test_simple_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Redshift/test_cumulative_metric_with_non_adjustable_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Redshift/test_grain_to_date_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Redshift/test_multiple_cumulative_metrics__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Redshift/test_non_additive_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Redshift/test_simple_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Snowflake/test_cumulative_metric_with_non_adjustable_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Snowflake/test_grain_to_date_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Snowflake/test_multiple_cumulative_metrics__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Snowflake/test_non_additive_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Snowflake/test_simple_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Trino/test_cumulative_metric_with_non_adjustable_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Trino/test_grain_to_date_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Trino/test_multiple_cumulative_metrics__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Trino/test_non_additive_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cumulative_metrics.py/str/Trino/test_simple_cumulative_metric__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_cyclic_join.py/DataflowPlan/test_cyclic_join__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_data_warehouse_tasks.py/str/BigQuery/test_build_metric_tasks__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_data_warehouse_tasks.py/str/Databricks/test_build_metric_tasks__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_data_warehouse_tasks.py/str/DuckDB/test_build_metric_tasks__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_data_warehouse_tasks.py/str/Postgres/test_build_metric_tasks__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_data_warehouse_tasks.py/str/Redshift/test_build_metric_tasks__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_data_warehouse_tasks.py/str/Snowflake/test_build_metric_tasks__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_data_warehouse_tasks.py/str/Trino/test_build_metric_tasks__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_common_semantic_model__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_with_metric_time__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_without_metric_time__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_window__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_to_grain__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_window__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_with_granularity__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_offset_cumulative_metric__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dimensions_with_time_constraint__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan_with_join__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dont_join_to_time_spine_if_no_time_dimension_requested__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_derived_metric__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_filters__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_metric_time__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_non_metric_time__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_joined_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_limit_rows_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_with_reused_measure_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_metric_where_filter__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_query_where_filter__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_only__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_quarter__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_with_other_dimensions__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time_week__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_categorical__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time_year__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multi_semantic_model_ratio_metrics_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multihop_join_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multiple_metrics_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_nested_derived_metric_with_outer_offset__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_to_grain_metric_filter_and_query_have_different_granularities__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_window_metric_filter_and_query_have_different_granularities__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_order_by_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_primary_entity_dimension__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_simple_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_single_semantic_model_ratio_metrics_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan_time_dimension__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_with_common_linkable_plan__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_multihop_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_small_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_multihop_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_small_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_multihop_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_small_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_multihop_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_small_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_multihop_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_small_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_multihop_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_small_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_multihop_joined_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_small_combined_metrics_plan__ep_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_compute_metrics_node_simple_expr__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_with_offset_to_grain__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_with_offset_window__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_without_offset__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_combine_output_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_combine_output_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_simple_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_simple_expr__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_constrain_time_range_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_constrain_time_range_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimension_with_joined_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimension_with_joined_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_without_offset__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_without_offset__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_measure_aggregation_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_measure_aggregation_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_multi_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_multi_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_order_by_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_order_by_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_grouping__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_grouping__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_queried_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_single_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_single_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_source_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_source_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_combine_output_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_combine_output_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_simple_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_simple_expr__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_constrain_time_range_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_constrain_time_range_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimension_with_joined_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimension_with_joined_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_without_offset__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_without_offset__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_measure_aggregation_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_measure_aggregation_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_multi_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_multi_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_order_by_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_order_by_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_grouping__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_grouping__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_queried_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_single_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_single_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_source_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_source_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_combine_output_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_combine_output_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_simple_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_simple_expr__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_constrain_time_range_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_constrain_time_range_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimension_with_joined_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimension_with_joined_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_without_offset__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_without_offset__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_measure_aggregation_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_measure_aggregation_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_multi_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_multi_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_order_by_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_order_by_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_grouping__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_grouping__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_queried_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_single_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_single_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_source_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_source_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_combine_output_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_combine_output_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_simple_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_simple_expr__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_constrain_time_range_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_constrain_time_range_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimension_with_joined_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimension_with_joined_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_without_offset__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_without_offset__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_measure_aggregation_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_measure_aggregation_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_multi_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_multi_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_order_by_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_order_by_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_grouping__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_grouping__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_queried_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_single_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_single_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_source_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_source_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_combine_output_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_combine_output_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_simple_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_simple_expr__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_constrain_time_range_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_constrain_time_range_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimension_with_joined_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimension_with_joined_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_without_offset__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_without_offset__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_measure_aggregation_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_measure_aggregation_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_multi_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_multi_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_order_by_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_order_by_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_grouping__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_grouping__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_queried_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_single_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_single_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_source_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_source_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_combine_output_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_combine_output_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_simple_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_simple_expr__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_constrain_time_range_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_constrain_time_range_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimension_with_joined_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimension_with_joined_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_without_offset__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_without_offset__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_measure_aggregation_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_measure_aggregation_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_multi_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_multi_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_order_by_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_order_by_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_grouping__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_grouping__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_queried_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_single_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_single_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_source_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_source_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_combine_output_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_combine_output_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_simple_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_simple_expr__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_constrain_time_range_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_constrain_time_range_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimension_with_joined_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimension_with_joined_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_without_offset__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_without_offset__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_measure_aggregation_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_measure_aggregation_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_multi_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_multi_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_order_by_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_order_by_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_grouping__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_grouping__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_queried_group_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_single_join_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_single_join_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_source_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_source_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_combine_output_node__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_simple_expr__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_constrain_time_range_node__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimension_with_joined_where_constraint__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_filter_node__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_filter_with_where_constraint_node__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_with_offset_to_grain__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_with_offset_window__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_without_offset__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_measure_aggregation_node__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_multi_join_node__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_order_by_node__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node_with_grouping__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node_with_queried_group_by__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_single_join_node__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_source_node__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_multi_metric_fill_null__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_multi_metric_fill_null__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_multi_metric_fill_null__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_multi_metric_fill_null__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_multi_metric_fill_null__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_multi_metric_fill_null__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_multi_metric_fill_null__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_multi_metric_fill_null__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_multi_metric_fill_null__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_multi_metric_fill_null__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_multi_metric_fill_null__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_multi_metric_fill_null__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_cumulative_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_cumulative_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_multi_metric_fill_null__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_multi_metric_fill_null__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_where_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_where_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_multiple_granularities__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_multiple_granularities__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_agg_time_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_agg_time_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_time_offset_metric_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_time_offset_metric_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimension_values_with_a_join_and_a_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimension_values_with_a_join_and_a_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimension_values_with_a_join_and_a_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimension_values_with_a_join_and_a_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimension_values_with_a_join_and_a_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimension_values_with_a_join_and_a_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimension_values_with_a_join_and_a_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimension_values_with_a_join_and_a_filter__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_approximate_continuous_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_cast_to_timestamp__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_generate_uuid__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_approximate_discrete_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_cast_to_timestamp__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_continuous_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_generate_uuid__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_approximate_continuous_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_cast_to_timestamp__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_continuous_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_discrete_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_generate_uuid__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_cast_to_timestamp__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_continuous_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_discrete_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_generate_uuid__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_approximate_discrete_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_cast_to_timestamp__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_continuous_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_generate_uuid__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_approximate_continuous_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_cast_to_timestamp__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_continuous_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_discrete_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_generate_uuid__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_approximate_continuous_percentile_expr__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_cast_to_timestamp__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_generate_uuid__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_fill_nulls_with_0_multi_metric_query__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_fill_nulls_with_0_metric_time__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_fill_nulls_with_0_month__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_join_to_time_spine__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_fill_nulls_with_0_multi_metric_query__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_fill_nulls_with_0_metric_time__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_fill_nulls_with_0_month__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_join_to_time_spine__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_fill_nulls_with_0_multi_metric_query__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_fill_nulls_with_0_metric_time__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_fill_nulls_with_0_month__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_join_to_time_spine__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_fill_nulls_with_0_multi_metric_query__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_fill_nulls_with_0_metric_time__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_fill_nulls_with_0_month__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_join_to_time_spine__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_fill_nulls_with_0_multi_metric_query__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_fill_nulls_with_0_metric_time__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_fill_nulls_with_0_month__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_join_to_time_spine__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_fill_nulls_with_0_multi_metric_query__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_fill_nulls_with_0_metric_time__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_fill_nulls_with_0_month__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_join_to_time_spine__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Trino/test_fill_nulls_with_0_multi_metric_query__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Trino/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_fill_nulls_with_0_metric_time__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_fill_nulls_with_0_month__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_join_to_time_spine__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_fill_nulls__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_fill_nulls__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_with_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_with_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_cumulative_fill_nulls__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_cumulative_fill_nulls__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_join_to_time_spine_with_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_join_to_time_spine_with_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_fill_nulls__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_fill_nulls__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_with_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_with_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_cumulative_fill_nulls__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_cumulative_fill_nulls__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_join_to_time_spine_with_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_join_to_time_spine_with_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_cumulative_fill_nulls__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_cumulative_fill_nulls__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_join_to_time_spine_with_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_join_to_time_spine_with_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_fill_nulls__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_fill_nulls__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_with_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_with_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_cumulative_fill_nulls__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_cumulative_fill_nulls__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_join_to_time_spine_with_filters__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_join_to_time_spine_with_filters__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_month__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_month__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_without_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_multiple_date_parts__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_multiple_date_parts__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_multiple_date_parts__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_multiple_date_parts__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_multiple_date_parts__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_multiple_date_parts__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_multiple_date_parts__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_multiple_date_parts__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_multiple_date_parts__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_multiple_date_parts__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_multiple_date_parts__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_multiple_date_parts__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_date_part__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_date_part__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_multiple_date_parts__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_multiple_date_parts__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_linkable_spec_resolver.py/str/test_cyclic_join_manifest__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_cumulative_metric__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_derived_metrics__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_linkable_spec_resolver.py/str/test_one_property__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__accumulate_last_2_months_metric__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_different_parent_time_grains__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_same_parent_time_grains__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_different_time_grains__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_same_time_grains__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__simple_metric__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_matching_item_for_querying.py/AvailableGroupByItemsResolution/test_missing_parent_for_metric__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_invalid_group_by_item__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_unavailable_group_by_item_in_derived_metric_parent__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/BigQuery/test_metric_with_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/BigQuery/test_query_with_simple_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/Databricks/test_metric_with_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/Databricks/test_query_with_simple_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/DuckDB/test_metric_with_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/DuckDB/test_query_with_simple_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/Postgres/test_metric_with_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/Postgres/test_query_with_simple_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/Redshift/test_metric_with_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/Redshift/test_query_with_simple_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/Snowflake/test_metric_with_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/Snowflake/test_query_with_simple_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/Trino/test_metric_with_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_output.py/str/Trino/test_query_with_simple_metric_in_where_filter__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_metric_with_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_metric_with_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_simple_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_distinct_values_query_with_metric_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_distinct_values_query_with_metric_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_metric_with_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_metric_with_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_cumulative_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_derived_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_multiple_metrics_in_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_ratio_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_simple_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_distinct_values_query_with_metric_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_distinct_values_query_with_metric_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_metric_with_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_metric_with_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_cumulative_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_derived_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_multiple_metrics_in_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_ratio_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_simple_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values_query_with_metric_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values_query_with_metric_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_cumulative_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_derived_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_multiple_metrics_in_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_ratio_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_simple_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_distinct_values_query_with_metric_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_distinct_values_query_with_metric_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_metric_with_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_metric_with_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_cumulative_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_derived_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_multiple_metrics_in_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_ratio_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_simple_metric_in_where_filter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_simple_query_with_metric_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_simple_query_with_metric_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_simple_query_with_metric_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_simple_query_with_metric_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_simple_query_with_metric_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_simple_query_with_metric_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_simple_query_with_metric_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_simple_query_with_metric_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_simple_query_with_metric_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_simple_query_with_metric_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_simple_query_with_metric_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_simple_query_with_metric_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_simple_query_with_metric_time_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_simple_query_with_metric_time_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_metric_time_dimension_transform_node_using_primary_time__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_simple_query_with_metric_time_dimension__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_dimensions_with_time_constraint__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_only__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_quarter_alone__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_with_other_dimensions__plan0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_mf_engine.py/list/test_list_dimensions__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_node_data_set.py/list/test_joined_node_data_set__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/BigQuery/test_offset_to_grain_with_multiple_granularities__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/BigQuery/test_offset_to_grain_with_single_granularity__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/Databricks/test_offset_to_grain_with_multiple_granularities__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/Databricks/test_offset_to_grain_with_single_granularity__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/DuckDB/test_offset_to_grain_with_multiple_granularities__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/DuckDB/test_offset_to_grain_with_single_granularity__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/Postgres/test_offset_to_grain_with_multiple_granularities__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/Postgres/test_offset_to_grain_with_single_granularity__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/Redshift/test_offset_to_grain_with_multiple_granularities__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/Redshift/test_offset_to_grain_with_single_granularity__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/Snowflake/test_offset_to_grain_with_multiple_granularities__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/Snowflake/test_offset_to_grain_with_single_granularity__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/Trino/test_offset_to_grain_with_multiple_granularities__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_offset_metrics.py/str/Trino/test_offset_to_grain_with_single_granularity__query_output.txt (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_common_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_common_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_on_join_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_join_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_join_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_limit_rows__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_limit_rows__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_local_dimension_using_local_entity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_local_dimension_using_local_entity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_reused_measure__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_reused_measure__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_single_expr_and_alias__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_categorical__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_categorical__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time_quarter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time_quarter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_through_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_through_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multihop_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multihop_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multiple_metrics_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multiple_metrics_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_common_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_common_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_distinct_values__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_distinct_values__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_on_join_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_join_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_join_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_limit_rows__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_limit_rows__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_local_dimension_using_local_entity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_local_dimension_using_local_entity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_reused_measure__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_reused_measure__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_single_expr_and_alias__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_categorical__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_categorical__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time_quarter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time_quarter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_through_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_through_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multihop_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multihop_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multiple_metrics_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multiple_metrics_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_common_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_common_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_on_join_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_join_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_join_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_limit_rows__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_limit_rows__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_local_dimension_using_local_entity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_local_dimension_using_local_entity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_single_expr_and_alias__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_categorical__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_categorical__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time_quarter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time_quarter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multihop_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multihop_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_common_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_common_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_distinct_values__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_distinct_values__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_on_join_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_join_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_join_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_limit_rows__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_limit_rows__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_local_dimension_using_local_entity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_local_dimension_using_local_entity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_reused_measure__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_reused_measure__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_single_expr_and_alias__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_categorical__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_categorical__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time_quarter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time_quarter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_through_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_through_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multihop_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multihop_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multiple_metrics_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multiple_metrics_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_common_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_common_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_distinct_values__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_distinct_values__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_on_join_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_join_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_join_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_limit_rows__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_limit_rows__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_local_dimension_using_local_entity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_local_dimension_using_local_entity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_reused_measure__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_reused_measure__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_single_expr_and_alias__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_categorical__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_categorical__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time_quarter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time_quarter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_through_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_through_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multihop_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multihop_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multiple_metrics_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multiple_metrics_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_common_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_common_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_on_join_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_join_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_join_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_limit_rows__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_limit_rows__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_local_dimension_using_local_entity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_local_dimension_using_local_entity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_reused_measure__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_reused_measure__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_single_expr_and_alias__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_categorical__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_categorical__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time_quarter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time_quarter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_through_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_through_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multihop_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multihop_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multiple_metrics_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multiple_metrics_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_common_semantic_model__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_common_semantic_model__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_distinct_values__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_distinct_values__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_on_join_dim__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_join_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_join_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_limit_rows__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_limit_rows__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_local_dimension_using_local_entity__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_local_dimension_using_local_entity__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_reused_measure__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_reused_measure__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_single_expr_and_alias__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_categorical__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_categorical__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time_quarter__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time_quarter__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_through_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_through_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_to_scd_dimension__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_to_scd_dimension__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multihop_node__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multihop_node__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multiple_metrics_no_dimensions__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multiple_metrics_no_dimensions__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/BigQuery/test_id_enumeration__query.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/BigQuery/test_render_query__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/Databricks/test_id_enumeration__query.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/Databricks/test_render_query__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/DuckDB/test_id_enumeration__query.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/DuckDB/test_render_query__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/Postgres/test_id_enumeration__query.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/Postgres/test_render_query__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/Redshift/test_id_enumeration__query.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/Redshift/test_render_query__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/Snowflake/test_id_enumeration__query.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/Snowflake/test_render_query__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/Trino/test_id_enumeration__query.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rendered_query.py/str/Trino/test_render_query__query0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__accumulate_last_2_months_metric__gbir_6.xml (100%) rename {tests => tests_metricflow}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_different_parent_time_grains__gbir_5.xml (100%) rename {tests => tests_metricflow}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_same_parent_time_grains__gbir_4.xml (100%) rename {tests => tests_metricflow}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_different_time_grains__gbir_3.xml (100%) rename {tests => tests_metricflow}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_same_time_grains__gbir_2.xml (100%) rename {tests => tests_metricflow}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__no_metrics__gbir_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__simple_metric__gbir_1.xml (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_colliding_alias__after_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_colliding_alias__before_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_all_join_sources__after_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_all_join_sources__before_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_join__after_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_join__before_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__after_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__before_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_left_node_statement__after_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_left_node_statement__before_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_statement__after_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_statement__before_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_rewriting_distinct_select_node_is_not_reduced__after_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_rewriting_distinct_select_node_is_not_reduced__before_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_semantic_model_container.py/tuple/test_elements_for_metric__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_semantic_model_container.py/tuple/test_local_linked_elements_for_metric__result0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfpo_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfpo_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfpo_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfpo_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfpo_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfpo_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfpo_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfpo_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfp_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfpo_0.xml (100%) rename {tests => tests_metricflow}/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_derived_metrics_with_common_filtered_metric__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_filter__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_input_filter__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_filter__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_input_filter__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__accumulate_last_2_months_metric__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_different_parent_time_grains__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_same_parent_time_grains__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_different_time_grains__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_same_time_grains__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__no_metrics__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__simple_metric__result.txt (100%) rename {tests => tests_metricflow}/snapshots/test_sql_expr_render.py/str/test_window_function_expr__rendered_sql.txt (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan1.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan2.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan3.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan4.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan5.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_create_table_as__create_table_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_create_table_as__create_view_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_limit__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_order_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_where__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan1.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan2.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan3.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan4.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan5.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_create_table_as__create_table_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_create_table_as__create_view_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_limit__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_order_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_where__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan1.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan2.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan3.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan4.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan5.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_create_table_as__create_table_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_create_table_as__create_view_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_limit__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_order_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_where__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan1.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan2.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan3.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan4.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan5.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_create_table_as__create_table_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_create_table_as__create_view_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_limit__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_order_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_where__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan1.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan2.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan3.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan4.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan5.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_create_table_as__create_table_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_create_table_as__create_view_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_limit__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_order_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_where__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan1.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan2.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan3.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan4.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan5.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_create_table_as__create_table_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_create_table_as__create_view_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_limit__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_order_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_where__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan1.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan2.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan3.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan4.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan5.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_create_table_as__create_table_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_create_table_as__create_view_as.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_limit__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_order_by__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_where__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_distinct_select_node_is_not_reduced__after_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_distinct_select_node_is_not_reduced__before_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__after_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__before_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_rewrite_order_by_with_a_join_in_parent__after_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_rewrite_order_by_with_a_join_in_parent__before_reducing.sql (100%) rename {tests => tests_metricflow}/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_suggestions.py/str/test_suggestions_for_group_by_item__result_0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_suggestions.py/str/test_suggestions_for_metric__result_0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_suggestions.py/str/test_suggestions_for_multiple_metrics__result_0.txt (100%) rename {tests => tests_metricflow}/snapshots/test_table_alias_simplifier.py/SqlQueryPlan/test_table_alias_simplification__after_alias_simplification.sql (100%) rename {tests => tests_metricflow}/snapshots/test_table_alias_simplifier.py/SqlQueryPlan/test_table_alias_simplification__before_alias_simplification.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/BigQuery/test_simple_join_to_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/BigQuery/test_simple_join_to_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Databricks/test_simple_join_to_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Databricks/test_simple_join_to_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/DuckDB/test_simple_join_to_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/DuckDB/test_simple_join_to_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Postgres/test_simple_join_to_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Postgres/test_simple_join_to_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Redshift/test_simple_join_to_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Redshift/test_simple_join_to_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Snowflake/test_simple_join_to_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Snowflake/test_simple_join_to_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Trino/test_simple_join_to_time_spine__plan0.sql (100%) rename {tests => tests_metricflow}/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Trino/test_simple_join_to_time_spine__plan0_optimized.sql (100%) rename {tests => tests_metricflow}/source_schema_tools.py (91%) rename {tests => tests_metricflow}/sql/__init__.py (100%) rename {tests => tests_metricflow}/sql/compare_sql_plan.py (95%) rename {tests => tests_metricflow}/sql/optimizer/__init__.py (100%) rename {tests => tests_metricflow}/sql/optimizer/test_column_pruner.py (99%) rename {tests => tests_metricflow}/sql/optimizer/test_rewriting_sub_query_reducer.py (99%) rename {tests => tests_metricflow}/sql/optimizer/test_sub_query_reducer.py (98%) rename {tests => tests_metricflow}/sql/optimizer/test_table_alias_simplifier.py (97%) rename {tests => tests_metricflow}/sql/test_engine_specific_rendering.py (98%) rename {tests => tests_metricflow}/sql/test_sql_expr_render.py (98%) rename {tests => tests_metricflow}/sql/test_sql_plan_render.py (98%) rename {tests => tests_metricflow}/sql_clients/__init__.py (100%) rename {tests => tests_metricflow}/sql_clients/test_date_time_operations.py (100%) rename {tests => tests_metricflow}/sql_clients/test_sql_client.py (95%) rename {tests => tests_metricflow}/table_snapshot/__init__.py (100%) rename {tests => tests_metricflow}/table_snapshot/example_table_snapshot.yaml (100%) rename {tests => tests_metricflow}/table_snapshot/table_snapshots.py (99%) rename {tests => tests_metricflow}/table_snapshot/test_source_schema.py (87%) rename {tests => tests_metricflow}/table_snapshot/test_table_snapshots.py (92%) rename {tests => tests_metricflow}/telemetry/__init__.py (100%) rename {tests => tests_metricflow}/telemetry/test_telemetry.py (97%) rename {tests => tests_metricflow}/test_instance_serialization.py (91%) rename {tests => tests_metricflow}/time/__init__.py (100%) rename {tests => tests_metricflow}/time/metric_time_dimension.py (100%) diff --git a/tests/conftest.py b/tests/conftest.py deleted file mode 100644 index 9ee2fb5b23..0000000000 --- a/tests/conftest.py +++ /dev/null @@ -1,11 +0,0 @@ -# These imports are required to properly set up pytest fixtures. -from __future__ import annotations - -from tests.fixtures.cli_fixtures import * # noqa: F401, F403 -from tests.fixtures.dataflow_fixtures import * # noqa: F401, F403 -from tests.fixtures.id_fixtures import * # noqa: F401, F403 -from tests.fixtures.manifest_fixtures import * # noqa: F401, F403 -from tests.fixtures.setup_fixtures import * # noqa: F401, F403 -from tests.fixtures.sql_client_fixtures import * # noqa: F401, F403 -from tests.fixtures.sql_fixtures import * # noqa: F401, F403 -from tests.fixtures.table_fixtures import * # noqa: F401, F403 diff --git a/tests/__init__.py b/tests_metricflow/__init__.py similarity index 100% rename from tests/__init__.py rename to tests_metricflow/__init__.py diff --git a/tests/cli/__init__.py b/tests_metricflow/cli/__init__.py similarity index 100% rename from tests/cli/__init__.py rename to tests_metricflow/cli/__init__.py diff --git a/tests/cli/test_cli.py b/tests_metricflow/cli/test_cli.py similarity index 96% rename from tests/cli/test_cli.py rename to tests_metricflow/cli/test_cli.py index c4a4d1ecba..479dfbfea7 100644 --- a/tests/cli/test_cli.py +++ b/tests_metricflow/cli/test_cli.py @@ -27,10 +27,12 @@ validate_configs, ) from metricflow.protocols.sql_client import SqlClient, SqlEngine -from tests.fixtures.cli_fixtures import MetricFlowCliRunner -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.semantics.model.example_project_configuration import EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE -from tests.snapshot_utils import assert_str_snapshot_equal +from tests_metricflow.fixtures.cli_fixtures import MetricFlowCliRunner +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.semantics.model.example_project_configuration import ( + EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE, +) +from tests_metricflow.snapshot_utils import assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/cli/test_custom_click_types.py b/tests_metricflow/cli/test_custom_click_types.py similarity index 100% rename from tests/cli/test_custom_click_types.py rename to tests_metricflow/cli/test_custom_click_types.py diff --git a/tests/compare_df.py b/tests_metricflow/compare_df.py similarity index 100% rename from tests/compare_df.py rename to tests_metricflow/compare_df.py diff --git a/tests_metricflow/conftest.py b/tests_metricflow/conftest.py new file mode 100644 index 0000000000..46f268c40f --- /dev/null +++ b/tests_metricflow/conftest.py @@ -0,0 +1,11 @@ +# These imports are required to properly set up pytest fixtures. +from __future__ import annotations + +from tests_metricflow.fixtures.cli_fixtures import * # noqa: F401, F403 +from tests_metricflow.fixtures.dataflow_fixtures import * # noqa: F401, F403 +from tests_metricflow.fixtures.id_fixtures import * # noqa: F401, F403 +from tests_metricflow.fixtures.manifest_fixtures import * # noqa: F401, F403 +from tests_metricflow.fixtures.setup_fixtures import * # noqa: F401, F403 +from tests_metricflow.fixtures.sql_client_fixtures import * # noqa: F401, F403 +from tests_metricflow.fixtures.sql_fixtures import * # noqa: F401, F403 +from tests_metricflow.fixtures.table_fixtures import * # noqa: F401, F403 diff --git a/tests/dataflow/__init__.py b/tests_metricflow/dataflow/__init__.py similarity index 100% rename from tests/dataflow/__init__.py rename to tests_metricflow/dataflow/__init__.py diff --git a/tests/dataflow/builder/__init__.py b/tests_metricflow/dataflow/builder/__init__.py similarity index 100% rename from tests/dataflow/builder/__init__.py rename to tests_metricflow/dataflow/builder/__init__.py diff --git a/tests/dataflow/builder/test_cyclic_join.py b/tests_metricflow/dataflow/builder/test_cyclic_join.py similarity index 80% rename from tests/dataflow/builder/test_cyclic_join.py rename to tests_metricflow/dataflow/builder/test_cyclic_join.py index 3cc8648814..a71e81a067 100644 --- a/tests/dataflow/builder/test_cyclic_join.py +++ b/tests_metricflow/dataflow/builder/test_cyclic_join.py @@ -13,11 +13,11 @@ ) from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from tests.dataflow_plan_to_svg import display_graph_if_requested -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.fixtures.sql_client_fixtures import sql_client # noqa: F401, F403 -from tests.snapshot_utils import assert_plan_snapshot_text_equal +from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.fixtures.sql_client_fixtures import sql_client # noqa: F401, F403 +from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal logger = logging.getLogger(__name__) diff --git a/tests/dataflow/builder/test_dataflow_plan_builder.py b/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py similarity index 99% rename from tests/dataflow/builder/test_dataflow_plan_builder.py rename to tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py index a4a0860558..e7952554b1 100644 --- a/tests/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py @@ -23,10 +23,10 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet -from tests.dataflow_plan_to_svg import display_graph_if_requested -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.snapshot_utils import assert_plan_snapshot_text_equal -from tests.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_QUARTER, MTD_SPEC_WEEK +from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal +from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_QUARTER, MTD_SPEC_WEEK logger = logging.getLogger(__name__) diff --git a/tests/dataflow/builder/test_measure_additiveness.py b/tests_metricflow/dataflow/builder/test_measure_additiveness.py similarity index 100% rename from tests/dataflow/builder/test_measure_additiveness.py rename to tests_metricflow/dataflow/builder/test_measure_additiveness.py diff --git a/tests/dataflow/builder/test_node_data_set.py b/tests_metricflow/dataflow/builder/test_node_data_set.py similarity index 95% rename from tests/dataflow/builder/test_node_data_set.py rename to tests_metricflow/dataflow/builder/test_node_data_set.py index 566fa99c49..eca3be3152 100644 --- a/tests/dataflow/builder/test_node_data_set.py +++ b/tests_metricflow/dataflow/builder/test_node_data_set.py @@ -31,9 +31,9 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.snapshot_utils import assert_spec_set_snapshot_equal +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import assert_spec_set_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/dataflow/builder/test_node_evaluator.py b/tests_metricflow/dataflow/builder/test_node_evaluator.py similarity index 99% rename from tests/dataflow/builder/test_node_evaluator.py rename to tests_metricflow/dataflow/builder/test_node_evaluator.py index 09bca64fb0..57d458ed2c 100644 --- a/tests/dataflow/builder/test_node_evaluator.py +++ b/tests_metricflow/dataflow/builder/test_node_evaluator.py @@ -28,7 +28,7 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup logger = logging.getLogger(__name__) diff --git a/tests/dataflow/optimizer/__init__.py b/tests_metricflow/dataflow/optimizer/__init__.py similarity index 100% rename from tests/dataflow/optimizer/__init__.py rename to tests_metricflow/dataflow/optimizer/__init__.py diff --git a/tests/dataflow/optimizer/source_scan/__init__.py b/tests_metricflow/dataflow/optimizer/source_scan/__init__.py similarity index 100% rename from tests/dataflow/optimizer/source_scan/__init__.py rename to tests_metricflow/dataflow/optimizer/source_scan/__init__.py diff --git a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py b/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py similarity index 91% rename from tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py rename to tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py index 94e5325236..6601996043 100644 --- a/tests/dataflow/optimizer/source_scan/test_cm_branch_combiner.py +++ b/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py @@ -18,10 +18,10 @@ ComputeMetricsBranchCombiner, ComputeMetricsBranchCombinerResult, ) -from tests.dataflow_plan_to_svg import display_graph_if_requested -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.snapshot_utils import assert_plan_snapshot_text_equal +from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal def make_dataflow_plan(node: BaseOutput) -> DataflowPlan: # noqa: D103 diff --git a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py similarity index 98% rename from tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py rename to tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index fe8fd8ed09..3e29cc7470 100644 --- a/tests/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -41,9 +41,9 @@ from metricflow.dataflow.nodes.write_to_table import WriteToResultTableNode from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer from metricflow.dataset.dataset_classes import DataSet -from tests.dataflow_plan_to_svg import display_graph_if_requested -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.snapshot_utils import assert_plan_snapshot_text_equal +from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal logger = logging.getLogger(__name__) diff --git a/tests/dataflow/test_sql_column.py b/tests_metricflow/dataflow/test_sql_column.py similarity index 100% rename from tests/dataflow/test_sql_column.py rename to tests_metricflow/dataflow/test_sql_column.py diff --git a/tests/dataflow/test_sql_table.py b/tests_metricflow/dataflow/test_sql_table.py similarity index 100% rename from tests/dataflow/test_sql_table.py rename to tests_metricflow/dataflow/test_sql_table.py diff --git a/tests/dataflow_plan_to_svg.py b/tests_metricflow/dataflow_plan_to_svg.py similarity index 93% rename from tests/dataflow_plan_to_svg.py rename to tests_metricflow/dataflow_plan_to_svg.py index 534f60ad54..3ac12a9ab2 100644 --- a/tests/dataflow_plan_to_svg.py +++ b/tests_metricflow/dataflow_plan_to_svg.py @@ -6,7 +6,7 @@ from metricflow_semantics.dag.dag_visualization import DagGraphT, render_via_graphviz from metricflow_semantics.test_helpers import snapshot_path_prefix -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration def display_graph_if_requested( diff --git a/tests/dataset/__init__.py b/tests_metricflow/dataset/__init__.py similarity index 100% rename from tests/dataset/__init__.py rename to tests_metricflow/dataset/__init__.py diff --git a/tests/dataset/test_convert_semantic_model.py b/tests_metricflow/dataset/test_convert_semantic_model.py similarity index 91% rename from tests/dataset/test_convert_semantic_model.py rename to tests_metricflow/dataset/test_convert_semantic_model.py index ee7ac80d25..75c37eb709 100644 --- a/tests/dataset/test_convert_semantic_model.py +++ b/tests_metricflow/dataset/test_convert_semantic_model.py @@ -8,10 +8,10 @@ from dbt_semantic_interfaces.references import SemanticModelReference from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.snapshot_utils import assert_spec_set_snapshot_equal -from tests.sql.compare_sql_plan import assert_rendered_sql_equal +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import assert_spec_set_snapshot_equal +from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_equal logger = logging.getLogger(__name__) diff --git a/tests/examples/__init__.py b/tests_metricflow/examples/__init__.py similarity index 100% rename from tests/examples/__init__.py rename to tests_metricflow/examples/__init__.py diff --git a/tests/examples/test_node_sql.py b/tests_metricflow/examples/test_node_sql.py similarity index 100% rename from tests/examples/test_node_sql.py rename to tests_metricflow/examples/test_node_sql.py diff --git a/tests/execution/__init__.py b/tests_metricflow/execution/__init__.py similarity index 100% rename from tests/execution/__init__.py rename to tests_metricflow/execution/__init__.py diff --git a/tests/execution/noop_task.py b/tests_metricflow/execution/noop_task.py similarity index 100% rename from tests/execution/noop_task.py rename to tests_metricflow/execution/noop_task.py diff --git a/tests/execution/test_sequential_executor.py b/tests_metricflow/execution/test_sequential_executor.py similarity index 97% rename from tests/execution/test_sequential_executor.py rename to tests_metricflow/execution/test_sequential_executor.py index a070e5b234..84f29b6461 100644 --- a/tests/execution/test_sequential_executor.py +++ b/tests_metricflow/execution/test_sequential_executor.py @@ -4,7 +4,7 @@ from metricflow.execution.execution_plan import ExecutionPlan from metricflow.execution.executor import SequentialPlanExecutor -from tests.execution.noop_task import NoOpExecutionPlanTask +from tests_metricflow.execution.noop_task import NoOpExecutionPlanTask def test_single_task() -> None: diff --git a/tests/execution/test_tasks.py b/tests_metricflow/execution/test_tasks.py similarity index 94% rename from tests/execution/test_tasks.py rename to tests_metricflow/execution/test_tasks.py index 53e9dee1de..dbe7307dc7 100644 --- a/tests/execution/test_tasks.py +++ b/tests_metricflow/execution/test_tasks.py @@ -13,8 +13,8 @@ from metricflow.execution.executor import SequentialPlanExecutor from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.sql.sql_table import SqlTable -from tests.compare_df import assert_dataframes_equal -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.compare_df import assert_dataframes_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration def test_read_sql_task(sql_client: SqlClient) -> None: # noqa: D103 diff --git a/tests/fixtures/__init__.py b/tests_metricflow/fixtures/__init__.py similarity index 100% rename from tests/fixtures/__init__.py rename to tests_metricflow/fixtures/__init__.py diff --git a/tests/fixtures/cli_fixtures.py b/tests_metricflow/fixtures/cli_fixtures.py similarity index 98% rename from tests/fixtures/cli_fixtures.py rename to tests_metricflow/fixtures/cli_fixtures.py index c70cedd933..7a0519a887 100644 --- a/tests/fixtures/cli_fixtures.py +++ b/tests_metricflow/fixtures/cli_fixtures.py @@ -19,7 +19,7 @@ from metricflow.engine.metricflow_engine import MetricFlowEngine from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import dbt_project_dir +from tests_metricflow.fixtures.setup_fixtures import dbt_project_dir class FakeCLIContext(CLIContext): diff --git a/tests/fixtures/dataflow_fixtures.py b/tests_metricflow/fixtures/dataflow_fixtures.py similarity index 92% rename from tests/fixtures/dataflow_fixtures.py rename to tests_metricflow/fixtures/dataflow_fixtures.py index 3cba9dad7c..ab3fc2e679 100644 --- a/tests/fixtures/dataflow_fixtures.py +++ b/tests_metricflow/fixtures/dataflow_fixtures.py @@ -9,9 +9,9 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.fixtures.sql_client_fixtures import sql_client # noqa: F401, F403 +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.fixtures.sql_client_fixtures import sql_client # noqa: F401, F403 """ Using 'function' scope to make ID generation more deterministic for the dataflow plan builder fixtures.. diff --git a/tests/fixtures/dbt_projects/metricflow_testing/.gitignore b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/.gitignore similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/.gitignore rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/.gitignore diff --git a/tests/fixtures/dbt_projects/metricflow_testing/.user.yml b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/.user.yml similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/.user.yml rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/.user.yml diff --git a/tests/fixtures/dbt_projects/metricflow_testing/README.md b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/README.md similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/README.md rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/README.md diff --git a/tests/fixtures/dbt_projects/metricflow_testing/analyses/.gitkeep b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/analyses/.gitkeep similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/analyses/.gitkeep rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/analyses/.gitkeep diff --git a/tests/fixtures/dbt_projects/metricflow_testing/dbt_project.yml b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/dbt_project.yml similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/dbt_project.yml rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/dbt_project.yml diff --git a/tests/fixtures/dbt_projects/metricflow_testing/macros/.gitkeep b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/macros/.gitkeep similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/macros/.gitkeep rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/macros/.gitkeep diff --git a/tests/fixtures/dbt_projects/metricflow_testing/models/example/my_first_dbt_model.sql b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/models/example/my_first_dbt_model.sql similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/models/example/my_first_dbt_model.sql rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/models/example/my_first_dbt_model.sql diff --git a/tests/fixtures/dbt_projects/metricflow_testing/models/example/my_second_dbt_model.sql b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/models/example/my_second_dbt_model.sql similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/models/example/my_second_dbt_model.sql rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/models/example/my_second_dbt_model.sql diff --git a/tests/fixtures/dbt_projects/metricflow_testing/models/example/schema.yml b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/models/example/schema.yml similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/models/example/schema.yml rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/models/example/schema.yml diff --git a/tests/fixtures/dbt_projects/metricflow_testing/profiles.yml b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/profiles.yml similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/profiles.yml rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/profiles.yml diff --git a/tests/fixtures/dbt_projects/metricflow_testing/seeds/.gitkeep b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/seeds/.gitkeep similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/seeds/.gitkeep rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/seeds/.gitkeep diff --git a/tests/fixtures/dbt_projects/metricflow_testing/snapshots/.gitkeep b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/snapshots/.gitkeep similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/snapshots/.gitkeep rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/snapshots/.gitkeep diff --git a/tests/fixtures/dbt_projects/metricflow_testing/tests/.gitkeep b/tests_metricflow/fixtures/dbt_projects/metricflow_testing/tests/.gitkeep similarity index 100% rename from tests/fixtures/dbt_projects/metricflow_testing/tests/.gitkeep rename to tests_metricflow/fixtures/dbt_projects/metricflow_testing/tests/.gitkeep diff --git a/tests/fixtures/id_fixtures.py b/tests_metricflow/fixtures/id_fixtures.py similarity index 100% rename from tests/fixtures/id_fixtures.py rename to tests_metricflow/fixtures/id_fixtures.py diff --git a/tests/fixtures/manifest_fixtures.py b/tests_metricflow/fixtures/manifest_fixtures.py similarity index 98% rename from tests/fixtures/manifest_fixtures.py rename to tests_metricflow/fixtures/manifest_fixtures.py index c972e47940..3aeac7a5d2 100644 --- a/tests/fixtures/manifest_fixtures.py +++ b/tests_metricflow/fixtures/manifest_fixtures.py @@ -31,8 +31,8 @@ from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.id_fixtures import IdNumberSpace, patch_id_generators_helper -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.fixtures.id_fixtures import IdNumberSpace, patch_id_generators_helper +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration logger = logging.getLogger(__name__) diff --git a/tests/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/metrics.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/metrics.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/metrics.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/metrics.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/project_configuration.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/monthly_measures_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/monthly_measures_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/monthly_measures_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/monthly_measures_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/yearly_measures_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/yearly_measures_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/yearly_measures_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/yearly_measures_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/config_linter_manifest/multiple_semantic_models_without_divider.yml b/tests_metricflow/fixtures/semantic_manifest_yamls/config_linter_manifest/multiple_semantic_models_without_divider.yml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/config_linter_manifest/multiple_semantic_models_without_divider.yml rename to tests_metricflow/fixtures/semantic_manifest_yamls/config_linter_manifest/multiple_semantic_models_without_divider.yml diff --git a/tests/fixtures/semantic_manifest_yamls/config_linter_manifest/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/config_linter_manifest/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/config_linter_manifest/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/config_linter_manifest/project_configuration.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest_cyclic.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest_cyclic.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest_cyclic.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest_cyclic.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/cyclic_join_manifest/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/cyclic_join_manifest/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/cyclic_join_manifest/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/cyclic_join_manifest/project_configuration.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/project_configuration.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/semantic_models/semantic_model1.yml b/tests_metricflow/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/semantic_models/semantic_model1.yml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/semantic_models/semantic_model1.yml rename to tests_metricflow/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/semantic_models/semantic_model1.yml diff --git a/tests/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_cumulative.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_cumulative.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_cumulative.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_cumulative.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_last_month.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_last_month.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_last_month.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_last_month.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_monthly_cumulative.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_monthly_cumulative.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_monthly_cumulative.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_monthly_cumulative.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/extended_date_manifest/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/extended_date_manifest/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/project_configuration.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/bookings_monthly_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/bookings_monthly_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/bookings_monthly_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/bookings_monthly_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/extended_bookings_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/extended_bookings_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/extended_bookings_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/extended_bookings_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/listings_extended_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/listings_extended_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/listings_extended_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/listings_extended_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/join_types_manifest/bookings_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/join_types_manifest/bookings_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/join_types_manifest/bookings_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/join_types_manifest/bookings_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/join_types_manifest/listings_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/join_types_manifest/listings_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/join_types_manifest/listings_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/join_types_manifest/listings_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/join_types_manifest/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/join_types_manifest/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/join_types_manifest/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/join_types_manifest/project_configuration.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/account_month_txns.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/account_month_txns.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/account_month_txns.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/account_month_txns.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/bridge_table.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/bridge_table.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/bridge_table.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/bridge_table.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_other_data.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_other_data.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_other_data.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_other_data.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_table.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_table.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_table.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_table.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/project_configuration.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/third_hop_table.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/third_hop_table.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/third_hop_table.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/third_hop_table.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/non_sm_manifest/bookings_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/non_sm_manifest/bookings_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/non_sm_manifest/bookings_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/non_sm_manifest/bookings_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/non_sm_manifest/listings_latest.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/non_sm_manifest/listings_latest.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/non_sm_manifest/listings_latest.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/non_sm_manifest/listings_latest.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/non_sm_manifest/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/non_sm_manifest/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/non_sm_manifest/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/non_sm_manifest/project_configuration.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/account_month_txns.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/account_month_txns.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/account_month_txns.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/account_month_txns.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/bridge_table.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/bridge_table.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/bridge_table.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/bridge_table.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_other_data.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_other_data.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_other_data.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_other_data.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_table.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_table.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_table.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_table.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/project_configuration.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/third_hop_table.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/third_hop_table.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/third_hop_table.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/third_hop_table.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/scd_manifest/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/scd_manifest/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/project_configuration.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_accounts.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_accounts.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_accounts.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_accounts.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_bookings.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_bookings.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_bookings.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_bookings.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_companies.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_companies.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_companies.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_companies.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_listings.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_listings.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_listings.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_listings.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_lux_listings.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_lux_listings.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_lux_listings.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_lux_listings.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_metrics.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_metrics.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_metrics.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_metrics.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_users.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_users.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/scd_manifest/scd_users.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_users.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/shared/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/shared/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/shared/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/shared/project_configuration.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/metrics.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/metrics.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/metrics.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/metrics.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/project_configuration.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/saved_queries.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/saved_queries.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/saved_queries.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/saved_queries.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/accounts_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/accounts_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/accounts_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/accounts_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/bookings_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/bookings_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/bookings_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/bookings_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/buys_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/buys_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/buys_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/buys_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/companies.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/companies.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/companies.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/companies.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/id_verifications.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/id_verifications.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/id_verifications.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/id_verifications.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/listings_latest.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/listings_latest.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/listings_latest.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/listings_latest.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/lux_listing_mapping.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/lux_listing_mapping.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/lux_listing_mapping.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/lux_listing_mapping.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/revenue.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/revenue.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/revenue.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/revenue.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/users_latest.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/users_latest.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/users_latest.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/users_latest.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/views_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/views_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/views_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/views_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/visits_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/visits_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/visits_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/visits_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/all_entity_measure_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/all_entity_measure_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/all_entity_measure_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/all_entity_measure_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_dimension_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_dimension_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_dimension_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_dimension_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_measure_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_measure_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_measure_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_measure_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_dimension_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_dimension_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_dimension_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_dimension_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_measure_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_measure_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_measure_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_measure_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_source.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_source.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_source.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_source.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/metrics.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/metrics.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/metrics.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/metrics.yaml diff --git a/tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/project_configuration.yaml b/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/project_configuration.yaml similarity index 100% rename from tests/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/project_configuration.yaml rename to tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/project_configuration.yaml diff --git a/tests/fixtures/setup_fixtures.py b/tests_metricflow/fixtures/setup_fixtures.py similarity index 97% rename from tests/fixtures/setup_fixtures.py rename to tests_metricflow/fixtures/setup_fixtures.py index 21b8f297cf..f759ef379c 100644 --- a/tests/fixtures/setup_fixtures.py +++ b/tests_metricflow/fixtures/setup_fixtures.py @@ -18,8 +18,8 @@ ) from sqlalchemy.engine import make_url -from tests.fixtures.sql_clients.common_client import SqlDialect -from tests.table_snapshot.table_snapshots import SqlTableSnapshotHash, SqlTableSnapshotRepository +from tests_metricflow.fixtures.sql_clients.common_client import SqlDialect +from tests_metricflow.table_snapshot.table_snapshots import SqlTableSnapshotHash, SqlTableSnapshotRepository logger = logging.getLogger(__name__) diff --git a/tests/fixtures/source_table_snapshots/data_warehouse_validation_model/fct_animals.yaml b/tests_metricflow/fixtures/source_table_snapshots/data_warehouse_validation_model/fct_animals.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/data_warehouse_validation_model/fct_animals.yaml rename to tests_metricflow/fixtures/source_table_snapshots/data_warehouse_validation_model/fct_animals.yaml diff --git a/tests/fixtures/source_table_snapshots/extended_date_model/dim_listings_extended.yaml b/tests_metricflow/fixtures/source_table_snapshots/extended_date_model/dim_listings_extended.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/extended_date_model/dim_listings_extended.yaml rename to tests_metricflow/fixtures/source_table_snapshots/extended_date_model/dim_listings_extended.yaml diff --git a/tests/fixtures/source_table_snapshots/extended_date_model/fct_bookings_extended.yaml b/tests_metricflow/fixtures/source_table_snapshots/extended_date_model/fct_bookings_extended.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/extended_date_model/fct_bookings_extended.yaml rename to tests_metricflow/fixtures/source_table_snapshots/extended_date_model/fct_bookings_extended.yaml diff --git a/tests/fixtures/source_table_snapshots/extended_date_model/fct_bookings_extended_monthly.yaml b/tests_metricflow/fixtures/source_table_snapshots/extended_date_model/fct_bookings_extended_monthly.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/extended_date_model/fct_bookings_extended_monthly.yaml rename to tests_metricflow/fixtures/source_table_snapshots/extended_date_model/fct_bookings_extended_monthly.yaml diff --git a/tests/fixtures/source_table_snapshots/multi_hop_join_model/account_month_txns.yaml b/tests_metricflow/fixtures/source_table_snapshots/multi_hop_join_model/account_month_txns.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/multi_hop_join_model/account_month_txns.yaml rename to tests_metricflow/fixtures/source_table_snapshots/multi_hop_join_model/account_month_txns.yaml diff --git a/tests/fixtures/source_table_snapshots/multi_hop_join_model/bridge_table.yaml b/tests_metricflow/fixtures/source_table_snapshots/multi_hop_join_model/bridge_table.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/multi_hop_join_model/bridge_table.yaml rename to tests_metricflow/fixtures/source_table_snapshots/multi_hop_join_model/bridge_table.yaml diff --git a/tests/fixtures/source_table_snapshots/multi_hop_join_model/customer_other_data.yaml b/tests_metricflow/fixtures/source_table_snapshots/multi_hop_join_model/customer_other_data.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/multi_hop_join_model/customer_other_data.yaml rename to tests_metricflow/fixtures/source_table_snapshots/multi_hop_join_model/customer_other_data.yaml diff --git a/tests/fixtures/source_table_snapshots/multi_hop_join_model/customer_table.yaml b/tests_metricflow/fixtures/source_table_snapshots/multi_hop_join_model/customer_table.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/multi_hop_join_model/customer_table.yaml rename to tests_metricflow/fixtures/source_table_snapshots/multi_hop_join_model/customer_table.yaml diff --git a/tests/fixtures/source_table_snapshots/multi_hop_join_model/third_hop_table.yaml b/tests_metricflow/fixtures/source_table_snapshots/multi_hop_join_model/third_hop_table.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/multi_hop_join_model/third_hop_table.yaml rename to tests_metricflow/fixtures/source_table_snapshots/multi_hop_join_model/third_hop_table.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/dim_companies.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_companies.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/dim_companies.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_companies.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/dim_listings.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_listings.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/dim_listings.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_listings.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/dim_listings_latest.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_listings_latest.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/dim_listings_latest.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_listings_latest.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/dim_lux_listing_id_mapping.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_lux_listing_id_mapping.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/dim_lux_listing_id_mapping.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_lux_listing_id_mapping.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/dim_lux_listings.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_lux_listings.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/dim_lux_listings.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_lux_listings.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/dim_primary_accounts.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_primary_accounts.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/dim_primary_accounts.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_primary_accounts.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/dim_users.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_users.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/dim_users.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_users.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/dim_users_latest.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_users_latest.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/dim_users_latest.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_users_latest.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/fct_accounts.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_accounts.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/fct_accounts.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_accounts.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/fct_bookings.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_bookings.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/fct_bookings.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_bookings.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/fct_bookings_dt.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_bookings_dt.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/fct_bookings_dt.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_bookings_dt.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/fct_buys.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_buys.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/fct_buys.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_buys.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/fct_id_verifications.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_id_verifications.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/fct_id_verifications.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_id_verifications.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/fct_revenue.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_revenue.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/fct_revenue.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_revenue.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/fct_views.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_views.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/fct_views.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_views.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_model/fct_visits.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_visits.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_model/fct_visits.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_model/fct_visits.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/all_entity_measure_table.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/all_entity_measure_table.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/all_entity_measure_table.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/all_entity_measure_table.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_0_dimension_table.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_0_dimension_table.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_0_dimension_table.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_0_dimension_table.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_0_measure_table.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_0_measure_table.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_0_measure_table.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_0_measure_table.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_table.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_table.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_table.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_table.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_dimension_table.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_dimension_table.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_dimension_table.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_dimension_table.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_measure_table.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_measure_table.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_measure_table.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_measure_table.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_table.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_table.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_table.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_table.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_2_measure_table.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_2_measure_table.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_2_measure_table.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_2_measure_table.yaml diff --git a/tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_table.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_table.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_table.yaml rename to tests_metricflow/fixtures/source_table_snapshots/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_table.yaml diff --git a/tests/fixtures/source_table_snapshots/time_spine_table/mf_time_spine.yaml b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine.yaml similarity index 100% rename from tests/fixtures/source_table_snapshots/time_spine_table/mf_time_spine.yaml rename to tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine.yaml diff --git a/tests/fixtures/sql_client_fixtures.py b/tests_metricflow/fixtures/sql_client_fixtures.py similarity index 97% rename from tests/fixtures/sql_client_fixtures.py rename to tests_metricflow/fixtures/sql_client_fixtures.py index 25f6d7ea2d..9a6dbb72e5 100644 --- a/tests/fixtures/sql_client_fixtures.py +++ b/tests_metricflow/fixtures/sql_client_fixtures.py @@ -15,10 +15,10 @@ from metricflow_semantics.test_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import dbt_project_dir, dialect_from_url -from tests.fixtures.sql_clients.adapter_backed_ddl_client import AdapterBackedDDLSqlClient -from tests.fixtures.sql_clients.common_client import SqlDialect -from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods +from tests_metricflow.fixtures.setup_fixtures import dbt_project_dir, dialect_from_url +from tests_metricflow.fixtures.sql_clients.adapter_backed_ddl_client import AdapterBackedDDLSqlClient +from tests_metricflow.fixtures.sql_clients.common_client import SqlDialect +from tests_metricflow.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods logger = logging.getLogger(__name__) diff --git a/tests/fixtures/sql_clients/__init__.py b/tests_metricflow/fixtures/sql_clients/__init__.py similarity index 100% rename from tests/fixtures/sql_clients/__init__.py rename to tests_metricflow/fixtures/sql_clients/__init__.py diff --git a/tests/fixtures/sql_clients/adapter_backed_ddl_client.py b/tests_metricflow/fixtures/sql_clients/adapter_backed_ddl_client.py similarity index 100% rename from tests/fixtures/sql_clients/adapter_backed_ddl_client.py rename to tests_metricflow/fixtures/sql_clients/adapter_backed_ddl_client.py diff --git a/tests/fixtures/sql_clients/base_sql_client_implementation.py b/tests_metricflow/fixtures/sql_clients/base_sql_client_implementation.py similarity index 100% rename from tests/fixtures/sql_clients/base_sql_client_implementation.py rename to tests_metricflow/fixtures/sql_clients/base_sql_client_implementation.py diff --git a/tests/fixtures/sql_clients/common_client.py b/tests_metricflow/fixtures/sql_clients/common_client.py similarity index 100% rename from tests/fixtures/sql_clients/common_client.py rename to tests_metricflow/fixtures/sql_clients/common_client.py diff --git a/tests/fixtures/sql_clients/ddl_sql_client.py b/tests_metricflow/fixtures/sql_clients/ddl_sql_client.py similarity index 100% rename from tests/fixtures/sql_clients/ddl_sql_client.py rename to tests_metricflow/fixtures/sql_clients/ddl_sql_client.py diff --git a/tests/fixtures/sql_clients/sqlalchemy_dialect.py b/tests_metricflow/fixtures/sql_clients/sqlalchemy_dialect.py similarity index 97% rename from tests/fixtures/sql_clients/sqlalchemy_dialect.py rename to tests_metricflow/fixtures/sql_clients/sqlalchemy_dialect.py index eb670201f0..b5ea8f2440 100644 --- a/tests/fixtures/sql_clients/sqlalchemy_dialect.py +++ b/tests_metricflow/fixtures/sql_clients/sqlalchemy_dialect.py @@ -11,7 +11,7 @@ from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.sql.sql_table import SqlTable -from tests.fixtures.sql_clients.base_sql_client_implementation import BaseSqlClientImplementation +from tests_metricflow.fixtures.sql_clients.base_sql_client_implementation import BaseSqlClientImplementation logger = logging.getLogger(__name__) diff --git a/tests/fixtures/sql_fixtures.py b/tests_metricflow/fixtures/sql_fixtures.py similarity index 94% rename from tests/fixtures/sql_fixtures.py rename to tests_metricflow/fixtures/sql_fixtures.py index c14a5fd78e..f825a9d30e 100644 --- a/tests/fixtures/sql_fixtures.py +++ b/tests_metricflow/fixtures/sql_fixtures.py @@ -6,7 +6,7 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup @pytest.fixture diff --git a/tests/fixtures/table_fixtures.py b/tests_metricflow/fixtures/table_fixtures.py similarity index 90% rename from tests/fixtures/table_fixtures.py rename to tests_metricflow/fixtures/table_fixtures.py index c6238ead9c..a3c8d75b42 100644 --- a/tests/fixtures/table_fixtures.py +++ b/tests_metricflow/fixtures/table_fixtures.py @@ -8,10 +8,10 @@ from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.time_spine import TimeSpineSource -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods -from tests.source_schema_tools import create_tables_listed_in_table_snapshot_repository -from tests.table_snapshot.table_snapshots import ( +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods +from tests_metricflow.source_schema_tools import create_tables_listed_in_table_snapshot_repository +from tests_metricflow.table_snapshot.table_snapshots import ( SqlTableSnapshotRepository, ) diff --git a/tests/generate_snapshots.py b/tests_metricflow/generate_snapshots.py similarity index 98% rename from tests/generate_snapshots.py rename to tests_metricflow/generate_snapshots.py index eac0b674e6..66722f0450 100644 --- a/tests/generate_snapshots.py +++ b/tests_metricflow/generate_snapshots.py @@ -48,7 +48,7 @@ from dbt_semantic_interfaces.implementations.base import FrozenBaseModel from metricflow.protocols.sql_client import SqlEngine -from tests.fixtures.setup_fixtures import SQL_ENGINE_SNAPSHOT_MARKER_NAME +from tests_metricflow.fixtures.setup_fixtures import SQL_ENGINE_SNAPSHOT_MARKER_NAME logger = logging.getLogger(__name__) diff --git a/tests/inference/__init__.py b/tests_metricflow/inference/__init__.py similarity index 100% rename from tests/inference/__init__.py rename to tests_metricflow/inference/__init__.py diff --git a/tests/inference/context/__init__.py b/tests_metricflow/inference/context/__init__.py similarity index 100% rename from tests/inference/context/__init__.py rename to tests_metricflow/inference/context/__init__.py diff --git a/tests/inference/context/test_data_warehouse.py b/tests_metricflow/inference/context/test_data_warehouse.py similarity index 100% rename from tests/inference/context/test_data_warehouse.py rename to tests_metricflow/inference/context/test_data_warehouse.py diff --git a/tests/inference/context/test_snowflake.py b/tests_metricflow/inference/context/test_snowflake.py similarity index 100% rename from tests/inference/context/test_snowflake.py rename to tests_metricflow/inference/context/test_snowflake.py diff --git a/tests/inference/renderer/__init__.py b/tests_metricflow/inference/renderer/__init__.py similarity index 100% rename from tests/inference/renderer/__init__.py rename to tests_metricflow/inference/renderer/__init__.py diff --git a/tests/inference/renderer/test_config_file.py b/tests_metricflow/inference/renderer/test_config_file.py similarity index 100% rename from tests/inference/renderer/test_config_file.py rename to tests_metricflow/inference/renderer/test_config_file.py diff --git a/tests/inference/rule/__init__.py b/tests_metricflow/inference/rule/__init__.py similarity index 100% rename from tests/inference/rule/__init__.py rename to tests_metricflow/inference/rule/__init__.py diff --git a/tests/inference/rule/conftest.py b/tests_metricflow/inference/rule/conftest.py similarity index 100% rename from tests/inference/rule/conftest.py rename to tests_metricflow/inference/rule/conftest.py diff --git a/tests/inference/rule/test_defaults.py b/tests_metricflow/inference/rule/test_defaults.py similarity index 100% rename from tests/inference/rule/test_defaults.py rename to tests_metricflow/inference/rule/test_defaults.py diff --git a/tests/inference/rule/test_rules.py b/tests_metricflow/inference/rule/test_rules.py similarity index 100% rename from tests/inference/rule/test_rules.py rename to tests_metricflow/inference/rule/test_rules.py diff --git a/tests/inference/solver/__init__.py b/tests_metricflow/inference/solver/__init__.py similarity index 100% rename from tests/inference/solver/__init__.py rename to tests_metricflow/inference/solver/__init__.py diff --git a/tests/inference/solver/test_weighted_tree.py b/tests_metricflow/inference/solver/test_weighted_tree.py similarity index 100% rename from tests/inference/solver/test_weighted_tree.py rename to tests_metricflow/inference/solver/test_weighted_tree.py diff --git a/tests/inference/test_models.py b/tests_metricflow/inference/test_models.py similarity index 100% rename from tests/inference/test_models.py rename to tests_metricflow/inference/test_models.py diff --git a/tests/integration/__init__.py b/tests_metricflow/integration/__init__.py similarity index 100% rename from tests/integration/__init__.py rename to tests_metricflow/integration/__init__.py diff --git a/tests/integration/configured_test_case.py b/tests_metricflow/integration/configured_test_case.py similarity index 100% rename from tests/integration/configured_test_case.py rename to tests_metricflow/integration/configured_test_case.py diff --git a/tests/integration/conftest.py b/tests_metricflow/integration/conftest.py similarity index 95% rename from tests/integration/conftest.py rename to tests_metricflow/integration/conftest.py index 96ffdfa7a0..995f04c6d7 100644 --- a/tests/integration/conftest.py +++ b/tests_metricflow/integration/conftest.py @@ -11,7 +11,7 @@ from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration @dataclass(frozen=True) diff --git a/tests/integration/query_output/__init__.py b/tests_metricflow/integration/query_output/__init__.py similarity index 100% rename from tests/integration/query_output/__init__.py rename to tests_metricflow/integration/query_output/__init__.py diff --git a/tests/integration/query_output/test_cumulative_metrics.py b/tests_metricflow/integration/query_output/test_cumulative_metrics.py similarity index 96% rename from tests/integration/query_output/test_cumulative_metrics.py rename to tests_metricflow/integration/query_output/test_cumulative_metrics.py index f32b6d8270..b5aeb63481 100644 --- a/tests/integration/query_output/test_cumulative_metrics.py +++ b/tests_metricflow/integration/query_output/test_cumulative_metrics.py @@ -8,9 +8,9 @@ from metricflow.engine.metricflow_engine import MetricFlowQueryRequest from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.integration.conftest import IntegrationTestHelpers -from tests.snapshot_utils import assert_str_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.integration.conftest import IntegrationTestHelpers +from tests_metricflow.snapshot_utils import assert_str_snapshot_equal @pytest.mark.sql_engine_snapshot diff --git a/tests/integration/query_output/test_fill_nulls_with_0.py b/tests_metricflow/integration/query_output/test_fill_nulls_with_0.py similarity index 95% rename from tests/integration/query_output/test_fill_nulls_with_0.py rename to tests_metricflow/integration/query_output/test_fill_nulls_with_0.py index dd1acb1b0b..9ab583f998 100644 --- a/tests/integration/query_output/test_fill_nulls_with_0.py +++ b/tests_metricflow/integration/query_output/test_fill_nulls_with_0.py @@ -7,9 +7,9 @@ from metricflow.engine.metricflow_engine import MetricFlowQueryRequest from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.integration.conftest import IntegrationTestHelpers -from tests.snapshot_utils import assert_str_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.integration.conftest import IntegrationTestHelpers +from tests_metricflow.snapshot_utils import assert_str_snapshot_equal @pytest.mark.sql_engine_snapshot diff --git a/tests/integration/query_output/test_metric_filter_output.py b/tests_metricflow/integration/query_output/test_metric_filter_output.py similarity index 90% rename from tests/integration/query_output/test_metric_filter_output.py rename to tests_metricflow/integration/query_output/test_metric_filter_output.py index f0c383372e..c03dd462c2 100644 --- a/tests/integration/query_output/test_metric_filter_output.py +++ b/tests_metricflow/integration/query_output/test_metric_filter_output.py @@ -5,9 +5,9 @@ from metricflow.engine.metricflow_engine import MetricFlowQueryRequest from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.integration.conftest import IntegrationTestHelpers -from tests.snapshot_utils import assert_str_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.integration.conftest import IntegrationTestHelpers +from tests_metricflow.snapshot_utils import assert_str_snapshot_equal @pytest.mark.sql_engine_snapshot diff --git a/tests/integration/query_output/test_offset_metrics.py b/tests_metricflow/integration/query_output/test_offset_metrics.py similarity index 90% rename from tests/integration/query_output/test_offset_metrics.py rename to tests_metricflow/integration/query_output/test_offset_metrics.py index 987f657d16..a5226fbbd3 100644 --- a/tests/integration/query_output/test_offset_metrics.py +++ b/tests_metricflow/integration/query_output/test_offset_metrics.py @@ -5,9 +5,9 @@ from metricflow.engine.metricflow_engine import MetricFlowQueryRequest from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.integration.conftest import IntegrationTestHelpers -from tests.snapshot_utils import assert_str_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.integration.conftest import IntegrationTestHelpers +from tests_metricflow.snapshot_utils import assert_str_snapshot_equal @pytest.mark.sql_engine_snapshot diff --git a/tests/integration/test_cases/itest_constraints.yaml b/tests_metricflow/integration/test_cases/itest_constraints.yaml similarity index 100% rename from tests/integration/test_cases/itest_constraints.yaml rename to tests_metricflow/integration/test_cases/itest_constraints.yaml diff --git a/tests/integration/test_cases/itest_conversion_metric.yaml b/tests_metricflow/integration/test_cases/itest_conversion_metric.yaml similarity index 100% rename from tests/integration/test_cases/itest_conversion_metric.yaml rename to tests_metricflow/integration/test_cases/itest_conversion_metric.yaml diff --git a/tests/integration/test_cases/itest_cumulative_metric.yaml b/tests_metricflow/integration/test_cases/itest_cumulative_metric.yaml similarity index 100% rename from tests/integration/test_cases/itest_cumulative_metric.yaml rename to tests_metricflow/integration/test_cases/itest_cumulative_metric.yaml diff --git a/tests/integration/test_cases/itest_dimensions.yaml b/tests_metricflow/integration/test_cases/itest_dimensions.yaml similarity index 100% rename from tests/integration/test_cases/itest_dimensions.yaml rename to tests_metricflow/integration/test_cases/itest_dimensions.yaml diff --git a/tests/integration/test_cases/itest_dundered_identifiers.yaml b/tests_metricflow/integration/test_cases/itest_dundered_identifiers.yaml similarity index 100% rename from tests/integration/test_cases/itest_dundered_identifiers.yaml rename to tests_metricflow/integration/test_cases/itest_dundered_identifiers.yaml diff --git a/tests/integration/test_cases/itest_granularity.yaml b/tests_metricflow/integration/test_cases/itest_granularity.yaml similarity index 100% rename from tests/integration/test_cases/itest_granularity.yaml rename to tests_metricflow/integration/test_cases/itest_granularity.yaml diff --git a/tests/integration/test_cases/itest_joins.yaml b/tests_metricflow/integration/test_cases/itest_joins.yaml similarity index 100% rename from tests/integration/test_cases/itest_joins.yaml rename to tests_metricflow/integration/test_cases/itest_joins.yaml diff --git a/tests/integration/test_cases/itest_measure_aggregations.yaml b/tests_metricflow/integration/test_cases/itest_measure_aggregations.yaml similarity index 100% rename from tests/integration/test_cases/itest_measure_aggregations.yaml rename to tests_metricflow/integration/test_cases/itest_measure_aggregations.yaml diff --git a/tests/integration/test_cases/itest_measure_constraints.yaml b/tests_metricflow/integration/test_cases/itest_measure_constraints.yaml similarity index 100% rename from tests/integration/test_cases/itest_measure_constraints.yaml rename to tests_metricflow/integration/test_cases/itest_measure_constraints.yaml diff --git a/tests/integration/test_cases/itest_metric_queries_no_dimensions.yaml b/tests_metricflow/integration/test_cases/itest_metric_queries_no_dimensions.yaml similarity index 100% rename from tests/integration/test_cases/itest_metric_queries_no_dimensions.yaml rename to tests_metricflow/integration/test_cases/itest_metric_queries_no_dimensions.yaml diff --git a/tests/integration/test_cases/itest_metrics.yaml b/tests_metricflow/integration/test_cases/itest_metrics.yaml similarity index 100% rename from tests/integration/test_cases/itest_metrics.yaml rename to tests_metricflow/integration/test_cases/itest_metrics.yaml diff --git a/tests/integration/test_cases/itest_multi_hop_join.yaml b/tests_metricflow/integration/test_cases/itest_multi_hop_join.yaml similarity index 100% rename from tests/integration/test_cases/itest_multi_hop_join.yaml rename to tests_metricflow/integration/test_cases/itest_multi_hop_join.yaml diff --git a/tests/integration/test_cases/itest_order_limit.yaml b/tests_metricflow/integration/test_cases/itest_order_limit.yaml similarity index 100% rename from tests/integration/test_cases/itest_order_limit.yaml rename to tests_metricflow/integration/test_cases/itest_order_limit.yaml diff --git a/tests/integration/test_cases/itest_partitions.yaml b/tests_metricflow/integration/test_cases/itest_partitions.yaml similarity index 100% rename from tests/integration/test_cases/itest_partitions.yaml rename to tests_metricflow/integration/test_cases/itest_partitions.yaml diff --git a/tests/integration/test_cases/itest_scd.yaml b/tests_metricflow/integration/test_cases/itest_scd.yaml similarity index 100% rename from tests/integration/test_cases/itest_scd.yaml rename to tests_metricflow/integration/test_cases/itest_scd.yaml diff --git a/tests/integration/test_cases/itest_semi_additive_measure.yaml b/tests_metricflow/integration/test_cases/itest_semi_additive_measure.yaml similarity index 100% rename from tests/integration/test_cases/itest_semi_additive_measure.yaml rename to tests_metricflow/integration/test_cases/itest_semi_additive_measure.yaml diff --git a/tests/integration/test_cases/itest_simple.yaml b/tests_metricflow/integration/test_cases/itest_simple.yaml similarity index 100% rename from tests/integration/test_cases/itest_simple.yaml rename to tests_metricflow/integration/test_cases/itest_simple.yaml diff --git a/tests/integration/test_cases/itest_simple_non_sm.yaml b/tests_metricflow/integration/test_cases/itest_simple_non_sm.yaml similarity index 100% rename from tests/integration/test_cases/itest_simple_non_sm.yaml rename to tests_metricflow/integration/test_cases/itest_simple_non_sm.yaml diff --git a/tests/integration/test_configured_cases.py b/tests_metricflow/integration/test_configured_cases.py similarity index 98% rename from tests/integration/test_configured_cases.py rename to tests_metricflow/integration/test_configured_cases.py index 7bc7bc62f1..5b333e3c4c 100644 --- a/tests/integration/test_configured_cases.py +++ b/tests_metricflow/integration/test_configured_cases.py @@ -39,9 +39,9 @@ SqlStringExpression, SqlSubtractTimeIntervalExpression, ) -from tests.compare_df import assert_dataframes_equal -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.integration.configured_test_case import ( +from tests_metricflow.compare_df import assert_dataframes_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.integration.configured_test_case import ( CONFIGURED_INTEGRATION_TESTS_REPOSITORY, IntegrationTestModel, RequiredDwEngineFeature, diff --git a/tests/integration/test_mf_engine.py b/tests_metricflow/integration/test_mf_engine.py similarity index 68% rename from tests/integration/test_mf_engine.py rename to tests_metricflow/integration/test_mf_engine.py index 39364ce7d5..47bf04aac3 100644 --- a/tests/integration/test_mf_engine.py +++ b/tests_metricflow/integration/test_mf_engine.py @@ -2,9 +2,9 @@ from _pytest.fixtures import FixtureRequest -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.integration.conftest import IntegrationTestHelpers -from tests.snapshot_utils import assert_object_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.integration.conftest import IntegrationTestHelpers +from tests_metricflow.snapshot_utils import assert_object_snapshot_equal def test_list_dimensions( # noqa: D103 diff --git a/tests/integration/test_rendered_query.py b/tests_metricflow/integration/test_rendered_query.py similarity index 93% rename from tests/integration/test_rendered_query.py rename to tests_metricflow/integration/test_rendered_query.py index 9bc7a58fe0..4c94f40615 100644 --- a/tests/integration/test_rendered_query.py +++ b/tests_metricflow/integration/test_rendered_query.py @@ -9,9 +9,9 @@ from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.integration.conftest import IntegrationTestHelpers -from tests.snapshot_utils import ( +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.integration.conftest import IntegrationTestHelpers +from tests_metricflow.snapshot_utils import ( assert_sql_snapshot_equal, ) diff --git a/tests/plan_conversion/__init__.py b/tests_metricflow/plan_conversion/__init__.py similarity index 100% rename from tests/plan_conversion/__init__.py rename to tests_metricflow/plan_conversion/__init__.py diff --git a/tests/plan_conversion/dataflow_to_sql/__init__.py b/tests_metricflow/plan_conversion/dataflow_to_sql/__init__.py similarity index 100% rename from tests/plan_conversion/dataflow_to_sql/__init__.py rename to tests_metricflow/plan_conversion/dataflow_to_sql/__init__.py diff --git a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py b/tests_metricflow/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py similarity index 97% rename from tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py rename to tests_metricflow/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py index 3a615521e8..a88d409f0d 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py +++ b/tests_metricflow/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py @@ -14,8 +14,8 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.plan_conversion.test_dataflow_to_sql_plan import convert_and_check @pytest.mark.sql_engine_snapshot diff --git a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests_metricflow/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py similarity index 94% rename from tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py rename to tests_metricflow/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index 06145be23b..3395d47940 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests_metricflow/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -11,8 +11,8 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.plan_conversion.test_dataflow_to_sql_plan import convert_and_check @pytest.mark.sql_engine_snapshot diff --git a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py similarity index 91% rename from tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py rename to tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index 9e2f639b56..db579cebdb 100644 --- a/tests/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -11,10 +11,10 @@ from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check -from tests.time.metric_time_dimension import MTD_SPEC_DAY +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.plan_conversion.test_dataflow_to_sql_plan import convert_and_check +from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY @pytest.mark.sql_engine_snapshot diff --git a/tests/plan_conversion/instance_converters/__init__.py b/tests_metricflow/plan_conversion/instance_converters/__init__.py similarity index 100% rename from tests/plan_conversion/instance_converters/__init__.py rename to tests_metricflow/plan_conversion/instance_converters/__init__.py diff --git a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py b/tests_metricflow/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py similarity index 98% rename from tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py rename to tests_metricflow/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py index d3bc27dc50..c3ed57c33a 100644 --- a/tests/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py +++ b/tests_metricflow/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py @@ -17,7 +17,7 @@ SqlFunction, SqlPercentileExpression, ) -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup __SOURCE_TABLE_ALIAS = "a" diff --git a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py b/tests_metricflow/plan_conversion/instance_converters/test_create_validity_window_join_description.py similarity index 97% rename from tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py rename to tests_metricflow/plan_conversion/instance_converters/test_create_validity_window_join_description.py index 3fc498bd38..3e3738f77a 100644 --- a/tests/plan_conversion/instance_converters/test_create_validity_window_join_description.py +++ b/tests_metricflow/plan_conversion/instance_converters/test_create_validity_window_join_description.py @@ -10,7 +10,7 @@ from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup def test_no_validity_dims( diff --git a/tests/plan_conversion/test_dataflow_to_execution.py b/tests_metricflow/plan_conversion/test_dataflow_to_execution.py similarity index 97% rename from tests/plan_conversion/test_dataflow_to_execution.py rename to tests_metricflow/plan_conversion/test_dataflow_to_execution.py index e171ae2765..018b8501ea 100644 --- a/tests/plan_conversion/test_dataflow_to_execution.py +++ b/tests_metricflow/plan_conversion/test_dataflow_to_execution.py @@ -17,8 +17,8 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.snapshot_utils import assert_execution_plan_text_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import assert_execution_plan_text_equal def make_execution_plan_converter( # noqa: D103 diff --git a/tests/plan_conversion/test_dataflow_to_sql_plan.py b/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py similarity index 98% rename from tests/plan_conversion/test_dataflow_to_sql_plan.py rename to tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py index 282762d127..69d7e9c380 100644 --- a/tests/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py @@ -50,12 +50,12 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel -from tests.dataflow_plan_to_svg import display_graph_if_requested -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.snapshot_utils import assert_plan_snapshot_text_equal -from tests.sql.compare_sql_plan import assert_rendered_sql_from_plan_equal, assert_sql_plan_text_equal -from tests.time.metric_time_dimension import MTD_SPEC_DAY +from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal +from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_from_plan_equal, assert_sql_plan_text_equal +from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY def convert_and_check( diff --git a/tests/plan_conversion/test_time_spine.py b/tests_metricflow/plan_conversion/test_time_spine.py similarity index 100% rename from tests/plan_conversion/test_time_spine.py rename to tests_metricflow/plan_conversion/test_time_spine.py diff --git a/tests/populate_persistent_source_schemas.py b/tests_metricflow/populate_persistent_source_schemas.py similarity index 96% rename from tests/populate_persistent_source_schemas.py rename to tests_metricflow/populate_persistent_source_schemas.py index c4628d71db..878e4ebb9f 100644 --- a/tests/populate_persistent_source_schemas.py +++ b/tests_metricflow/populate_persistent_source_schemas.py @@ -8,7 +8,7 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from metricflow.protocols.sql_client import SqlEngine -from tests.generate_snapshots import ( +from tests_metricflow.generate_snapshots import ( MetricFlowTestConfiguration, run_cli, run_command, diff --git a/tests/prototype_utils.py b/tests_metricflow/prototype_utils.py similarity index 100% rename from tests/prototype_utils.py rename to tests_metricflow/prototype_utils.py diff --git a/tests/query_rendering/__init__.py b/tests_metricflow/query_rendering/__init__.py similarity index 100% rename from tests/query_rendering/__init__.py rename to tests_metricflow/query_rendering/__init__.py diff --git a/tests/query_rendering/compare_rendered_query.py b/tests_metricflow/query_rendering/compare_rendered_query.py similarity index 90% rename from tests/query_rendering/compare_rendered_query.py rename to tests_metricflow/query_rendering/compare_rendered_query.py index 1a8bbc234d..18c2c34116 100644 --- a/tests/query_rendering/compare_rendered_query.py +++ b/tests_metricflow/query_rendering/compare_rendered_query.py @@ -9,9 +9,9 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel -from tests.dataflow_plan_to_svg import display_graph_if_requested -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.sql.compare_sql_plan import assert_rendered_sql_from_plan_equal +from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_from_plan_equal def convert_and_check( diff --git a/tests/query_rendering/test_cumulative_metric_rendering.py b/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py similarity index 97% rename from tests/query_rendering/test_cumulative_metric_rendering.py rename to tests_metricflow/query_rendering/test_cumulative_metric_rendering.py index 91843920ff..aa0d33d5c6 100644 --- a/tests/query_rendering/test_cumulative_metric_rendering.py +++ b/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py @@ -18,10 +18,10 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.query_rendering.compare_rendered_query import convert_and_check -from tests.time.metric_time_dimension import MTD_SPEC_MONTH +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check +from tests_metricflow.time.metric_time_dimension import MTD_SPEC_MONTH @pytest.mark.sql_engine_snapshot diff --git a/tests/query_rendering/test_derived_metric_rendering.py b/tests_metricflow/query_rendering/test_derived_metric_rendering.py similarity index 99% rename from tests/query_rendering/test_derived_metric_rendering.py rename to tests_metricflow/query_rendering/test_derived_metric_rendering.py index ea5e196097..146e671685 100644 --- a/tests/query_rendering/test_derived_metric_rendering.py +++ b/tests_metricflow/query_rendering/test_derived_metric_rendering.py @@ -20,9 +20,9 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.query_rendering.compare_rendered_query import convert_and_check -from tests.time.metric_time_dimension import ( +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check +from tests_metricflow.time.metric_time_dimension import ( MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_QUARTER, diff --git a/tests/query_rendering/test_fill_nulls_with_rendering.py b/tests_metricflow/query_rendering/test_fill_nulls_with_rendering.py similarity index 98% rename from tests/query_rendering/test_fill_nulls_with_rendering.py rename to tests_metricflow/query_rendering/test_fill_nulls_with_rendering.py index 605c7c1a14..d1fad7ba74 100644 --- a/tests/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests_metricflow/query_rendering/test_fill_nulls_with_rendering.py @@ -23,8 +23,8 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.query_rendering.compare_rendered_query import convert_and_check +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check @pytest.mark.sql_engine_snapshot diff --git a/tests/query_rendering/test_granularity_date_part_rendering.py b/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py similarity index 96% rename from tests/query_rendering/test_granularity_date_part_rendering.py rename to tests_metricflow/query_rendering/test_granularity_date_part_rendering.py index 888b0c09fc..dc13b0c46f 100644 --- a/tests/query_rendering/test_granularity_date_part_rendering.py +++ b/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py @@ -19,8 +19,8 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.query_rendering.compare_rendered_query import convert_and_check +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check @pytest.mark.sql_engine_snapshot diff --git a/tests/query_rendering/test_metric_filter_rendering.py b/tests_metricflow/query_rendering/test_metric_filter_rendering.py similarity index 98% rename from tests/query_rendering/test_metric_filter_rendering.py rename to tests_metricflow/query_rendering/test_metric_filter_rendering.py index c3e4d4a215..18332c819d 100644 --- a/tests/query_rendering/test_metric_filter_rendering.py +++ b/tests_metricflow/query_rendering/test_metric_filter_rendering.py @@ -8,8 +8,8 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.query_rendering.compare_rendered_query import convert_and_check +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check @pytest.mark.sql_engine_snapshot diff --git a/tests/query_rendering/test_metric_time_without_metrics.py b/tests_metricflow/query_rendering/test_metric_time_without_metrics.py similarity index 95% rename from tests/query_rendering/test_metric_time_without_metrics.py rename to tests_metricflow/query_rendering/test_metric_time_without_metrics.py index 896cd8122a..78a5fa29c3 100644 --- a/tests/query_rendering/test_metric_time_without_metrics.py +++ b/tests_metricflow/query_rendering/test_metric_time_without_metrics.py @@ -12,9 +12,9 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.plan_conversion.test_dataflow_to_sql_plan import convert_and_check -from tests.time.metric_time_dimension import MTD_SPEC_DAY +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.plan_conversion.test_dataflow_to_sql_plan import convert_and_check +from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY @pytest.mark.sql_engine_snapshot diff --git a/tests/query_rendering/test_query_rendering.py b/tests_metricflow/query_rendering/test_query_rendering.py similarity index 98% rename from tests/query_rendering/test_query_rendering.py rename to tests_metricflow/query_rendering/test_query_rendering.py index e1b2d7d0c6..063e574d55 100644 --- a/tests/query_rendering/test_query_rendering.py +++ b/tests_metricflow/query_rendering/test_query_rendering.py @@ -29,9 +29,9 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.query_rendering.compare_rendered_query import convert_and_check -from tests.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_WEEK +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check +from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_WEEK @pytest.mark.sql_engine_snapshot diff --git a/tests/query_rendering/test_time_spine_join_rendering.py b/tests_metricflow/query_rendering/test_time_spine_join_rendering.py similarity index 91% rename from tests/query_rendering/test_time_spine_join_rendering.py rename to tests_metricflow/query_rendering/test_time_spine_join_rendering.py index 29ca93f6f4..8a44b4ec1a 100644 --- a/tests/query_rendering/test_time_spine_join_rendering.py +++ b/tests_metricflow/query_rendering/test_time_spine_join_rendering.py @@ -20,8 +20,8 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.query_rendering.compare_rendered_query import convert_and_check +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check @pytest.mark.sql_engine_snapshot diff --git a/tests/semantics/__init__.py b/tests_metricflow/semantics/__init__.py similarity index 100% rename from tests/semantics/__init__.py rename to tests_metricflow/semantics/__init__.py diff --git a/tests/semantics/collection_helpers/__init__.py b/tests_metricflow/semantics/collection_helpers/__init__.py similarity index 100% rename from tests/semantics/collection_helpers/__init__.py rename to tests_metricflow/semantics/collection_helpers/__init__.py diff --git a/tests/semantics/collection_helpers/test_merger.py b/tests_metricflow/semantics/collection_helpers/test_merger.py similarity index 100% rename from tests/semantics/collection_helpers/test_merger.py rename to tests_metricflow/semantics/collection_helpers/test_merger.py diff --git a/tests/semantics/collection_helpers/test_pretty_print.py b/tests_metricflow/semantics/collection_helpers/test_pretty_print.py similarity index 98% rename from tests/semantics/collection_helpers/test_pretty_print.py rename to tests_metricflow/semantics/collection_helpers/test_pretty_print.py index 2a51b41f2a..4622d92442 100644 --- a/tests/semantics/collection_helpers/test_pretty_print.py +++ b/tests_metricflow/semantics/collection_helpers/test_pretty_print.py @@ -8,7 +8,7 @@ from metricflow_semantics.mf_logging.formatting import indent from metricflow_semantics.mf_logging.pretty_print import mf_pformat, mf_pformat_many -from tests.time.metric_time_dimension import MTD_SPEC_DAY +from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY logger = logging.getLogger(__name__) diff --git a/tests/semantics/mf_logging/__init__.py b/tests_metricflow/semantics/mf_logging/__init__.py similarity index 100% rename from tests/semantics/mf_logging/__init__.py rename to tests_metricflow/semantics/mf_logging/__init__.py diff --git a/tests/semantics/mf_logging/test_dag_to_text.py b/tests_metricflow/semantics/mf_logging/test_dag_to_text.py similarity index 100% rename from tests/semantics/mf_logging/test_dag_to_text.py rename to tests_metricflow/semantics/mf_logging/test_dag_to_text.py diff --git a/tests/semantics/model/__init__.py b/tests_metricflow/semantics/model/__init__.py similarity index 100% rename from tests/semantics/model/__init__.py rename to tests_metricflow/semantics/model/__init__.py diff --git a/tests/semantics/model/example_project_configuration.py b/tests_metricflow/semantics/model/example_project_configuration.py similarity index 100% rename from tests/semantics/model/example_project_configuration.py rename to tests_metricflow/semantics/model/example_project_configuration.py diff --git a/tests/semantics/model/modify/__init__.py b/tests_metricflow/semantics/model/modify/__init__.py similarity index 100% rename from tests/semantics/model/modify/__init__.py rename to tests_metricflow/semantics/model/modify/__init__.py diff --git a/tests/semantics/model/modify/modify_input_measure_filter.py b/tests_metricflow/semantics/model/modify/modify_input_measure_filter.py similarity index 100% rename from tests/semantics/model/modify/modify_input_measure_filter.py rename to tests_metricflow/semantics/model/modify/modify_input_measure_filter.py diff --git a/tests/semantics/model/modify/modify_input_metric_filter.py b/tests_metricflow/semantics/model/modify/modify_input_metric_filter.py similarity index 100% rename from tests/semantics/model/modify/modify_input_metric_filter.py rename to tests_metricflow/semantics/model/modify/modify_input_metric_filter.py diff --git a/tests/semantics/model/modify/modify_manifest.py b/tests_metricflow/semantics/model/modify/modify_manifest.py similarity index 100% rename from tests/semantics/model/modify/modify_manifest.py rename to tests_metricflow/semantics/model/modify/modify_manifest.py diff --git a/tests/semantics/model/modify/modify_metric_filter.py b/tests_metricflow/semantics/model/modify/modify_metric_filter.py similarity index 100% rename from tests/semantics/model/modify/modify_metric_filter.py rename to tests_metricflow/semantics/model/modify/modify_metric_filter.py diff --git a/tests/semantics/model/semantics/__init__.py b/tests_metricflow/semantics/model/semantics/__init__.py similarity index 100% rename from tests/semantics/model/semantics/__init__.py rename to tests_metricflow/semantics/model/semantics/__init__.py diff --git a/tests/semantics/model/semantics/test_linkable_element_set.py b/tests_metricflow/semantics/model/semantics/test_linkable_element_set.py similarity index 100% rename from tests/semantics/model/semantics/test_linkable_element_set.py rename to tests_metricflow/semantics/model/semantics/test_linkable_element_set.py diff --git a/tests/semantics/model/semantics/test_linkable_spec_resolver.py b/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py similarity index 97% rename from tests/semantics/model/semantics/test_linkable_spec_resolver.py rename to tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py index febd9e8b66..47c32d5db4 100644 --- a/tests/semantics/model/semantics/test_linkable_spec_resolver.py +++ b/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py @@ -21,8 +21,8 @@ ) from metricflow_semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_spec_set_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_spec_set_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/semantics/model/semantics/test_semantic_model_join_evaluator.py b/tests_metricflow/semantics/model/semantics/test_semantic_model_join_evaluator.py similarity index 99% rename from tests/semantics/model/semantics/test_semantic_model_join_evaluator.py rename to tests_metricflow/semantics/model/semantics/test_semantic_model_join_evaluator.py index 03d81e57fa..0401bc2101 100644 --- a/tests/semantics/model/semantics/test_semantic_model_join_evaluator.py +++ b/tests_metricflow/semantics/model/semantics/test_semantic_model_join_evaluator.py @@ -13,7 +13,7 @@ SemanticModelLink, ) -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup def _get_join_types_for_entity_type(entity_type: EntityType) -> Sequence[SemanticModelEntityJoinType]: diff --git a/tests/semantics/model/test_data_warehouse_tasks.py b/tests_metricflow/semantics/model/test_data_warehouse_tasks.py similarity index 98% rename from tests/semantics/model/test_data_warehouse_tasks.py rename to tests_metricflow/semantics/model/test_data_warehouse_tasks.py index 4b2aedccab..8ef2652715 100644 --- a/tests/semantics/model/test_data_warehouse_tasks.py +++ b/tests_metricflow/semantics/model/test_data_warehouse_tasks.py @@ -22,8 +22,8 @@ DataWarehouseTaskBuilder, DataWarehouseValidationTask, ) -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.snapshot_utils import ( +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import ( assert_sql_snapshot_equal, ) diff --git a/tests/semantics/model/test_semantic_model_container.py b/tests_metricflow/semantics/model/test_semantic_model_container.py similarity index 97% rename from tests/semantics/model/test_semantic_model_container.py rename to tests_metricflow/semantics/model/test_semantic_model_container.py index 4b66502740..fbb25cdb50 100644 --- a/tests/semantics/model/test_semantic_model_container.py +++ b/tests_metricflow/semantics/model/test_semantic_model_container.py @@ -10,8 +10,8 @@ from metricflow_semantics.model.semantics.metric_lookup import MetricLookup from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_object_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_object_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/semantics/model/test_where_filter_spec.py b/tests_metricflow/semantics/model/test_where_filter_spec.py similarity index 99% rename from tests/semantics/model/test_where_filter_spec.py rename to tests_metricflow/semantics/model/test_where_filter_spec.py index 1bca3a0fb9..56ad459413 100644 --- a/tests/semantics/model/test_where_filter_spec.py +++ b/tests_metricflow/semantics/model/test_where_filter_spec.py @@ -45,7 +45,7 @@ ) from metricflow_semantics.specs.where_filter_transform import WhereSpecFactory -from tests.semantics.specs.conftest import EXAMPLE_FILTER_LOCATION +from tests_metricflow.semantics.specs.conftest import EXAMPLE_FILTER_LOCATION logger = logging.getLogger(__name__) diff --git a/tests/semantics/naming/__init__.py b/tests_metricflow/semantics/naming/__init__.py similarity index 100% rename from tests/semantics/naming/__init__.py rename to tests_metricflow/semantics/naming/__init__.py diff --git a/tests/semantics/naming/conftest.py b/tests_metricflow/semantics/naming/conftest.py similarity index 95% rename from tests/semantics/naming/conftest.py rename to tests_metricflow/semantics/naming/conftest.py index e4862d5059..81b7774eda 100644 --- a/tests/semantics/naming/conftest.py +++ b/tests_metricflow/semantics/naming/conftest.py @@ -14,7 +14,7 @@ TimeDimensionSpec, ) -from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR +from tests_metricflow.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR @pytest.fixture(scope="session") diff --git a/tests/semantics/naming/test_dunder_naming_scheme.py b/tests_metricflow/semantics/naming/test_dunder_naming_scheme.py similarity index 97% rename from tests/semantics/naming/test_dunder_naming_scheme.py rename to tests_metricflow/semantics/naming/test_dunder_naming_scheme.py index 4d0b4fdb11..c57e3e4544 100644 --- a/tests/semantics/naming/test_dunder_naming_scheme.py +++ b/tests_metricflow/semantics/naming/test_dunder_naming_scheme.py @@ -9,7 +9,7 @@ from metricflow_semantics.naming.dunder_scheme import DunderNamingScheme from metricflow_semantics.specs.spec_classes import DimensionSpec, EntitySpec, LinkableInstanceSpec, TimeDimensionSpec -from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR +from tests_metricflow.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR @pytest.fixture(scope="session") diff --git a/tests/semantics/naming/test_metric_name_scheme.py b/tests_metricflow/semantics/naming/test_metric_name_scheme.py similarity index 100% rename from tests/semantics/naming/test_metric_name_scheme.py rename to tests_metricflow/semantics/naming/test_metric_name_scheme.py diff --git a/tests/semantics/naming/test_object_builder_naming_scheme.py b/tests_metricflow/semantics/naming/test_object_builder_naming_scheme.py similarity index 97% rename from tests/semantics/naming/test_object_builder_naming_scheme.py rename to tests_metricflow/semantics/naming/test_object_builder_naming_scheme.py index 0488773b3f..96bedbe1d4 100644 --- a/tests/semantics/naming/test_object_builder_naming_scheme.py +++ b/tests_metricflow/semantics/naming/test_object_builder_naming_scheme.py @@ -15,7 +15,7 @@ TimeDimensionSpec, ) -from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR +from tests_metricflow.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR @pytest.fixture(scope="session") diff --git a/tests/semantics/query/__init__.py b/tests_metricflow/semantics/query/__init__.py similarity index 100% rename from tests/semantics/query/__init__.py rename to tests_metricflow/semantics/query/__init__.py diff --git a/tests/semantics/query/group_by_item/__init__.py b/tests_metricflow/semantics/query/group_by_item/__init__.py similarity index 100% rename from tests/semantics/query/group_by_item/__init__.py rename to tests_metricflow/semantics/query/group_by_item/__init__.py diff --git a/tests/semantics/query/group_by_item/ambiguous_resolution_query_id.py b/tests_metricflow/semantics/query/group_by_item/ambiguous_resolution_query_id.py similarity index 100% rename from tests/semantics/query/group_by_item/ambiguous_resolution_query_id.py rename to tests_metricflow/semantics/query/group_by_item/ambiguous_resolution_query_id.py diff --git a/tests/semantics/query/group_by_item/conftest.py b/tests_metricflow/semantics/query/group_by_item/conftest.py similarity index 95% rename from tests/semantics/query/group_by_item/conftest.py rename to tests_metricflow/semantics/query/group_by_item/conftest.py index 9da0958cb1..9c99be39d8 100644 --- a/tests/semantics/query/group_by_item/conftest.py +++ b/tests_metricflow/semantics/query/group_by_item/conftest.py @@ -16,8 +16,8 @@ from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow_semantics.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId def _build_resolution_dag( diff --git a/tests/semantics/query/group_by_item/filter_spec_resolution/__init__.py b/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/__init__.py similarity index 100% rename from tests/semantics/query/group_by_item/filter_spec_resolution/__init__.py rename to tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/__init__.py diff --git a/tests/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py b/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py similarity index 94% rename from tests/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py rename to tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py index 58cb64d428..4f35181817 100644 --- a/tests/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py +++ b/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py @@ -31,12 +31,12 @@ from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_resolver import WhereFilterSpecResolver from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.semantics.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform -from tests.semantics.model.modify.modify_manifest import modify_manifest -from tests.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform -from tests.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId, _build_resolution_dag -from tests.snapshot_utils import assert_str_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.semantics.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform +from tests_metricflow.semantics.model.modify.modify_manifest import modify_manifest +from tests_metricflow.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform +from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId, _build_resolution_dag +from tests_metricflow.snapshot_utils import assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/semantics/query/group_by_item/resolution_dag/__init__.py b/tests_metricflow/semantics/query/group_by_item/resolution_dag/__init__.py similarity index 100% rename from tests/semantics/query/group_by_item/resolution_dag/__init__.py rename to tests_metricflow/semantics/query/group_by_item/resolution_dag/__init__.py diff --git a/tests/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py b/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py similarity index 80% rename from tests/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py rename to tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py index c2cc2afd65..ed3493fab5 100644 --- a/tests/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py +++ b/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py @@ -8,9 +8,9 @@ from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId -from tests.snapshot_utils import assert_plan_snapshot_text_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId +from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal logger = logging.getLogger(__name__) diff --git a/tests/semantics/query/group_by_item/test_available_group_by_items.py b/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py similarity index 84% rename from tests/semantics/query/group_by_item/test_available_group_by_items.py rename to tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py index 37260ba0cf..7ed792bbc3 100644 --- a/tests/semantics/query/group_by_item/test_available_group_by_items.py +++ b/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py @@ -10,9 +10,9 @@ from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow_semantics.specs.spec_classes import LinkableSpecSet -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId -from tests.snapshot_utils import assert_linkable_spec_set_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId +from tests_metricflow.snapshot_utils import assert_linkable_spec_set_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/semantics/query/group_by_item/test_matching_item_for_filters.py b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py similarity index 88% rename from tests/semantics/query/group_by_item/test_matching_item_for_filters.py rename to tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py index 92042f1374..2e97b9f5ff 100644 --- a/tests/semantics/query/group_by_item/test_matching_item_for_filters.py +++ b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py @@ -12,9 +12,9 @@ from metricflow_semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId -from tests.snapshot_utils import assert_object_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId +from tests_metricflow.snapshot_utils import assert_object_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/semantics/query/group_by_item/test_matching_item_for_querying.py b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py similarity index 94% rename from tests/semantics/query/group_by_item/test_matching_item_for_querying.py rename to tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py index 06a0147a02..d3f93cc381 100644 --- a/tests/semantics/query/group_by_item/test_matching_item_for_querying.py +++ b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py @@ -17,10 +17,10 @@ MetricGroupByItemResolutionNode, ) -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId -from tests.snapshot_utils import assert_object_snapshot_equal -from tests.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_YEAR +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId +from tests_metricflow.snapshot_utils import assert_object_snapshot_equal +from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_YEAR logger = logging.getLogger(__name__) diff --git a/tests/semantics/query/test_ambiguous_entity_path.py b/tests_metricflow/semantics/query/test_ambiguous_entity_path.py similarity index 95% rename from tests/semantics/query/test_ambiguous_entity_path.py rename to tests_metricflow/semantics/query/test_ambiguous_entity_path.py index 220f32d6f0..9b38bc1f42 100644 --- a/tests/semantics/query/test_ambiguous_entity_path.py +++ b/tests_metricflow/semantics/query/test_ambiguous_entity_path.py @@ -11,8 +11,8 @@ from metricflow_semantics.query.query_exceptions import InvalidQueryException from metricflow_semantics.query.query_parser import MetricFlowQueryParser -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.snapshot_utils import assert_object_snapshot_equal, assert_str_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import assert_object_snapshot_equal, assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/semantics/query/test_query_parser.py b/tests_metricflow/semantics/query/test_query_parser.py similarity index 99% rename from tests/semantics/query/test_query_parser.py rename to tests_metricflow/semantics/query/test_query_parser.py index 65cddd5113..3a1b145592 100644 --- a/tests/semantics/query/test_query_parser.py +++ b/tests_metricflow/semantics/query/test_query_parser.py @@ -31,8 +31,10 @@ TimeDimensionSpec, ) -from tests.semantics.model.example_project_configuration import EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE -from tests.time.metric_time_dimension import MTD +from tests_metricflow.semantics.model.example_project_configuration import ( + EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE, +) +from tests_metricflow.time.metric_time_dimension import MTD logger = logging.getLogger(__name__) diff --git a/tests/semantics/query/test_suggestions.py b/tests_metricflow/semantics/query/test_suggestions.py similarity index 94% rename from tests/semantics/query/test_suggestions.py rename to tests_metricflow/semantics/query/test_suggestions.py index 8e493c8e38..cb5a8e6f38 100644 --- a/tests/semantics/query/test_suggestions.py +++ b/tests_metricflow/semantics/query/test_suggestions.py @@ -16,10 +16,10 @@ from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.semantics.model.modify.modify_manifest import modify_manifest -from tests.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform -from tests.snapshot_utils import assert_str_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.semantics.model.modify.modify_manifest import modify_manifest +from tests_metricflow.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform +from tests_metricflow.snapshot_utils import assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/semantics/specs/__init__.py b/tests_metricflow/semantics/specs/__init__.py similarity index 100% rename from tests/semantics/specs/__init__.py rename to tests_metricflow/semantics/specs/__init__.py diff --git a/tests/semantics/specs/conftest.py b/tests_metricflow/semantics/specs/conftest.py similarity index 100% rename from tests/semantics/specs/conftest.py rename to tests_metricflow/semantics/specs/conftest.py diff --git a/tests/semantics/specs/patterns/__init__.py b/tests_metricflow/semantics/specs/patterns/__init__.py similarity index 100% rename from tests/semantics/specs/patterns/__init__.py rename to tests_metricflow/semantics/specs/patterns/__init__.py diff --git a/tests/semantics/specs/patterns/test_entity_link_pattern.py b/tests_metricflow/semantics/specs/patterns/test_entity_link_pattern.py similarity index 98% rename from tests/semantics/specs/patterns/test_entity_link_pattern.py rename to tests_metricflow/semantics/specs/patterns/test_entity_link_pattern.py index ee4d54dbfa..51fae67009 100644 --- a/tests/semantics/specs/patterns/test_entity_link_pattern.py +++ b/tests_metricflow/semantics/specs/patterns/test_entity_link_pattern.py @@ -22,7 +22,7 @@ TimeDimensionSpec, ) -from tests.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR +from tests_metricflow.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR logger = logging.getLogger(__name__) diff --git a/tests/semantics/specs/patterns/test_typed_patterns.py b/tests_metricflow/semantics/specs/patterns/test_typed_patterns.py similarity index 100% rename from tests/semantics/specs/patterns/test_typed_patterns.py rename to tests_metricflow/semantics/specs/patterns/test_typed_patterns.py diff --git a/tests/semantics/specs/test_time_dimension_spec.py b/tests_metricflow/semantics/specs/test_time_dimension_spec.py similarity index 100% rename from tests/semantics/specs/test_time_dimension_spec.py rename to tests_metricflow/semantics/specs/test_time_dimension_spec.py diff --git a/tests/semantics/specs/test_where_filter_entity.py b/tests_metricflow/semantics/specs/test_where_filter_entity.py similarity index 92% rename from tests/semantics/specs/test_where_filter_entity.py rename to tests_metricflow/semantics/specs/test_where_filter_entity.py index e609d07f7d..ab42458114 100644 --- a/tests/semantics/specs/test_where_filter_entity.py +++ b/tests_metricflow/semantics/specs/test_where_filter_entity.py @@ -9,7 +9,7 @@ from metricflow_semantics.specs.rendered_spec_tracker import RenderedSpecTracker from metricflow_semantics.specs.where_filter_entity import WhereFilterEntity -from tests.semantics.specs.conftest import EXAMPLE_FILTER_LOCATION +from tests_metricflow.semantics.specs.conftest import EXAMPLE_FILTER_LOCATION def test_descending_cannot_be_set( # noqa diff --git a/tests/semantics/sql/__init__.py b/tests_metricflow/semantics/sql/__init__.py similarity index 100% rename from tests/semantics/sql/__init__.py rename to tests_metricflow/semantics/sql/__init__.py diff --git a/tests/semantics/sql/test_bind_parameter_serialization.py b/tests_metricflow/semantics/sql/test_bind_parameter_serialization.py similarity index 100% rename from tests/semantics/sql/test_bind_parameter_serialization.py rename to tests_metricflow/semantics/sql/test_bind_parameter_serialization.py diff --git a/tests/semantics/test_specs.py b/tests_metricflow/semantics/test_specs.py similarity index 100% rename from tests/semantics/test_specs.py rename to tests_metricflow/semantics/test_specs.py diff --git a/tests/snapshot_utils.py b/tests_metricflow/snapshot_utils.py similarity index 99% rename from tests/snapshot_utils.py rename to tests_metricflow/snapshot_utils.py index 688d2787c3..4d30aa5e5c 100644 --- a/tests/snapshot_utils.py +++ b/tests_metricflow/snapshot_utils.py @@ -16,7 +16,7 @@ from metricflow.dataflow.dataflow_plan import DataflowPlan from metricflow.execution.execution_plan import ExecutionPlan from metricflow.protocols.sql_client import SqlClient, SqlEngine -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker logger = logging.getLogger(__name__) diff --git a/tests/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_ambiguous_entity_path_resolves_to_shortest_entity_path_item__result_0.txt b/tests_metricflow/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_ambiguous_entity_path_resolves_to_shortest_entity_path_item__result_0.txt similarity index 100% rename from tests/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_ambiguous_entity_path_resolves_to_shortest_entity_path_item__result_0.txt rename to tests_metricflow/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_ambiguous_entity_path_resolves_to_shortest_entity_path_item__result_0.txt diff --git a/tests/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_resolvable_ambiguous_entity_path__result_0.txt b/tests_metricflow/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_resolvable_ambiguous_entity_path__result_0.txt similarity index 100% rename from tests/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_resolvable_ambiguous_entity_path__result_0.txt rename to tests_metricflow/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_resolvable_ambiguous_entity_path__result_0.txt diff --git a/tests/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_mismatch__result_0.txt b/tests_metricflow/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_mismatch__result_0.txt similarity index 100% rename from tests/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_mismatch__result_0.txt rename to tests_metricflow/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_mismatch__result_0.txt diff --git a/tests/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_multiple_matches__result_0.txt b/tests_metricflow/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_multiple_matches__result_0.txt similarity index 100% rename from tests/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_multiple_matches__result_0.txt rename to tests_metricflow/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_multiple_matches__result_0.txt diff --git a/tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__accumulate_last_2_months_metric__set0.txt b/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__accumulate_last_2_months_metric__set0.txt similarity index 100% rename from tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__accumulate_last_2_months_metric__set0.txt rename to tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__accumulate_last_2_months_metric__set0.txt diff --git a/tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_different_parent_time_grains__set0.txt b/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_different_parent_time_grains__set0.txt similarity index 100% rename from tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_different_parent_time_grains__set0.txt rename to tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_different_parent_time_grains__set0.txt diff --git a/tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_same_parent_time_grains__set0.txt b/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_same_parent_time_grains__set0.txt similarity index 100% rename from tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_same_parent_time_grains__set0.txt rename to tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_same_parent_time_grains__set0.txt diff --git a/tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_different_time_grains__set0.txt b/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_different_time_grains__set0.txt similarity index 100% rename from tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_different_time_grains__set0.txt rename to tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_different_time_grains__set0.txt diff --git a/tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_same_time_grains__set0.txt b/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_same_time_grains__set0.txt similarity index 100% rename from tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_same_time_grains__set0.txt rename to tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_same_time_grains__set0.txt diff --git a/tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt b/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt similarity index 100% rename from tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt rename to tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt diff --git a/tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__simple_metric__set0.txt b/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__simple_metric__set0.txt similarity index 100% rename from tests/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__simple_metric__set0.txt rename to tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__simple_metric__set0.txt diff --git a/tests/snapshots/test_cli.py/str/BigQuery/test_saved_query__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/BigQuery/test_saved_query__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/BigQuery/test_saved_query__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/BigQuery/test_saved_query__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_cumulative_metric__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_cumulative_metric__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_cumulative_metric__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_cumulative_metric__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_limit__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_limit__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_limit__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_limit__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_where__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_where__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_where__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/BigQuery/test_saved_query_with_where__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Databricks/test_saved_query__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Databricks/test_saved_query__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Databricks/test_saved_query__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Databricks/test_saved_query__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Databricks/test_saved_query_with_cumulative_metric__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Databricks/test_saved_query_with_cumulative_metric__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Databricks/test_saved_query_with_cumulative_metric__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Databricks/test_saved_query_with_cumulative_metric__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Databricks/test_saved_query_with_limit__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Databricks/test_saved_query_with_limit__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Databricks/test_saved_query_with_limit__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Databricks/test_saved_query_with_limit__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Databricks/test_saved_query_with_where__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Databricks/test_saved_query_with_where__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Databricks/test_saved_query_with_where__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Databricks/test_saved_query_with_where__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/DuckDB/test_saved_query__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/DuckDB/test_saved_query__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/DuckDB/test_saved_query__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/DuckDB/test_saved_query__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_cumulative_metric__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_cumulative_metric__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_cumulative_metric__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_cumulative_metric__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_limit__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_limit__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_limit__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_limit__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_where__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_where__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_where__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/DuckDB/test_saved_query_with_where__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Postgres/test_saved_query__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Postgres/test_saved_query__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Postgres/test_saved_query__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Postgres/test_saved_query__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Postgres/test_saved_query_with_cumulative_metric__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Postgres/test_saved_query_with_cumulative_metric__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Postgres/test_saved_query_with_cumulative_metric__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Postgres/test_saved_query_with_cumulative_metric__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Postgres/test_saved_query_with_limit__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Postgres/test_saved_query_with_limit__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Postgres/test_saved_query_with_limit__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Postgres/test_saved_query_with_limit__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Postgres/test_saved_query_with_where__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Postgres/test_saved_query_with_where__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Postgres/test_saved_query_with_where__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Postgres/test_saved_query_with_where__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Redshift/test_saved_query__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Redshift/test_saved_query__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Redshift/test_saved_query__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Redshift/test_saved_query__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Redshift/test_saved_query_with_cumulative_metric__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Redshift/test_saved_query_with_cumulative_metric__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Redshift/test_saved_query_with_cumulative_metric__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Redshift/test_saved_query_with_cumulative_metric__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Redshift/test_saved_query_with_limit__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Redshift/test_saved_query_with_limit__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Redshift/test_saved_query_with_limit__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Redshift/test_saved_query_with_limit__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Redshift/test_saved_query_with_where__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Redshift/test_saved_query_with_where__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Redshift/test_saved_query_with_where__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Redshift/test_saved_query_with_where__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Snowflake/test_saved_query__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Snowflake/test_saved_query__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Snowflake/test_saved_query__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Snowflake/test_saved_query__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_cumulative_metric__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_cumulative_metric__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_cumulative_metric__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_cumulative_metric__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_limit__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_limit__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_limit__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_limit__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_where__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_where__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_where__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Snowflake/test_saved_query_with_where__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Trino/test_saved_query__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Trino/test_saved_query__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Trino/test_saved_query__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Trino/test_saved_query__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Trino/test_saved_query_with_cumulative_metric__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Trino/test_saved_query_with_cumulative_metric__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Trino/test_saved_query_with_cumulative_metric__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Trino/test_saved_query_with_cumulative_metric__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Trino/test_saved_query_with_limit__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Trino/test_saved_query_with_limit__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Trino/test_saved_query_with_limit__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Trino/test_saved_query_with_limit__cli_output.txt diff --git a/tests/snapshots/test_cli.py/str/Trino/test_saved_query_with_where__cli_output.txt b/tests_metricflow/snapshots/test_cli.py/str/Trino/test_saved_query_with_where__cli_output.txt similarity index 100% rename from tests/snapshots/test_cli.py/str/Trino/test_saved_query_with_where__cli_output.txt rename to tests_metricflow/snapshots/test_cli.py/str/Trino/test_saved_query_with_where__cli_output.txt diff --git a/tests/snapshots/test_cm_branch_combiner.py/DataflowPlan/test_filter_combination__dfpo_0.xml b/tests_metricflow/snapshots/test_cm_branch_combiner.py/DataflowPlan/test_filter_combination__dfpo_0.xml similarity index 100% rename from tests/snapshots/test_cm_branch_combiner.py/DataflowPlan/test_filter_combination__dfpo_0.xml rename to tests_metricflow/snapshots/test_cm_branch_combiner.py/DataflowPlan/test_filter_combination__dfpo_0.xml diff --git a/tests/snapshots/test_cm_branch_combiner.py/DataflowPlan/test_read_sql_source_combination__dfpo_0.xml b/tests_metricflow/snapshots/test_cm_branch_combiner.py/DataflowPlan/test_read_sql_source_combination__dfpo_0.xml similarity index 100% rename from tests/snapshots/test_cm_branch_combiner.py/DataflowPlan/test_read_sql_source_combination__dfpo_0.xml rename to tests_metricflow/snapshots/test_cm_branch_combiner.py/DataflowPlan/test_read_sql_source_combination__dfpo_0.xml diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_if_in_where__after_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_if_in_where__after_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_if_in_where__after_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_if_in_where__after_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_if_in_where__before_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_if_in_where__before_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_if_in_where__before_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_if_in_where__before_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_with_str_expr__after_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_with_str_expr__after_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_with_str_expr__after_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_with_str_expr__after_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_with_str_expr__before_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_with_str_expr__before_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_with_str_expr__before_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_dont_prune_with_str_expr__before_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_no_pruning__after_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_no_pruning__after_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_no_pruning__after_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_no_pruning__after_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_no_pruning__before_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_no_pruning__before_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_no_pruning__before_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_no_pruning__before_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_distinct_select__after_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_distinct_select__after_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_distinct_select__after_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_distinct_select__after_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_distinct_select__before_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_distinct_select__before_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_distinct_select__before_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_distinct_select__before_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_from_source__after_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_from_source__after_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_from_source__after_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_from_source__after_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_from_source__before_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_from_source__before_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_from_source__before_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_from_source__before_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents__after_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents__after_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents__after_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents__after_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents__before_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents__before_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents__before_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents__before_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents_in_join_query__after_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents_in_join_query__after_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents_in_join_query__after_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents_in_join_query__after_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents_in_join_query__before_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents_in_join_query__before_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents_in_join_query__before_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_grandparents_in_join_query__before_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_joined_source__after_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_joined_source__after_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_joined_source__after_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_joined_source__after_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_joined_source__before_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_joined_source__before_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_joined_source__before_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_joined_source__before_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_str_expr__after_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_str_expr__after_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_str_expr__after_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_str_expr__after_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_str_expr__before_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_str_expr__before_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_str_expr__before_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_str_expr__before_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_with_str_expr__after_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_with_str_expr__after_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_with_str_expr__after_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_with_str_expr__after_pruning.sql diff --git a/tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_with_str_expr__before_pruning.sql b/tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_with_str_expr__before_pruning.sql similarity index 100% rename from tests/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_with_str_expr__before_pruning.sql rename to tests_metricflow/snapshots/test_column_pruner.py/SqlQueryPlan/test_prune_with_str_expr__before_pruning.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_count_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_count_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_count_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_count_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_count_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_count_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_window__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_window__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_window__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/BigQuery/test_conversion_rate_with_window__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_count_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_count_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_count_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_count_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_count_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_count_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_constant_properties__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_constant_properties__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_constant_properties__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_constant_properties__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_constant_properties__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_constant_properties__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_window__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_window__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_window__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Databricks/test_conversion_rate_with_window__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_count_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_count_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_count_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_count_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_count_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_count_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_window__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_window__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_window__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/DuckDB/test_conversion_rate_with_window__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_count_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_count_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_count_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_count_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_count_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_count_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_constant_properties__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_constant_properties__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_constant_properties__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_constant_properties__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_constant_properties__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_constant_properties__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_window__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_window__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_window__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Postgres/test_conversion_rate_with_window__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_count_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_count_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_count_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_count_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_count_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_count_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_constant_properties__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_constant_properties__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_constant_properties__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_constant_properties__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_constant_properties__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_constant_properties__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_window__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_window__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_window__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Redshift/test_conversion_rate_with_window__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_count_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_count_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_count_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_count_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_count_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_count_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_window__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_window__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_window__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Snowflake/test_conversion_rate_with_window__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_count_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_count_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_count_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_count_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_count_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_count_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_constant_properties__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_constant_properties__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_constant_properties__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_constant_properties__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_constant_properties__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_constant_properties__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_no_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_no_group_by__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_no_group_by__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_no_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_no_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_no_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_window__plan0.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_window__plan0.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_window__plan0.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/Trino/test_conversion_rate_with_window__plan0_optimized.sql diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_count_with_no_group_by__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_count_with_no_group_by__plan0.xml similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_count_with_no_group_by__plan0.xml rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_count_with_no_group_by__plan0.xml diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate__plan0.xml similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate__plan0.xml rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate__plan0.xml diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_constant_properties__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_constant_properties__plan0.xml similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_constant_properties__plan0.xml rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_constant_properties__plan0.xml diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_no_group_by__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_no_group_by__plan0.xml similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_no_group_by__plan0.xml rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_no_group_by__plan0.xml diff --git a/tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_window__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_window__plan0.xml similarity index 100% rename from tests/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_window__plan0.xml rename to tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_window__plan0.xml diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_query_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_query_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_query_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_query_semantic_model__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_table_semantic_model_with_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_table_semantic_model_with_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_table_semantic_model_with_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_table_semantic_model_with_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_table_semantic_model_without_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_table_semantic_model_without_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_table_semantic_model_without_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/BigQuery/test_convert_table_semantic_model_without_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_query_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_query_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_query_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_query_semantic_model__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_table_semantic_model_with_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_table_semantic_model_with_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_table_semantic_model_with_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_table_semantic_model_with_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_table_semantic_model_without_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_table_semantic_model_without_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_table_semantic_model_without_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Databricks/test_convert_table_semantic_model_without_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_query_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_query_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_query_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_query_semantic_model__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_table_semantic_model_with_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_table_semantic_model_with_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_table_semantic_model_with_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_table_semantic_model_with_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_table_semantic_model_without_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_table_semantic_model_without_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_table_semantic_model_without_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/DuckDB/test_convert_table_semantic_model_without_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_query_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_query_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_query_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_query_semantic_model__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_table_semantic_model_with_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_table_semantic_model_with_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_table_semantic_model_with_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_table_semantic_model_with_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_table_semantic_model_without_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_table_semantic_model_without_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_table_semantic_model_without_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Postgres/test_convert_table_semantic_model_without_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_query_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_query_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_query_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_query_semantic_model__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_table_semantic_model_with_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_table_semantic_model_with_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_table_semantic_model_with_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_table_semantic_model_with_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_table_semantic_model_without_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_table_semantic_model_without_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_table_semantic_model_without_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Redshift/test_convert_table_semantic_model_without_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_query_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_query_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_query_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_query_semantic_model__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_table_semantic_model_with_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_table_semantic_model_with_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_table_semantic_model_with_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_table_semantic_model_with_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_table_semantic_model_without_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_table_semantic_model_without_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_table_semantic_model_without_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Snowflake/test_convert_table_semantic_model_without_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_query_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_query_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_query_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_query_semantic_model__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_table_semantic_model_with_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_table_semantic_model_with_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_table_semantic_model_with_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_table_semantic_model_with_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_table_semantic_model_without_measures__plan0.sql b/tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_table_semantic_model_without_measures__plan0.sql similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_table_semantic_model_without_measures__plan0.sql rename to tests_metricflow/snapshots/test_convert_semantic_model.py/SqlQueryPlan/Trino/test_convert_table_semantic_model_without_measures__plan0.sql diff --git a/tests/snapshots/test_convert_semantic_model.py/list/test_convert_table_semantic_model_with_measures__result0.txt b/tests_metricflow/snapshots/test_convert_semantic_model.py/list/test_convert_table_semantic_model_with_measures__result0.txt similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/list/test_convert_table_semantic_model_with_measures__result0.txt rename to tests_metricflow/snapshots/test_convert_semantic_model.py/list/test_convert_table_semantic_model_with_measures__result0.txt diff --git a/tests/snapshots/test_convert_semantic_model.py/list/test_convert_table_semantic_model_without_measures__result0.txt b/tests_metricflow/snapshots/test_convert_semantic_model.py/list/test_convert_table_semantic_model_without_measures__result0.txt similarity index 100% rename from tests/snapshots/test_convert_semantic_model.py/list/test_convert_table_semantic_model_without_measures__result0.txt rename to tests_metricflow/snapshots/test_convert_semantic_model.py/list/test_convert_table_semantic_model_without_measures__result0.txt diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_grain_to_date__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_grain_to_date__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_grain_to_date__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_grain_to_date__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_grain_to_date__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_grain_to_date__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_grain_to_date__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_grain_to_date__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_month__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_month__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_month__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_month__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_month__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_ds__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_ds__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_ds__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_ds__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_ds__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_ds__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_ds__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_ds__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_agg_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_agg_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_agg_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_agg_time_dimension__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_grain_to_date__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_grain_to_date__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_grain_to_date__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_grain_to_date__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_grain_to_date__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_grain_to_date__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_grain_to_date__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_grain_to_date__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_month__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_month__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_month__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_month__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_month__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_ds__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_ds__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_ds__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_ds__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_ds__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_ds__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_ds__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_ds__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_agg_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_agg_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_agg_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_agg_time_dimension__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_grain_to_date__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_grain_to_date__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_grain_to_date__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_grain_to_date__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_grain_to_date__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_grain_to_date__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_grain_to_date__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_grain_to_date__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_month__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_month__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_month__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_month__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_month__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_ds__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_ds__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_ds__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_ds__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_ds__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_ds__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_ds__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_ds__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_agg_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_agg_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_agg_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_agg_time_dimension__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_grain_to_date__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_grain_to_date__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_grain_to_date__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_grain_to_date__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_grain_to_date__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_grain_to_date__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_grain_to_date__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_grain_to_date__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_month__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_month__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_month__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_month__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_month__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_ds__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_ds__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_ds__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_ds__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_ds__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_ds__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_ds__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_ds__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_agg_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_agg_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_agg_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_agg_time_dimension__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_grain_to_date__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_grain_to_date__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_grain_to_date__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_grain_to_date__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_grain_to_date__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_grain_to_date__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_grain_to_date__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_grain_to_date__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_month__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_month__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_month__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_month__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_month__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_ds__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_ds__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_ds__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_ds__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_ds__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_ds__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_ds__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_ds__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_agg_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_agg_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_agg_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_agg_time_dimension__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_grain_to_date__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_grain_to_date__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_grain_to_date__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_grain_to_date__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_grain_to_date__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_grain_to_date__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_grain_to_date__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_grain_to_date__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_month__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_month__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_month__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_month__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_month__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_ds__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_ds__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_ds__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_ds__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_ds__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_ds__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_ds__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_ds__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_agg_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_agg_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_agg_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_agg_time_dimension__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_grain_to_date__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_grain_to_date__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_grain_to_date__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_grain_to_date__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_grain_to_date__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_grain_to_date__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_grain_to_date__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_grain_to_date__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_month__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_month__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_month__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_month__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_month__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_ds__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_ds__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_ds__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_ds__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_ds__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_ds__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_ds__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_ds__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_agg_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_agg_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_agg_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_agg_time_dimension__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_agg_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_non_adjustable_time_filter__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_non_adjustable_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_cumulative_metrics.py/str/BigQuery/test_cumulative_metric_with_non_adjustable_filter__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/BigQuery/test_cumulative_metric_with_non_adjustable_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/BigQuery/test_cumulative_metric_with_non_adjustable_filter__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/BigQuery/test_cumulative_metric_with_non_adjustable_filter__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/BigQuery/test_grain_to_date_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/BigQuery/test_grain_to_date_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/BigQuery/test_grain_to_date_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/BigQuery/test_grain_to_date_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/BigQuery/test_multiple_cumulative_metrics__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/BigQuery/test_multiple_cumulative_metrics__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/BigQuery/test_multiple_cumulative_metrics__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/BigQuery/test_multiple_cumulative_metrics__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/BigQuery/test_non_additive_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/BigQuery/test_non_additive_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/BigQuery/test_non_additive_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/BigQuery/test_non_additive_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/BigQuery/test_simple_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/BigQuery/test_simple_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/BigQuery/test_simple_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/BigQuery/test_simple_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Databricks/test_cumulative_metric_with_non_adjustable_filter__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Databricks/test_cumulative_metric_with_non_adjustable_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Databricks/test_cumulative_metric_with_non_adjustable_filter__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Databricks/test_cumulative_metric_with_non_adjustable_filter__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Databricks/test_grain_to_date_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Databricks/test_grain_to_date_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Databricks/test_grain_to_date_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Databricks/test_grain_to_date_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Databricks/test_multiple_cumulative_metrics__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Databricks/test_multiple_cumulative_metrics__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Databricks/test_multiple_cumulative_metrics__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Databricks/test_multiple_cumulative_metrics__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Databricks/test_non_additive_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Databricks/test_non_additive_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Databricks/test_non_additive_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Databricks/test_non_additive_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Databricks/test_simple_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Databricks/test_simple_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Databricks/test_simple_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Databricks/test_simple_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/DuckDB/test_cumulative_metric_with_non_adjustable_filter__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/DuckDB/test_cumulative_metric_with_non_adjustable_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/DuckDB/test_cumulative_metric_with_non_adjustable_filter__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/DuckDB/test_cumulative_metric_with_non_adjustable_filter__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/DuckDB/test_grain_to_date_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/DuckDB/test_grain_to_date_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/DuckDB/test_grain_to_date_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/DuckDB/test_grain_to_date_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/DuckDB/test_multiple_cumulative_metrics__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/DuckDB/test_multiple_cumulative_metrics__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/DuckDB/test_multiple_cumulative_metrics__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/DuckDB/test_multiple_cumulative_metrics__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/DuckDB/test_non_additive_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/DuckDB/test_non_additive_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/DuckDB/test_non_additive_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/DuckDB/test_non_additive_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/DuckDB/test_simple_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/DuckDB/test_simple_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/DuckDB/test_simple_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/DuckDB/test_simple_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Postgres/test_cumulative_metric_with_non_adjustable_filter__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Postgres/test_cumulative_metric_with_non_adjustable_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Postgres/test_cumulative_metric_with_non_adjustable_filter__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Postgres/test_cumulative_metric_with_non_adjustable_filter__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Postgres/test_grain_to_date_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Postgres/test_grain_to_date_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Postgres/test_grain_to_date_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Postgres/test_grain_to_date_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Postgres/test_multiple_cumulative_metrics__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Postgres/test_multiple_cumulative_metrics__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Postgres/test_multiple_cumulative_metrics__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Postgres/test_multiple_cumulative_metrics__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Postgres/test_non_additive_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Postgres/test_non_additive_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Postgres/test_non_additive_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Postgres/test_non_additive_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Postgres/test_simple_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Postgres/test_simple_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Postgres/test_simple_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Postgres/test_simple_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Redshift/test_cumulative_metric_with_non_adjustable_filter__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Redshift/test_cumulative_metric_with_non_adjustable_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Redshift/test_cumulative_metric_with_non_adjustable_filter__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Redshift/test_cumulative_metric_with_non_adjustable_filter__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Redshift/test_grain_to_date_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Redshift/test_grain_to_date_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Redshift/test_grain_to_date_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Redshift/test_grain_to_date_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Redshift/test_multiple_cumulative_metrics__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Redshift/test_multiple_cumulative_metrics__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Redshift/test_multiple_cumulative_metrics__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Redshift/test_multiple_cumulative_metrics__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Redshift/test_non_additive_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Redshift/test_non_additive_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Redshift/test_non_additive_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Redshift/test_non_additive_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Redshift/test_simple_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Redshift/test_simple_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Redshift/test_simple_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Redshift/test_simple_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Snowflake/test_cumulative_metric_with_non_adjustable_filter__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Snowflake/test_cumulative_metric_with_non_adjustable_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Snowflake/test_cumulative_metric_with_non_adjustable_filter__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Snowflake/test_cumulative_metric_with_non_adjustable_filter__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Snowflake/test_grain_to_date_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Snowflake/test_grain_to_date_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Snowflake/test_grain_to_date_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Snowflake/test_grain_to_date_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Snowflake/test_multiple_cumulative_metrics__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Snowflake/test_multiple_cumulative_metrics__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Snowflake/test_multiple_cumulative_metrics__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Snowflake/test_multiple_cumulative_metrics__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Snowflake/test_non_additive_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Snowflake/test_non_additive_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Snowflake/test_non_additive_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Snowflake/test_non_additive_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Snowflake/test_simple_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Snowflake/test_simple_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Snowflake/test_simple_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Snowflake/test_simple_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Trino/test_cumulative_metric_with_non_adjustable_filter__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Trino/test_cumulative_metric_with_non_adjustable_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Trino/test_cumulative_metric_with_non_adjustable_filter__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Trino/test_cumulative_metric_with_non_adjustable_filter__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Trino/test_grain_to_date_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Trino/test_grain_to_date_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Trino/test_grain_to_date_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Trino/test_grain_to_date_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Trino/test_multiple_cumulative_metrics__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Trino/test_multiple_cumulative_metrics__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Trino/test_multiple_cumulative_metrics__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Trino/test_multiple_cumulative_metrics__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Trino/test_non_additive_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Trino/test_non_additive_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Trino/test_non_additive_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Trino/test_non_additive_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cumulative_metrics.py/str/Trino/test_simple_cumulative_metric__query_output.txt b/tests_metricflow/snapshots/test_cumulative_metrics.py/str/Trino/test_simple_cumulative_metric__query_output.txt similarity index 100% rename from tests/snapshots/test_cumulative_metrics.py/str/Trino/test_simple_cumulative_metric__query_output.txt rename to tests_metricflow/snapshots/test_cumulative_metrics.py/str/Trino/test_simple_cumulative_metric__query_output.txt diff --git a/tests/snapshots/test_cyclic_join.py/DataflowPlan/test_cyclic_join__dfp_0.xml b/tests_metricflow/snapshots/test_cyclic_join.py/DataflowPlan/test_cyclic_join__dfp_0.xml similarity index 100% rename from tests/snapshots/test_cyclic_join.py/DataflowPlan/test_cyclic_join__dfp_0.xml rename to tests_metricflow/snapshots/test_cyclic_join.py/DataflowPlan/test_cyclic_join__dfp_0.xml diff --git a/tests/snapshots/test_data_warehouse_tasks.py/str/BigQuery/test_build_metric_tasks__query0.sql b/tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/BigQuery/test_build_metric_tasks__query0.sql similarity index 100% rename from tests/snapshots/test_data_warehouse_tasks.py/str/BigQuery/test_build_metric_tasks__query0.sql rename to tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/BigQuery/test_build_metric_tasks__query0.sql diff --git a/tests/snapshots/test_data_warehouse_tasks.py/str/Databricks/test_build_metric_tasks__query0.sql b/tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/Databricks/test_build_metric_tasks__query0.sql similarity index 100% rename from tests/snapshots/test_data_warehouse_tasks.py/str/Databricks/test_build_metric_tasks__query0.sql rename to tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/Databricks/test_build_metric_tasks__query0.sql diff --git a/tests/snapshots/test_data_warehouse_tasks.py/str/DuckDB/test_build_metric_tasks__query0.sql b/tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/DuckDB/test_build_metric_tasks__query0.sql similarity index 100% rename from tests/snapshots/test_data_warehouse_tasks.py/str/DuckDB/test_build_metric_tasks__query0.sql rename to tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/DuckDB/test_build_metric_tasks__query0.sql diff --git a/tests/snapshots/test_data_warehouse_tasks.py/str/Postgres/test_build_metric_tasks__query0.sql b/tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/Postgres/test_build_metric_tasks__query0.sql similarity index 100% rename from tests/snapshots/test_data_warehouse_tasks.py/str/Postgres/test_build_metric_tasks__query0.sql rename to tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/Postgres/test_build_metric_tasks__query0.sql diff --git a/tests/snapshots/test_data_warehouse_tasks.py/str/Redshift/test_build_metric_tasks__query0.sql b/tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/Redshift/test_build_metric_tasks__query0.sql similarity index 100% rename from tests/snapshots/test_data_warehouse_tasks.py/str/Redshift/test_build_metric_tasks__query0.sql rename to tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/Redshift/test_build_metric_tasks__query0.sql diff --git a/tests/snapshots/test_data_warehouse_tasks.py/str/Snowflake/test_build_metric_tasks__query0.sql b/tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/Snowflake/test_build_metric_tasks__query0.sql similarity index 100% rename from tests/snapshots/test_data_warehouse_tasks.py/str/Snowflake/test_build_metric_tasks__query0.sql rename to tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/Snowflake/test_build_metric_tasks__query0.sql diff --git a/tests/snapshots/test_data_warehouse_tasks.py/str/Trino/test_build_metric_tasks__query0.sql b/tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/Trino/test_build_metric_tasks__query0.sql similarity index 100% rename from tests/snapshots/test_data_warehouse_tasks.py/str/Trino/test_build_metric_tasks__query0.sql rename to tests_metricflow/snapshots/test_data_warehouse_tasks.py/str/Trino/test_build_metric_tasks__query0.sql diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_common_semantic_model__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_common_semantic_model__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_common_semantic_model__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_common_semantic_model__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_with_metric_time__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_with_metric_time__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_with_metric_time__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_with_metric_time__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_without_metric_time__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_without_metric_time__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_without_metric_time__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_without_metric_time__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_window__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_window__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_window__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_window__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_to_grain__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_to_grain__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_to_grain__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_to_grain__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_window__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_window__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_window__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_window__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_with_granularity__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_with_granularity__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_with_granularity__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_with_granularity__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_offset_cumulative_metric__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_offset_cumulative_metric__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_offset_cumulative_metric__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_offset_cumulative_metric__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dimensions_with_time_constraint__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dimensions_with_time_constraint__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dimensions_with_time_constraint__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dimensions_with_time_constraint__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan_with_join__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan_with_join__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan_with_join__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan_with_join__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dont_join_to_time_spine_if_no_time_dimension_requested__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dont_join_to_time_spine_if_no_time_dimension_requested__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dont_join_to_time_spine_if_no_time_dimension_requested__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dont_join_to_time_spine_if_no_time_dimension_requested__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_derived_metric__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_derived_metric__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_derived_metric__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_derived_metric__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_filters__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_filters__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_filters__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_filters__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_metric_time__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_metric_time__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_metric_time__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_metric_time__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_non_metric_time__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_non_metric_time__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_non_metric_time__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_non_metric_time__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_joined_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_joined_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_joined_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_joined_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_limit_rows_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_limit_rows_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_limit_rows_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_limit_rows_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_with_reused_measure_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_with_reused_measure_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_with_reused_measure_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_with_reused_measure_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_metric_where_filter__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_metric_where_filter__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_metric_where_filter__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_metric_where_filter__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_query_where_filter__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_query_where_filter__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_query_where_filter__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_query_where_filter__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_only__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_only__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_only__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_only__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_quarter__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_quarter__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_quarter__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_quarter__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_with_other_dimensions__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_with_other_dimensions__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_with_other_dimensions__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_with_other_dimensions__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time_week__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time_week__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time_week__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time_week__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_categorical__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_categorical__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_categorical__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_categorical__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time_year__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time_year__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time_year__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time_year__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multi_semantic_model_ratio_metrics_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multi_semantic_model_ratio_metrics_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multi_semantic_model_ratio_metrics_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multi_semantic_model_ratio_metrics_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multihop_join_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multihop_join_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multihop_join_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multihop_join_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multiple_metrics_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multiple_metrics_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multiple_metrics_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multiple_metrics_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_nested_derived_metric_with_outer_offset__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_nested_derived_metric_with_outer_offset__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_nested_derived_metric_with_outer_offset__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_nested_derived_metric_with_outer_offset__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_to_grain_metric_filter_and_query_have_different_granularities__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_to_grain_metric_filter_and_query_have_different_granularities__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_to_grain_metric_filter_and_query_have_different_granularities__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_to_grain_metric_filter_and_query_have_different_granularities__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_window_metric_filter_and_query_have_different_granularities__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_window_metric_filter_and_query_have_different_granularities__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_window_metric_filter_and_query_have_different_granularities__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_window_metric_filter_and_query_have_different_granularities__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_order_by_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_order_by_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_order_by_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_order_by_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_primary_entity_dimension__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_primary_entity_dimension__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_primary_entity_dimension__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_primary_entity_dimension__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_simple_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_simple_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_simple_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_simple_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_single_semantic_model_ratio_metrics_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_single_semantic_model_ratio_metrics_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_single_semantic_model_ratio_metrics_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_single_semantic_model_ratio_metrics_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan_time_dimension__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan_time_dimension__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan_time_dimension__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan_time_dimension__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_with_common_linkable_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_with_common_linkable_plan__dfp_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_with_common_linkable_plan__dfp_0.xml rename to tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_with_common_linkable_plan__dfp_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_multihop_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_multihop_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_multihop_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_multihop_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_small_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_small_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_small_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/BigQuery/test_small_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_multihop_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_multihop_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_multihop_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_multihop_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_small_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_small_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_small_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Databricks/test_small_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_multihop_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_multihop_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_multihop_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_multihop_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_small_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_small_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_small_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_small_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_multihop_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_multihop_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_multihop_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_multihop_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_small_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_small_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_small_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Postgres/test_small_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_multihop_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_multihop_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_multihop_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_multihop_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_small_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_small_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_small_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Redshift/test_small_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_multihop_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_multihop_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_multihop_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_multihop_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_small_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_small_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_small_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Snowflake/test_small_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_multihop_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_multihop_joined_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_multihop_joined_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_multihop_joined_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_small_combined_metrics_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_small_combined_metrics_plan__ep_0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_small_combined_metrics_plan__ep_0.xml rename to tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/Trino/test_small_combined_metrics_plan__ep_0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_compute_metrics_node_simple_expr__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_compute_metrics_node_simple_expr__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_compute_metrics_node_simple_expr__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_compute_metrics_node_simple_expr__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_with_offset_to_grain__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_with_offset_to_grain__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_with_offset_to_grain__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_with_offset_to_grain__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_with_offset_window__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_with_offset_window__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_with_offset_window__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_with_offset_window__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_without_offset__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_without_offset__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_without_offset__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/DataflowPlan/test_join_to_time_spine_node_without_offset__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_combine_output_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_combine_output_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_combine_output_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_combine_output_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_combine_output_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_combine_output_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_combine_output_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_combine_output_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_simple_expr__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_simple_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_simple_expr__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_simple_expr__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_simple_expr__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_simple_expr__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_simple_expr__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_compute_metrics_node_simple_expr__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_constrain_time_range_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_constrain_time_range_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_constrain_time_range_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_constrain_time_range_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_constrain_time_range_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_constrain_time_range_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_constrain_time_range_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_constrain_time_range_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimension_with_joined_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimension_with_joined_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimension_with_joined_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimension_with_joined_where_constraint__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimension_with_joined_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimension_with_joined_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimension_with_joined_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimension_with_joined_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_without_offset__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_without_offset__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_without_offset__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_without_offset__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_without_offset__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_without_offset__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_without_offset__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_node_without_offset__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_measure_aggregation_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_measure_aggregation_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_measure_aggregation_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_measure_aggregation_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_measure_aggregation_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_measure_aggregation_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_measure_aggregation_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_measure_aggregation_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_multi_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_multi_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_multi_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_multi_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_multi_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_multi_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_order_by_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_order_by_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_order_by_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_order_by_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_order_by_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_order_by_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_order_by_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_order_by_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_grouping__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_grouping__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_grouping__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_grouping__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_grouping__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_grouping__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_grouping__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_grouping__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_queried_group_by__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_queried_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_queried_group_by__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_queried_group_by__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_single_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_single_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_single_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_single_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_single_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_single_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_single_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_single_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_source_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_source_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_source_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_source_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_source_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_source_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_source_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/BigQuery/test_source_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_combine_output_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_combine_output_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_combine_output_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_combine_output_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_combine_output_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_combine_output_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_combine_output_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_combine_output_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_simple_expr__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_simple_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_simple_expr__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_simple_expr__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_simple_expr__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_simple_expr__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_simple_expr__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_compute_metrics_node_simple_expr__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_constrain_time_range_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_constrain_time_range_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_constrain_time_range_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_constrain_time_range_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_constrain_time_range_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_constrain_time_range_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_constrain_time_range_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_constrain_time_range_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimension_with_joined_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimension_with_joined_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimension_with_joined_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimension_with_joined_where_constraint__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimension_with_joined_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimension_with_joined_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimension_with_joined_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimension_with_joined_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_without_offset__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_without_offset__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_without_offset__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_without_offset__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_without_offset__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_without_offset__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_without_offset__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_join_to_time_spine_node_without_offset__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_measure_aggregation_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_measure_aggregation_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_measure_aggregation_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_measure_aggregation_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_measure_aggregation_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_measure_aggregation_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_measure_aggregation_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_measure_aggregation_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_multi_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_multi_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_multi_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_multi_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_multi_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_multi_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_order_by_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_order_by_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_order_by_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_order_by_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_order_by_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_order_by_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_order_by_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_order_by_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_grouping__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_grouping__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_grouping__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_grouping__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_grouping__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_grouping__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_grouping__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_grouping__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_queried_group_by__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_queried_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_queried_group_by__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_queried_group_by__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_single_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_single_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_single_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_single_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_single_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_single_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_single_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_single_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_source_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_source_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_source_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_source_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_source_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_source_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_source_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Databricks/test_source_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_combine_output_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_combine_output_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_combine_output_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_combine_output_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_combine_output_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_combine_output_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_combine_output_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_combine_output_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_simple_expr__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_simple_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_simple_expr__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_simple_expr__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_simple_expr__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_simple_expr__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_simple_expr__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_compute_metrics_node_simple_expr__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_constrain_time_range_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_constrain_time_range_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_constrain_time_range_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_constrain_time_range_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_constrain_time_range_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_constrain_time_range_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_constrain_time_range_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_constrain_time_range_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimension_with_joined_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimension_with_joined_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimension_with_joined_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimension_with_joined_where_constraint__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimension_with_joined_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimension_with_joined_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimension_with_joined_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimension_with_joined_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_without_offset__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_without_offset__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_without_offset__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_without_offset__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_without_offset__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_without_offset__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_without_offset__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_node_without_offset__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_measure_aggregation_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_measure_aggregation_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_measure_aggregation_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_measure_aggregation_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_measure_aggregation_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_measure_aggregation_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_measure_aggregation_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_measure_aggregation_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_multi_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_multi_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_multi_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_multi_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_multi_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_multi_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_order_by_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_order_by_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_order_by_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_order_by_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_order_by_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_order_by_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_order_by_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_order_by_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_grouping__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_grouping__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_grouping__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_grouping__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_grouping__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_grouping__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_grouping__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_grouping__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_queried_group_by__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_queried_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_queried_group_by__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_queried_group_by__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_single_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_single_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_single_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_single_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_single_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_single_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_single_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_single_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_source_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_source_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_source_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_source_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_source_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_source_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_source_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/DuckDB/test_source_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_combine_output_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_combine_output_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_combine_output_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_combine_output_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_combine_output_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_combine_output_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_combine_output_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_combine_output_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_simple_expr__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_simple_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_simple_expr__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_simple_expr__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_simple_expr__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_simple_expr__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_simple_expr__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_compute_metrics_node_simple_expr__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_constrain_time_range_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_constrain_time_range_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_constrain_time_range_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_constrain_time_range_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_constrain_time_range_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_constrain_time_range_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_constrain_time_range_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_constrain_time_range_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimension_with_joined_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimension_with_joined_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimension_with_joined_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimension_with_joined_where_constraint__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimension_with_joined_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimension_with_joined_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimension_with_joined_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimension_with_joined_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_without_offset__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_without_offset__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_without_offset__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_without_offset__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_without_offset__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_without_offset__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_without_offset__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_join_to_time_spine_node_without_offset__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_measure_aggregation_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_measure_aggregation_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_measure_aggregation_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_measure_aggregation_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_measure_aggregation_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_measure_aggregation_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_measure_aggregation_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_measure_aggregation_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_multi_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_multi_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_multi_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_multi_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_multi_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_multi_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_order_by_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_order_by_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_order_by_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_order_by_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_order_by_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_order_by_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_order_by_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_order_by_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_grouping__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_grouping__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_grouping__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_grouping__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_grouping__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_grouping__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_grouping__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_grouping__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_queried_group_by__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_queried_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_queried_group_by__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_queried_group_by__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_single_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_single_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_single_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_single_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_single_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_single_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_single_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_single_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_source_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_source_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_source_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_source_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_source_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_source_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_source_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Postgres/test_source_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_combine_output_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_combine_output_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_combine_output_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_combine_output_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_combine_output_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_combine_output_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_combine_output_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_combine_output_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_simple_expr__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_simple_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_simple_expr__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_simple_expr__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_simple_expr__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_simple_expr__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_simple_expr__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_compute_metrics_node_simple_expr__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_constrain_time_range_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_constrain_time_range_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_constrain_time_range_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_constrain_time_range_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_constrain_time_range_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_constrain_time_range_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_constrain_time_range_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_constrain_time_range_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimension_with_joined_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimension_with_joined_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimension_with_joined_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimension_with_joined_where_constraint__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimension_with_joined_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimension_with_joined_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimension_with_joined_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimension_with_joined_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_without_offset__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_without_offset__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_without_offset__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_without_offset__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_without_offset__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_without_offset__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_without_offset__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_join_to_time_spine_node_without_offset__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_measure_aggregation_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_measure_aggregation_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_measure_aggregation_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_measure_aggregation_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_measure_aggregation_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_measure_aggregation_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_measure_aggregation_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_measure_aggregation_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_multi_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_multi_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_multi_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_multi_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_multi_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_multi_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_order_by_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_order_by_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_order_by_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_order_by_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_order_by_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_order_by_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_order_by_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_order_by_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_grouping__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_grouping__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_grouping__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_grouping__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_grouping__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_grouping__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_grouping__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_grouping__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_queried_group_by__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_queried_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_queried_group_by__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_queried_group_by__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_single_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_single_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_single_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_single_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_single_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_single_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_single_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_single_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_source_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_source_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_source_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_source_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_source_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_source_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_source_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Redshift/test_source_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_combine_output_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_combine_output_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_combine_output_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_combine_output_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_combine_output_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_combine_output_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_combine_output_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_combine_output_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_simple_expr__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_simple_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_simple_expr__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_simple_expr__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_simple_expr__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_simple_expr__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_simple_expr__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_compute_metrics_node_simple_expr__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_constrain_time_range_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_constrain_time_range_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_constrain_time_range_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_constrain_time_range_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_constrain_time_range_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_constrain_time_range_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_constrain_time_range_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_constrain_time_range_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimension_with_joined_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimension_with_joined_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimension_with_joined_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimension_with_joined_where_constraint__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimension_with_joined_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimension_with_joined_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimension_with_joined_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimension_with_joined_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_without_offset__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_without_offset__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_without_offset__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_without_offset__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_without_offset__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_without_offset__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_without_offset__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_node_without_offset__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_measure_aggregation_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_measure_aggregation_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_measure_aggregation_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_measure_aggregation_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_measure_aggregation_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_measure_aggregation_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_measure_aggregation_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_measure_aggregation_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_multi_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_multi_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_multi_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_multi_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_multi_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_multi_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_order_by_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_order_by_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_order_by_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_order_by_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_order_by_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_order_by_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_order_by_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_order_by_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_grouping__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_grouping__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_grouping__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_grouping__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_grouping__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_grouping__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_grouping__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_grouping__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_queried_group_by__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_queried_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_queried_group_by__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_queried_group_by__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_single_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_single_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_single_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_single_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_single_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_single_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_single_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_single_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_source_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_source_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_source_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_source_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_source_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_source_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_source_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Snowflake/test_source_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_combine_output_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_combine_output_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_combine_output_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_combine_output_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_combine_output_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_combine_output_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_combine_output_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_combine_output_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_ratio_from_single_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_simple_expr__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_simple_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_simple_expr__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_simple_expr__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_simple_expr__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_simple_expr__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_simple_expr__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_compute_metrics_node_simple_expr__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_constrain_time_range_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_constrain_time_range_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_constrain_time_range_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_constrain_time_range_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_constrain_time_range_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_constrain_time_range_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_constrain_time_range_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_constrain_time_range_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimension_with_joined_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimension_with_joined_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimension_with_joined_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimension_with_joined_where_constraint__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimension_with_joined_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimension_with_joined_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimension_with_joined_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimension_with_joined_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_without_offset__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_without_offset__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_without_offset__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_without_offset__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_without_offset__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_without_offset__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_without_offset__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_join_to_time_spine_node_without_offset__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_measure_aggregation_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_measure_aggregation_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_measure_aggregation_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_measure_aggregation_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_measure_aggregation_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_measure_aggregation_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_measure_aggregation_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_measure_aggregation_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_multi_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_multi_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_multi_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_multi_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_multi_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_multi_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_order_by_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_order_by_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_order_by_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_order_by_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_order_by_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_order_by_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_order_by_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_order_by_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_grouping__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_grouping__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_grouping__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_grouping__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_grouping__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_grouping__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_grouping__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_grouping__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_queried_group_by__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_queried_group_by__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_queried_group_by__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_queried_group_by__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_semi_additive_join_node_with_queried_group_by__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_single_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_single_join_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_single_join_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_single_join_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_single_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_single_join_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_single_join_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_single_join_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_source_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_source_node__plan0.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_source_node__plan0.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_source_node__plan0.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_source_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_source_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_source_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/Trino/test_source_node__plan0_optimized.sql diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_combine_output_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_combine_output_node__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_combine_output_node__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_combine_output_node__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_single_semantic_model__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_simple_expr__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_simple_expr__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_simple_expr__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_simple_expr__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_constrain_time_range_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_constrain_time_range_node__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_constrain_time_range_node__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_constrain_time_range_node__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimension_with_joined_where_constraint__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimension_with_joined_where_constraint__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimension_with_joined_where_constraint__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimension_with_joined_where_constraint__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_filter_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_filter_node__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_filter_node__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_filter_node__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_filter_with_where_constraint_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_filter_with_where_constraint_node__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_filter_with_where_constraint_node__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_filter_with_where_constraint_node__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_with_offset_to_grain__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_with_offset_to_grain__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_with_offset_to_grain__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_with_offset_to_grain__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_with_offset_window__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_with_offset_window__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_with_offset_window__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_with_offset_window__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_without_offset__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_without_offset__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_without_offset__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_join_to_time_spine_node_without_offset__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_measure_aggregation_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_measure_aggregation_node__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_measure_aggregation_node__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_measure_aggregation_node__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_multi_join_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_multi_join_node__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_multi_join_node__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_multi_join_node__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_order_by_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_order_by_node__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_order_by_node__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_order_by_node__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node_with_grouping__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node_with_grouping__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node_with_grouping__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node_with_grouping__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node_with_queried_group_by__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node_with_queried_group_by__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node_with_queried_group_by__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_semi_additive_join_node_with_queried_group_by__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_single_join_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_single_join_node__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_single_join_node__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_single_join_node__plan0.xml diff --git a/tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_source_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_source_node__plan0.xml similarity index 100% rename from tests/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_source_node__plan0.xml rename to tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_source_node__plan0.xml diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_multi_metric_fill_null__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_multi_metric_fill_null__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_multi_metric_fill_null__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_multi_metric_fill_null__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_multi_metric_fill_null__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_multi_metric_fill_null__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_multi_metric_fill_null__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_multi_metric_fill_null__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_filters__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_filters__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_where_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_nested_offsets_with_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/BigQuery/test_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_multi_metric_fill_null__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_multi_metric_fill_null__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_multi_metric_fill_null__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_multi_metric_fill_null__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_multi_metric_fill_null__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_multi_metric_fill_null__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_multi_metric_fill_null__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_multi_metric_fill_null__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_filters__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_filters__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_where_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_nested_offsets_with_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Databricks/test_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_multi_metric_fill_null__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_multi_metric_fill_null__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_multi_metric_fill_null__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_multi_metric_fill_null__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_multi_metric_fill_null__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_multi_metric_fill_null__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_multi_metric_fill_null__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_multi_metric_fill_null__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_filters__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_filters__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_multi_metric_fill_null__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_multi_metric_fill_null__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_multi_metric_fill_null__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_multi_metric_fill_null__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_multi_metric_fill_null__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_multi_metric_fill_null__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_multi_metric_fill_null__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_multi_metric_fill_null__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_filters__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_filters__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_where_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_nested_offsets_with_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Postgres/test_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_multi_metric_fill_null__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_multi_metric_fill_null__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_multi_metric_fill_null__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_multi_metric_fill_null__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_multi_metric_fill_null__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_multi_metric_fill_null__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_multi_metric_fill_null__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_multi_metric_fill_null__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_filters__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_filters__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_where_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_nested_offsets_with_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Redshift/test_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_multi_metric_fill_null__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_multi_metric_fill_null__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_multi_metric_fill_null__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_multi_metric_fill_null__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_multi_metric_fill_null__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_multi_metric_fill_null__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_multi_metric_fill_null__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_multi_metric_fill_null__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_filters__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_filters__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_where_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_nested_offsets_with_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Snowflake/test_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_cumulative_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_month_dimension_and_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_month_dimension_and_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_cumulative_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_cumulative_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_cumulative_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_cumulative_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_cumulative_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_cumulative_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_cumulative_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_cumulative_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_derived_offset_metric_with_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_multi_metric_fill_null__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_multi_metric_fill_null__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_multi_metric_fill_null__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_multi_metric_fill_null__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_multi_metric_fill_null__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_multi_metric_fill_null__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_multi_metric_fill_null__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_multi_metric_fill_null__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine_multi_metric__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_fill_nulls_without_time_spine_multi_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_filters__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_filters__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_where_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_where_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_where_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_where_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_where_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_nested_offsets_with_where_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_multiple_granularities__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_multiple_granularities__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_multiple_granularities__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_multiple_granularities__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_multiple_granularities__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_metric_multiple_granularities__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_agg_time_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_agg_time_dim__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_agg_time_dim__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_agg_time_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_agg_time_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_agg_time_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_time_offset_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_time_offset_metric_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_time_offset_metric_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_time_offset_metric_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_time_offset_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_time_offset_metric_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_time_offset_metric_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/Trino/test_time_offset_metric_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimension_values_with_a_join_and_a_filter__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimension_values_with_a_join_and_a_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimension_values_with_a_join_and_a_filter__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimension_values_with_a_join_and_a_filter__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/BigQuery/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimension_values_with_a_join_and_a_filter__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimension_values_with_a_join_and_a_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimension_values_with_a_join_and_a_filter__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimension_values_with_a_join_and_a_filter__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Databricks/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimension_values_with_a_join_and_a_filter__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimension_values_with_a_join_and_a_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimension_values_with_a_join_and_a_filter__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimension_values_with_a_join_and_a_filter__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/DuckDB/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimension_values_with_a_join_and_a_filter__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimension_values_with_a_join_and_a_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimension_values_with_a_join_and_a_filter__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimension_values_with_a_join_and_a_filter__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Postgres/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimension_values_with_a_join_and_a_filter__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimension_values_with_a_join_and_a_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimension_values_with_a_join_and_a_filter__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimension_values_with_a_join_and_a_filter__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Redshift/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimension_values_with_a_join_and_a_filter__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimension_values_with_a_join_and_a_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimension_values_with_a_join_and_a_filter__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimension_values_with_a_join_and_a_filter__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Snowflake/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimension_values_with_a_join_and_a_filter__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimension_values_with_a_join_and_a_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimension_values_with_a_join_and_a_filter__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimension_values_with_a_join_and_a_filter__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimension_values_with_a_join_and_a_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/Trino/test_dimensions_requiring_join__plan0_optimized.sql diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimension_values_with_a_join_and_a_filter__plan0.xml b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimension_values_with_a_join_and_a_filter__plan0.xml similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimension_values_with_a_join_and_a_filter__plan0.xml rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimension_values_with_a_join_and_a_filter__plan0.xml diff --git a/tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml similarity index 100% rename from tests/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml rename to tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_approximate_continuous_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_approximate_continuous_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_approximate_continuous_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_approximate_continuous_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_cast_to_timestamp__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_cast_to_timestamp__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_cast_to_timestamp__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_cast_to_timestamp__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_generate_uuid__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_generate_uuid__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_generate_uuid__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/BigQuery/test_generate_uuid__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_approximate_discrete_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_approximate_discrete_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_approximate_discrete_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_approximate_discrete_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_cast_to_timestamp__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_cast_to_timestamp__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_cast_to_timestamp__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_cast_to_timestamp__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_continuous_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_continuous_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_continuous_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_continuous_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_generate_uuid__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_generate_uuid__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_generate_uuid__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Databricks/test_generate_uuid__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_approximate_continuous_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_approximate_continuous_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_approximate_continuous_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_approximate_continuous_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_cast_to_timestamp__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_cast_to_timestamp__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_cast_to_timestamp__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_cast_to_timestamp__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_continuous_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_continuous_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_continuous_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_continuous_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_discrete_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_discrete_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_discrete_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_discrete_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_generate_uuid__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_generate_uuid__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_generate_uuid__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/DuckDB/test_generate_uuid__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_cast_to_timestamp__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_cast_to_timestamp__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_cast_to_timestamp__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_cast_to_timestamp__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_continuous_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_continuous_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_continuous_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_continuous_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_discrete_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_discrete_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_discrete_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_discrete_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_generate_uuid__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_generate_uuid__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_generate_uuid__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Postgres/test_generate_uuid__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_approximate_discrete_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_approximate_discrete_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_approximate_discrete_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_approximate_discrete_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_cast_to_timestamp__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_cast_to_timestamp__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_cast_to_timestamp__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_cast_to_timestamp__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_continuous_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_continuous_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_continuous_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_continuous_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_generate_uuid__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_generate_uuid__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_generate_uuid__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Redshift/test_generate_uuid__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_approximate_continuous_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_approximate_continuous_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_approximate_continuous_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_approximate_continuous_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_cast_to_timestamp__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_cast_to_timestamp__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_cast_to_timestamp__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_cast_to_timestamp__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_continuous_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_continuous_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_continuous_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_continuous_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_discrete_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_discrete_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_discrete_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_discrete_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_generate_uuid__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_generate_uuid__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_generate_uuid__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Snowflake/test_generate_uuid__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_approximate_continuous_percentile_expr__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_approximate_continuous_percentile_expr__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_approximate_continuous_percentile_expr__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_approximate_continuous_percentile_expr__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_cast_to_timestamp__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_cast_to_timestamp__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_cast_to_timestamp__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_cast_to_timestamp__plan0.sql diff --git a/tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_generate_uuid__plan0.sql b/tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_generate_uuid__plan0.sql similarity index 100% rename from tests/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_generate_uuid__plan0.sql rename to tests_metricflow/snapshots/test_engine_specific_rendering.py/SqlQueryPlan/Trino/test_generate_uuid__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_fill_nulls_with_0_multi_metric_query__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_fill_nulls_with_0_multi_metric_query__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_fill_nulls_with_0_multi_metric_query__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_fill_nulls_with_0_multi_metric_query__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_fill_nulls_with_0_metric_time__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_fill_nulls_with_0_metric_time__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_fill_nulls_with_0_metric_time__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_fill_nulls_with_0_metric_time__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_fill_nulls_with_0_month__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_fill_nulls_with_0_month__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_fill_nulls_with_0_month__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_fill_nulls_with_0_month__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_join_to_time_spine__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_join_to_time_spine__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_join_to_time_spine__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/BigQuery/test_simple_join_to_time_spine__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_fill_nulls_with_0_multi_metric_query__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_fill_nulls_with_0_multi_metric_query__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_fill_nulls_with_0_multi_metric_query__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_fill_nulls_with_0_multi_metric_query__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_fill_nulls_with_0_metric_time__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_fill_nulls_with_0_metric_time__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_fill_nulls_with_0_metric_time__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_fill_nulls_with_0_metric_time__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_fill_nulls_with_0_month__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_fill_nulls_with_0_month__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_fill_nulls_with_0_month__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_fill_nulls_with_0_month__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_join_to_time_spine__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_join_to_time_spine__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_join_to_time_spine__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Databricks/test_simple_join_to_time_spine__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_fill_nulls_with_0_multi_metric_query__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_fill_nulls_with_0_multi_metric_query__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_fill_nulls_with_0_multi_metric_query__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_fill_nulls_with_0_multi_metric_query__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_fill_nulls_with_0_metric_time__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_fill_nulls_with_0_metric_time__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_fill_nulls_with_0_metric_time__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_fill_nulls_with_0_metric_time__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_fill_nulls_with_0_month__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_fill_nulls_with_0_month__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_fill_nulls_with_0_month__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_fill_nulls_with_0_month__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_join_to_time_spine__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_join_to_time_spine__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_join_to_time_spine__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/DuckDB/test_simple_join_to_time_spine__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_fill_nulls_with_0_multi_metric_query__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_fill_nulls_with_0_multi_metric_query__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_fill_nulls_with_0_multi_metric_query__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_fill_nulls_with_0_multi_metric_query__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_fill_nulls_with_0_metric_time__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_fill_nulls_with_0_metric_time__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_fill_nulls_with_0_metric_time__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_fill_nulls_with_0_metric_time__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_fill_nulls_with_0_month__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_fill_nulls_with_0_month__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_fill_nulls_with_0_month__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_fill_nulls_with_0_month__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_join_to_time_spine__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_join_to_time_spine__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_join_to_time_spine__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Postgres/test_simple_join_to_time_spine__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_fill_nulls_with_0_multi_metric_query__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_fill_nulls_with_0_multi_metric_query__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_fill_nulls_with_0_multi_metric_query__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_fill_nulls_with_0_multi_metric_query__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_fill_nulls_with_0_metric_time__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_fill_nulls_with_0_metric_time__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_fill_nulls_with_0_metric_time__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_fill_nulls_with_0_metric_time__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_fill_nulls_with_0_month__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_fill_nulls_with_0_month__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_fill_nulls_with_0_month__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_fill_nulls_with_0_month__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_join_to_time_spine__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_join_to_time_spine__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_join_to_time_spine__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Redshift/test_simple_join_to_time_spine__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_fill_nulls_with_0_multi_metric_query__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_fill_nulls_with_0_multi_metric_query__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_fill_nulls_with_0_multi_metric_query__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_fill_nulls_with_0_multi_metric_query__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_fill_nulls_with_0_metric_time__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_fill_nulls_with_0_metric_time__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_fill_nulls_with_0_metric_time__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_fill_nulls_with_0_metric_time__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_fill_nulls_with_0_month__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_fill_nulls_with_0_month__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_fill_nulls_with_0_month__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_fill_nulls_with_0_month__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_join_to_time_spine__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_join_to_time_spine__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_join_to_time_spine__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Snowflake/test_simple_join_to_time_spine__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Trino/test_fill_nulls_with_0_multi_metric_query__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Trino/test_fill_nulls_with_0_multi_metric_query__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Trino/test_fill_nulls_with_0_multi_metric_query__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Trino/test_fill_nulls_with_0_multi_metric_query__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Trino/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Trino/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Trino/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Trino/test_fill_nulls_with_0_multi_metric_query_with_categorical_dimension__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_fill_nulls_with_0_metric_time__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_fill_nulls_with_0_metric_time__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_fill_nulls_with_0_metric_time__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_fill_nulls_with_0_metric_time__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_fill_nulls_with_0_month__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_fill_nulls_with_0_month__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_fill_nulls_with_0_month__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_fill_nulls_with_0_month__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_join_to_time_spine__query_output.txt b/tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_join_to_time_spine__query_output.txt similarity index 100% rename from tests/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_join_to_time_spine__query_output.txt rename to tests_metricflow/snapshots/test_fill_nulls_with_0.py/str/Trino/test_simple_join_to_time_spine__query_output.txt diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_fill_nulls__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_fill_nulls__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_fill_nulls__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_fill_nulls__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_fill_nulls__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_fill_nulls__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_fill_nulls__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_cumulative_fill_nulls__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_with_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_with_filters__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_with_filters__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_with_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_with_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_join_to_time_spine_with_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_month__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_month__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_month__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_month__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_month__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/BigQuery/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_cumulative_fill_nulls__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_cumulative_fill_nulls__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_cumulative_fill_nulls__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_cumulative_fill_nulls__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_cumulative_fill_nulls__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_cumulative_fill_nulls__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_cumulative_fill_nulls__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_cumulative_fill_nulls__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_join_to_time_spine_with_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_join_to_time_spine_with_filters__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_join_to_time_spine_with_filters__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_join_to_time_spine_with_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_join_to_time_spine_with_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_join_to_time_spine_with_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_month__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_month__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_month__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_month__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_month__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Databricks/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_fill_nulls__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_fill_nulls__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_fill_nulls__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_fill_nulls__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_fill_nulls__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_fill_nulls__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_fill_nulls__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_cumulative_fill_nulls__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_with_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_with_filters__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_with_filters__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_with_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_with_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_join_to_time_spine_with_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_month__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_month__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_month__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_month__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_month__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/DuckDB/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_cumulative_fill_nulls__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_cumulative_fill_nulls__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_cumulative_fill_nulls__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_cumulative_fill_nulls__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_cumulative_fill_nulls__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_cumulative_fill_nulls__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_cumulative_fill_nulls__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_cumulative_fill_nulls__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_join_to_time_spine_with_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_join_to_time_spine_with_filters__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_join_to_time_spine_with_filters__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_join_to_time_spine_with_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_join_to_time_spine_with_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_join_to_time_spine_with_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_month__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_month__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_month__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_month__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_month__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Postgres/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_cumulative_fill_nulls__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_cumulative_fill_nulls__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_cumulative_fill_nulls__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_cumulative_fill_nulls__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_cumulative_fill_nulls__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_cumulative_fill_nulls__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_cumulative_fill_nulls__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_cumulative_fill_nulls__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_join_to_time_spine_with_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_join_to_time_spine_with_filters__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_join_to_time_spine_with_filters__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_join_to_time_spine_with_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_join_to_time_spine_with_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_join_to_time_spine_with_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_month__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_month__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_month__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_month__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_month__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Redshift/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_fill_nulls__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_fill_nulls__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_fill_nulls__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_fill_nulls__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_fill_nulls__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_fill_nulls__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_fill_nulls__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_cumulative_fill_nulls__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_with_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_with_filters__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_with_filters__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_with_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_with_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_join_to_time_spine_with_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_month__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_month__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_month__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_month__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_month__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Snowflake/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_cumulative_fill_nulls__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_cumulative_fill_nulls__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_cumulative_fill_nulls__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_cumulative_fill_nulls__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_cumulative_fill_nulls__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_cumulative_fill_nulls__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_cumulative_fill_nulls__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_cumulative_fill_nulls__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_join_to_time_spine_with_filters__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_join_to_time_spine_with_filters__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_join_to_time_spine_with_filters__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_join_to_time_spine_with_filters__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_join_to_time_spine_with_filters__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_join_to_time_spine_with_filters__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_month__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_month__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_month__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_month__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_month__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_month__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_month__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_month__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_categorical_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_non_metric_time__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_with_0_with_non_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_without_time_spine__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_without_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_without_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_without_time_spine__plan0.sql diff --git a/tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlQueryPlan/Trino/test_simple_fill_nulls_without_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_offset_window_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_multiple_date_parts__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_multiple_date_parts__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_multiple_date_parts__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_multiple_date_parts__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_multiple_date_parts__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_multiple_date_parts__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_multiple_date_parts__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_simple_query_with_multiple_date_parts__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_offset_window_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_multiple_date_parts__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_multiple_date_parts__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_multiple_date_parts__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_multiple_date_parts__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_multiple_date_parts__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_multiple_date_parts__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_multiple_date_parts__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_simple_query_with_multiple_date_parts__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_multiple_date_parts__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_multiple_date_parts__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_multiple_date_parts__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_multiple_date_parts__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_multiple_date_parts__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_multiple_date_parts__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_multiple_date_parts__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_simple_query_with_multiple_date_parts__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_offset_window_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_multiple_date_parts__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_multiple_date_parts__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_multiple_date_parts__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_multiple_date_parts__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_multiple_date_parts__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_multiple_date_parts__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_multiple_date_parts__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_simple_query_with_multiple_date_parts__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_offset_window_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_multiple_date_parts__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_multiple_date_parts__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_multiple_date_parts__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_multiple_date_parts__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_multiple_date_parts__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_multiple_date_parts__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_multiple_date_parts__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_simple_query_with_multiple_date_parts__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_offset_window_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_multiple_date_parts__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_multiple_date_parts__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_multiple_date_parts__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_multiple_date_parts__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_multiple_date_parts__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_multiple_date_parts__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_multiple_date_parts__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_simple_query_with_multiple_date_parts__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_offset_window_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_date_part__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_date_part__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_date_part__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_date_part__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_date_part__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_date_part__plan0_optimized.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_multiple_date_parts__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_multiple_date_parts__plan0.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_multiple_date_parts__plan0.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_multiple_date_parts__plan0.sql diff --git a/tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_multiple_date_parts__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_multiple_date_parts__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_multiple_date_parts__plan0_optimized.sql rename to tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_simple_query_with_multiple_date_parts__plan0_optimized.sql diff --git a/tests/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt b/tests_metricflow/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt similarity index 100% rename from tests/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt rename to tests_metricflow/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt diff --git a/tests/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt b/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt similarity index 100% rename from tests/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt rename to tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt diff --git a/tests/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt b/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt similarity index 100% rename from tests/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt rename to tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt diff --git a/tests/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt b/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt similarity index 100% rename from tests/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt rename to tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt diff --git a/tests/snapshots/test_linkable_spec_resolver.py/str/test_cyclic_join_manifest__result0.txt b/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_cyclic_join_manifest__result0.txt similarity index 100% rename from tests/snapshots/test_linkable_spec_resolver.py/str/test_cyclic_join_manifest__result0.txt rename to tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_cyclic_join_manifest__result0.txt diff --git a/tests/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_cumulative_metric__result0.txt b/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_cumulative_metric__result0.txt similarity index 100% rename from tests/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_cumulative_metric__result0.txt rename to tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_cumulative_metric__result0.txt diff --git a/tests/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_derived_metrics__result0.txt b/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_derived_metrics__result0.txt similarity index 100% rename from tests/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_derived_metrics__result0.txt rename to tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_derived_metrics__result0.txt diff --git a/tests/snapshots/test_linkable_spec_resolver.py/str/test_one_property__result0.txt b/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_one_property__result0.txt similarity index 100% rename from tests/snapshots/test_linkable_spec_resolver.py/str/test_one_property__result0.txt rename to tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_one_property__result0.txt diff --git a/tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__accumulate_last_2_months_metric__result.txt b/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__accumulate_last_2_months_metric__result.txt similarity index 100% rename from tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__accumulate_last_2_months_metric__result.txt rename to tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__accumulate_last_2_months_metric__result.txt diff --git a/tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_different_parent_time_grains__result.txt b/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_different_parent_time_grains__result.txt similarity index 100% rename from tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_different_parent_time_grains__result.txt rename to tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_different_parent_time_grains__result.txt diff --git a/tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_same_parent_time_grains__result.txt b/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_same_parent_time_grains__result.txt similarity index 100% rename from tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_same_parent_time_grains__result.txt rename to tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_same_parent_time_grains__result.txt diff --git a/tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_different_time_grains__result.txt b/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_different_time_grains__result.txt similarity index 100% rename from tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_different_time_grains__result.txt rename to tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_different_time_grains__result.txt diff --git a/tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_same_time_grains__result.txt b/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_same_time_grains__result.txt similarity index 100% rename from tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_same_time_grains__result.txt rename to tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_same_time_grains__result.txt diff --git a/tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt b/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt similarity index 100% rename from tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt rename to tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt diff --git a/tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__simple_metric__result.txt b/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__simple_metric__result.txt similarity index 100% rename from tests/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__simple_metric__result.txt rename to tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__simple_metric__result.txt diff --git a/tests/snapshots/test_matching_item_for_querying.py/AvailableGroupByItemsResolution/test_missing_parent_for_metric__result.txt b/tests_metricflow/snapshots/test_matching_item_for_querying.py/AvailableGroupByItemsResolution/test_missing_parent_for_metric__result.txt similarity index 100% rename from tests/snapshots/test_matching_item_for_querying.py/AvailableGroupByItemsResolution/test_missing_parent_for_metric__result.txt rename to tests_metricflow/snapshots/test_matching_item_for_querying.py/AvailableGroupByItemsResolution/test_missing_parent_for_metric__result.txt diff --git a/tests/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_invalid_group_by_item__result.txt b/tests_metricflow/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_invalid_group_by_item__result.txt similarity index 100% rename from tests/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_invalid_group_by_item__result.txt rename to tests_metricflow/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_invalid_group_by_item__result.txt diff --git a/tests/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_unavailable_group_by_item_in_derived_metric_parent__result.txt b/tests_metricflow/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_unavailable_group_by_item_in_derived_metric_parent__result.txt similarity index 100% rename from tests/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_unavailable_group_by_item_in_derived_metric_parent__result.txt rename to tests_metricflow/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_unavailable_group_by_item_in_derived_metric_parent__result.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/BigQuery/test_metric_with_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/BigQuery/test_metric_with_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/BigQuery/test_metric_with_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/BigQuery/test_metric_with_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/BigQuery/test_query_with_simple_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/BigQuery/test_query_with_simple_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/BigQuery/test_query_with_simple_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/BigQuery/test_query_with_simple_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/Databricks/test_metric_with_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/Databricks/test_metric_with_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/Databricks/test_metric_with_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/Databricks/test_metric_with_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/Databricks/test_query_with_simple_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/Databricks/test_query_with_simple_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/Databricks/test_query_with_simple_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/Databricks/test_query_with_simple_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/DuckDB/test_metric_with_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/DuckDB/test_metric_with_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/DuckDB/test_metric_with_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/DuckDB/test_metric_with_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/DuckDB/test_query_with_simple_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/DuckDB/test_query_with_simple_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/DuckDB/test_query_with_simple_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/DuckDB/test_query_with_simple_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/Postgres/test_metric_with_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/Postgres/test_metric_with_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/Postgres/test_metric_with_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/Postgres/test_metric_with_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/Postgres/test_query_with_simple_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/Postgres/test_query_with_simple_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/Postgres/test_query_with_simple_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/Postgres/test_query_with_simple_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/Redshift/test_metric_with_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/Redshift/test_metric_with_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/Redshift/test_metric_with_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/Redshift/test_metric_with_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/Redshift/test_query_with_simple_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/Redshift/test_query_with_simple_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/Redshift/test_query_with_simple_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/Redshift/test_query_with_simple_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/Snowflake/test_metric_with_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/Snowflake/test_metric_with_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/Snowflake/test_metric_with_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/Snowflake/test_metric_with_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/Snowflake/test_query_with_simple_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/Snowflake/test_query_with_simple_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/Snowflake/test_query_with_simple_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/Snowflake/test_query_with_simple_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/Trino/test_metric_with_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/Trino/test_metric_with_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/Trino/test_metric_with_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/Trino/test_metric_with_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_output.py/str/Trino/test_query_with_simple_metric_in_where_filter__query_output.txt b/tests_metricflow/snapshots/test_metric_filter_output.py/str/Trino/test_query_with_simple_metric_in_where_filter__query_output.txt similarity index 100% rename from tests/snapshots/test_metric_filter_output.py/str/Trino/test_query_with_simple_metric_in_where_filter__query_output.txt rename to tests_metricflow/snapshots/test_metric_filter_output.py/str/Trino/test_query_with_simple_metric_in_where_filter__query_output.txt diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_metric_with_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_metric_with_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_metric_with_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_metric_with_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_metric_with_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_metric_with_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_metric_with_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_metric_with_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_simple_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_simple_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_simple_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_simple_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Databricks/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_distinct_values_query_with_metric_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_distinct_values_query_with_metric_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_distinct_values_query_with_metric_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_distinct_values_query_with_metric_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_distinct_values_query_with_metric_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_distinct_values_query_with_metric_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_distinct_values_query_with_metric_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_distinct_values_query_with_metric_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_metric_with_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_metric_with_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_metric_with_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_metric_with_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_metric_with_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_metric_with_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_metric_with_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_metric_with_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_cumulative_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_cumulative_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_cumulative_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_cumulative_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_derived_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_derived_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_derived_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_derived_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_multiple_metrics_in_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_multiple_metrics_in_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_multiple_metrics_in_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_multiple_metrics_in_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_ratio_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_ratio_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_ratio_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_ratio_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_simple_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_simple_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_simple_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_simple_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Postgres/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_distinct_values_query_with_metric_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_distinct_values_query_with_metric_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_distinct_values_query_with_metric_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_distinct_values_query_with_metric_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_distinct_values_query_with_metric_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_distinct_values_query_with_metric_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_distinct_values_query_with_metric_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_distinct_values_query_with_metric_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_metric_with_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_metric_with_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_metric_with_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_metric_with_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_metric_with_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_metric_with_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_metric_with_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_metric_with_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_cumulative_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_cumulative_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_cumulative_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_cumulative_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_derived_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_derived_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_derived_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_derived_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_multiple_metrics_in_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_multiple_metrics_in_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_multiple_metrics_in_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_multiple_metrics_in_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_ratio_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_ratio_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_ratio_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_ratio_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_simple_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_simple_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_simple_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_simple_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Redshift/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values_query_with_metric_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values_query_with_metric_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values_query_with_metric_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values_query_with_metric_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values_query_with_metric_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values_query_with_metric_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values_query_with_metric_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values_query_with_metric_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_cumulative_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_cumulative_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_cumulative_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_cumulative_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_derived_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_derived_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_derived_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_derived_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_multiple_metrics_in_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_multiple_metrics_in_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_multiple_metrics_in_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_multiple_metrics_in_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_ratio_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_ratio_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_ratio_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_ratio_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_simple_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_simple_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_simple_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_simple_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Snowflake/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_distinct_values_query_with_metric_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_distinct_values_query_with_metric_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_distinct_values_query_with_metric_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_distinct_values_query_with_metric_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_distinct_values_query_with_metric_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_distinct_values_query_with_metric_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_distinct_values_query_with_metric_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_distinct_values_query_with_metric_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_metric_with_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_metric_with_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_metric_with_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_metric_with_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_metric_with_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_metric_with_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_metric_with_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_metric_with_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_cumulative_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_cumulative_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_cumulative_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_cumulative_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_derived_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_derived_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_derived_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_derived_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_multiple_metrics_in_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_multiple_metrics_in_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_multiple_metrics_in_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_multiple_metrics_in_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_ratio_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_ratio_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_ratio_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_ratio_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_simple_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_simple_metric_in_where_filter__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_simple_metric_in_where_filter__plan0.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_simple_metric_in_where_filter__plan0.sql diff --git a/tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlQueryPlan/Trino/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_simple_query_with_metric_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_simple_query_with_metric_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_simple_query_with_metric_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_simple_query_with_metric_time_dimension__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_simple_query_with_metric_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_simple_query_with_metric_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_simple_query_with_metric_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/BigQuery/test_simple_query_with_metric_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_simple_query_with_metric_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_simple_query_with_metric_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_simple_query_with_metric_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_simple_query_with_metric_time_dimension__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_simple_query_with_metric_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_simple_query_with_metric_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_simple_query_with_metric_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Databricks/test_simple_query_with_metric_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_simple_query_with_metric_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_simple_query_with_metric_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_simple_query_with_metric_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_simple_query_with_metric_time_dimension__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_simple_query_with_metric_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_simple_query_with_metric_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_simple_query_with_metric_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/DuckDB/test_simple_query_with_metric_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_simple_query_with_metric_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_simple_query_with_metric_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_simple_query_with_metric_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_simple_query_with_metric_time_dimension__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_simple_query_with_metric_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_simple_query_with_metric_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_simple_query_with_metric_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Postgres/test_simple_query_with_metric_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_simple_query_with_metric_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_simple_query_with_metric_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_simple_query_with_metric_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_simple_query_with_metric_time_dimension__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_simple_query_with_metric_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_simple_query_with_metric_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_simple_query_with_metric_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Redshift/test_simple_query_with_metric_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_simple_query_with_metric_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_simple_query_with_metric_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_simple_query_with_metric_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_simple_query_with_metric_time_dimension__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_simple_query_with_metric_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_simple_query_with_metric_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_simple_query_with_metric_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Snowflake/test_simple_query_with_metric_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_non_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_primary_time__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_metric_time_dimension_transform_node_using_primary_time__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_simple_query_with_metric_time_dimension__plan0.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_simple_query_with_metric_time_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_simple_query_with_metric_time_dimension__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_simple_query_with_metric_time_dimension__plan0.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_simple_query_with_metric_time_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_simple_query_with_metric_time_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_simple_query_with_metric_time_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/Trino/test_simple_query_with_metric_time_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.xml b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.xml similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.xml rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_metric_time_dimension_transform_node_using_non_primary_time__plan0.xml diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_metric_time_dimension_transform_node_using_primary_time__plan0.xml b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_metric_time_dimension_transform_node_using_primary_time__plan0.xml similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_metric_time_dimension_transform_node_using_primary_time__plan0.xml rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_metric_time_dimension_transform_node_using_primary_time__plan0.xml diff --git a/tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_simple_query_with_metric_time_dimension__plan0.xml b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_simple_query_with_metric_time_dimension__plan0.xml similarity index 100% rename from tests/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_simple_query_with_metric_time_dimension__plan0.xml rename to tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlQueryPlan/test_simple_query_with_metric_time_dimension__plan0.xml diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_dimensions_with_time_constraint__plan0.xml b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_dimensions_with_time_constraint__plan0.xml similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_dimensions_with_time_constraint__plan0.xml rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_dimensions_with_time_constraint__plan0.xml diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_only__plan0.xml b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_only__plan0.xml similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_only__plan0.xml rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_only__plan0.xml diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_quarter_alone__plan0.xml b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_quarter_alone__plan0.xml similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_quarter_alone__plan0.xml rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_quarter_alone__plan0.xml diff --git a/tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_with_other_dimensions__plan0.xml b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_with_other_dimensions__plan0.xml similarity index 100% rename from tests/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_with_other_dimensions__plan0.xml rename to tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_with_other_dimensions__plan0.xml diff --git a/tests/snapshots/test_mf_engine.py/list/test_list_dimensions__result0.txt b/tests_metricflow/snapshots/test_mf_engine.py/list/test_list_dimensions__result0.txt similarity index 100% rename from tests/snapshots/test_mf_engine.py/list/test_list_dimensions__result0.txt rename to tests_metricflow/snapshots/test_mf_engine.py/list/test_list_dimensions__result0.txt diff --git a/tests/snapshots/test_node_data_set.py/list/test_joined_node_data_set__result0.txt b/tests_metricflow/snapshots/test_node_data_set.py/list/test_joined_node_data_set__result0.txt similarity index 100% rename from tests/snapshots/test_node_data_set.py/list/test_joined_node_data_set__result0.txt rename to tests_metricflow/snapshots/test_node_data_set.py/list/test_joined_node_data_set__result0.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/BigQuery/test_offset_to_grain_with_multiple_granularities__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/BigQuery/test_offset_to_grain_with_multiple_granularities__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/BigQuery/test_offset_to_grain_with_multiple_granularities__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/BigQuery/test_offset_to_grain_with_multiple_granularities__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/BigQuery/test_offset_to_grain_with_single_granularity__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/BigQuery/test_offset_to_grain_with_single_granularity__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/BigQuery/test_offset_to_grain_with_single_granularity__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/BigQuery/test_offset_to_grain_with_single_granularity__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/Databricks/test_offset_to_grain_with_multiple_granularities__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/Databricks/test_offset_to_grain_with_multiple_granularities__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/Databricks/test_offset_to_grain_with_multiple_granularities__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/Databricks/test_offset_to_grain_with_multiple_granularities__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/Databricks/test_offset_to_grain_with_single_granularity__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/Databricks/test_offset_to_grain_with_single_granularity__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/Databricks/test_offset_to_grain_with_single_granularity__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/Databricks/test_offset_to_grain_with_single_granularity__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/DuckDB/test_offset_to_grain_with_multiple_granularities__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/DuckDB/test_offset_to_grain_with_multiple_granularities__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/DuckDB/test_offset_to_grain_with_multiple_granularities__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/DuckDB/test_offset_to_grain_with_multiple_granularities__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/DuckDB/test_offset_to_grain_with_single_granularity__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/DuckDB/test_offset_to_grain_with_single_granularity__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/DuckDB/test_offset_to_grain_with_single_granularity__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/DuckDB/test_offset_to_grain_with_single_granularity__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/Postgres/test_offset_to_grain_with_multiple_granularities__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/Postgres/test_offset_to_grain_with_multiple_granularities__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/Postgres/test_offset_to_grain_with_multiple_granularities__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/Postgres/test_offset_to_grain_with_multiple_granularities__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/Postgres/test_offset_to_grain_with_single_granularity__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/Postgres/test_offset_to_grain_with_single_granularity__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/Postgres/test_offset_to_grain_with_single_granularity__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/Postgres/test_offset_to_grain_with_single_granularity__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/Redshift/test_offset_to_grain_with_multiple_granularities__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/Redshift/test_offset_to_grain_with_multiple_granularities__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/Redshift/test_offset_to_grain_with_multiple_granularities__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/Redshift/test_offset_to_grain_with_multiple_granularities__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/Redshift/test_offset_to_grain_with_single_granularity__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/Redshift/test_offset_to_grain_with_single_granularity__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/Redshift/test_offset_to_grain_with_single_granularity__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/Redshift/test_offset_to_grain_with_single_granularity__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/Snowflake/test_offset_to_grain_with_multiple_granularities__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/Snowflake/test_offset_to_grain_with_multiple_granularities__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/Snowflake/test_offset_to_grain_with_multiple_granularities__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/Snowflake/test_offset_to_grain_with_multiple_granularities__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/Snowflake/test_offset_to_grain_with_single_granularity__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/Snowflake/test_offset_to_grain_with_single_granularity__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/Snowflake/test_offset_to_grain_with_single_granularity__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/Snowflake/test_offset_to_grain_with_single_granularity__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/Trino/test_offset_to_grain_with_multiple_granularities__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/Trino/test_offset_to_grain_with_multiple_granularities__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/Trino/test_offset_to_grain_with_multiple_granularities__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/Trino/test_offset_to_grain_with_multiple_granularities__query_output.txt diff --git a/tests/snapshots/test_offset_metrics.py/str/Trino/test_offset_to_grain_with_single_granularity__query_output.txt b/tests_metricflow/snapshots/test_offset_metrics.py/str/Trino/test_offset_to_grain_with_single_granularity__query_output.txt similarity index 100% rename from tests/snapshots/test_offset_metrics.py/str/Trino/test_offset_to_grain_with_single_granularity__query_output.txt rename to tests_metricflow/snapshots/test_offset_metrics.py/str/Trino/test_offset_to_grain_with_single_granularity__query_output.txt diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_common_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_common_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_common_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_common_semantic_model__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_common_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_common_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_common_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_common_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_distinct_values__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_on_join_dim__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_on_join_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_on_join_dim__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_on_join_dim__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_join_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_join_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_join_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_join_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_join_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_join_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_join_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_join_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_limit_rows__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_limit_rows__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_limit_rows__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_limit_rows__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_limit_rows__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_limit_rows__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_limit_rows__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_limit_rows__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_local_dimension_using_local_entity__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_local_dimension_using_local_entity__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_local_dimension_using_local_entity__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_local_dimension_using_local_entity__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_local_dimension_using_local_entity__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_local_dimension_using_local_entity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_local_dimension_using_local_entity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_local_dimension_using_local_entity__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_reused_measure__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_reused_measure__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_reused_measure__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_reused_measure__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_reused_measure__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_reused_measure__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_reused_measure__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_reused_measure__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_single_expr_and_alias__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_single_expr_and_alias__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_single_expr_and_alias__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_single_expr_and_alias__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_categorical__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_categorical__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_categorical__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_categorical__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_categorical__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_categorical__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_categorical__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_categorical__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time_quarter__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time_quarter__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time_quarter__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time_quarter__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time_quarter__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time_quarter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time_quarter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_only_time_quarter__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_through_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_through_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_through_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_through_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_through_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_through_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_through_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_through_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multi_hop_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multihop_node__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multihop_node__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multihop_node__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multihop_node__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multihop_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multihop_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multihop_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multihop_node__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multiple_metrics_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multiple_metrics_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multiple_metrics_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multiple_metrics_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multiple_metrics_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multiple_metrics_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multiple_metrics_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_multiple_metrics_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_common_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_common_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_common_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_common_semantic_model__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_common_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_common_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_common_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_common_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_distinct_values__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_distinct_values__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_distinct_values__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_distinct_values__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_distinct_values__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_distinct_values__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_distinct_values__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_distinct_values__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_on_join_dim__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_on_join_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_on_join_dim__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_on_join_dim__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_join_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_join_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_join_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_join_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_join_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_join_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_join_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_join_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_limit_rows__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_limit_rows__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_limit_rows__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_limit_rows__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_limit_rows__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_limit_rows__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_limit_rows__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_limit_rows__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_local_dimension_using_local_entity__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_local_dimension_using_local_entity__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_local_dimension_using_local_entity__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_local_dimension_using_local_entity__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_local_dimension_using_local_entity__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_local_dimension_using_local_entity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_local_dimension_using_local_entity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_local_dimension_using_local_entity__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_reused_measure__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_reused_measure__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_reused_measure__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_reused_measure__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_reused_measure__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_reused_measure__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_reused_measure__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_reused_measure__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_single_expr_and_alias__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_single_expr_and_alias__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_single_expr_and_alias__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_single_expr_and_alias__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_categorical__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_categorical__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_categorical__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_categorical__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_categorical__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_categorical__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_categorical__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_categorical__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time_quarter__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time_quarter__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time_quarter__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time_quarter__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time_quarter__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time_quarter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time_quarter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_only_time_quarter__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_through_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_through_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_through_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_through_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_through_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_through_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_through_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_through_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multi_hop_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multihop_node__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multihop_node__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multihop_node__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multihop_node__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multihop_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multihop_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multihop_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multihop_node__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multiple_metrics_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multiple_metrics_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multiple_metrics_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multiple_metrics_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multiple_metrics_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multiple_metrics_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multiple_metrics_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_multiple_metrics_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_common_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_common_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_common_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_common_semantic_model__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_common_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_common_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_common_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_common_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_distinct_values__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_on_join_dim__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_on_join_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_on_join_dim__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_on_join_dim__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_join_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_join_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_join_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_join_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_join_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_join_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_join_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_join_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_limit_rows__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_limit_rows__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_limit_rows__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_limit_rows__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_limit_rows__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_limit_rows__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_limit_rows__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_limit_rows__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_local_dimension_using_local_entity__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_local_dimension_using_local_entity__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_local_dimension_using_local_entity__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_local_dimension_using_local_entity__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_local_dimension_using_local_entity__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_local_dimension_using_local_entity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_local_dimension_using_local_entity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_local_dimension_using_local_entity__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_single_expr_and_alias__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_single_expr_and_alias__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_single_expr_and_alias__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_single_expr_and_alias__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_categorical__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_categorical__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_categorical__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_categorical__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_categorical__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_categorical__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_categorical__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_categorical__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time_quarter__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time_quarter__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time_quarter__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time_quarter__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time_quarter__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time_quarter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time_quarter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_only_time_quarter__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multihop_node__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multihop_node__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multihop_node__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multihop_node__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multihop_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multihop_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multihop_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multihop_node__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_common_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_common_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_common_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_common_semantic_model__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_common_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_common_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_common_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_common_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_distinct_values__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_distinct_values__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_distinct_values__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_distinct_values__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_distinct_values__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_distinct_values__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_distinct_values__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_distinct_values__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_on_join_dim__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_on_join_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_on_join_dim__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_on_join_dim__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_join_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_join_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_join_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_join_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_join_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_join_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_join_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_join_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_limit_rows__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_limit_rows__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_limit_rows__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_limit_rows__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_limit_rows__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_limit_rows__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_limit_rows__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_limit_rows__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_local_dimension_using_local_entity__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_local_dimension_using_local_entity__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_local_dimension_using_local_entity__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_local_dimension_using_local_entity__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_local_dimension_using_local_entity__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_local_dimension_using_local_entity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_local_dimension_using_local_entity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_local_dimension_using_local_entity__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_reused_measure__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_reused_measure__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_reused_measure__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_reused_measure__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_reused_measure__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_reused_measure__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_reused_measure__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_reused_measure__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_single_expr_and_alias__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_single_expr_and_alias__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_single_expr_and_alias__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_single_expr_and_alias__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_categorical__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_categorical__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_categorical__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_categorical__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_categorical__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_categorical__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_categorical__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_categorical__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time_quarter__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time_quarter__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time_quarter__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time_quarter__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time_quarter__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time_quarter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time_quarter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_only_time_quarter__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_through_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_through_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_through_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_through_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_through_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_through_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_through_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_through_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multi_hop_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multihop_node__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multihop_node__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multihop_node__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multihop_node__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multihop_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multihop_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multihop_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multihop_node__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multiple_metrics_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multiple_metrics_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multiple_metrics_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multiple_metrics_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multiple_metrics_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multiple_metrics_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multiple_metrics_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_multiple_metrics_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_common_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_common_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_common_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_common_semantic_model__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_common_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_common_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_common_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_common_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_distinct_values__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_distinct_values__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_distinct_values__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_distinct_values__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_distinct_values__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_distinct_values__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_distinct_values__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_distinct_values__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_on_join_dim__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_on_join_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_on_join_dim__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_on_join_dim__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_join_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_join_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_join_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_join_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_join_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_join_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_join_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_join_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_limit_rows__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_limit_rows__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_limit_rows__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_limit_rows__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_limit_rows__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_limit_rows__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_limit_rows__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_limit_rows__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_local_dimension_using_local_entity__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_local_dimension_using_local_entity__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_local_dimension_using_local_entity__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_local_dimension_using_local_entity__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_local_dimension_using_local_entity__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_local_dimension_using_local_entity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_local_dimension_using_local_entity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_local_dimension_using_local_entity__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_reused_measure__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_reused_measure__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_reused_measure__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_reused_measure__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_reused_measure__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_reused_measure__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_reused_measure__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_reused_measure__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_single_expr_and_alias__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_single_expr_and_alias__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_single_expr_and_alias__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_single_expr_and_alias__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_categorical__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_categorical__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_categorical__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_categorical__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_categorical__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_categorical__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_categorical__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_categorical__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time_quarter__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time_quarter__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time_quarter__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time_quarter__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time_quarter__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time_quarter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time_quarter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_only_time_quarter__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_through_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_through_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_through_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_through_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_through_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_through_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_through_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_through_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multi_hop_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multihop_node__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multihop_node__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multihop_node__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multihop_node__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multihop_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multihop_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multihop_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multihop_node__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multiple_metrics_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multiple_metrics_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multiple_metrics_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multiple_metrics_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multiple_metrics_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multiple_metrics_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multiple_metrics_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_multiple_metrics_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_common_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_common_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_common_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_common_semantic_model__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_common_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_common_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_common_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_common_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_distinct_values__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_on_join_dim__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_on_join_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_on_join_dim__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_on_join_dim__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_join_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_join_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_join_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_join_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_join_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_join_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_join_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_join_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_limit_rows__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_limit_rows__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_limit_rows__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_limit_rows__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_limit_rows__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_limit_rows__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_limit_rows__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_limit_rows__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_local_dimension_using_local_entity__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_local_dimension_using_local_entity__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_local_dimension_using_local_entity__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_local_dimension_using_local_entity__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_local_dimension_using_local_entity__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_local_dimension_using_local_entity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_local_dimension_using_local_entity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_local_dimension_using_local_entity__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_reused_measure__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_reused_measure__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_reused_measure__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_reused_measure__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_reused_measure__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_reused_measure__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_reused_measure__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_reused_measure__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_single_expr_and_alias__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_single_expr_and_alias__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_single_expr_and_alias__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_single_expr_and_alias__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_categorical__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_categorical__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_categorical__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_categorical__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_categorical__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_categorical__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_categorical__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_categorical__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time_quarter__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time_quarter__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time_quarter__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time_quarter__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time_quarter__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time_quarter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time_quarter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_only_time_quarter__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_through_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_through_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_through_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_through_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_through_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_through_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_through_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_through_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multi_hop_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multihop_node__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multihop_node__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multihop_node__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multihop_node__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multihop_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multihop_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multihop_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multihop_node__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multiple_metrics_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multiple_metrics_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multiple_metrics_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multiple_metrics_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multiple_metrics_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multiple_metrics_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multiple_metrics_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_multiple_metrics_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_common_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_common_semantic_model__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_common_semantic_model__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_common_semantic_model__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_common_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_common_semantic_model__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_common_semantic_model__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_common_semantic_model__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_distinct_values__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_distinct_values__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_distinct_values__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_distinct_values__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_distinct_values__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_distinct_values__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_distinct_values__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_distinct_values__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_on_join_dim__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_on_join_dim__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_on_join_dim__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_on_join_dim__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_filter_with_where_constraint_on_join_dim__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_join_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_join_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_join_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_join_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_join_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_join_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_join_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_join_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_limit_rows__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_limit_rows__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_limit_rows__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_limit_rows__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_limit_rows__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_limit_rows__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_limit_rows__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_limit_rows__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_local_dimension_using_local_entity__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_local_dimension_using_local_entity__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_local_dimension_using_local_entity__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_local_dimension_using_local_entity__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_local_dimension_using_local_entity__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_local_dimension_using_local_entity__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_local_dimension_using_local_entity__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_local_dimension_using_local_entity__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_reused_measure__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_reused_measure__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_reused_measure__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_reused_measure__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_reused_measure__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_reused_measure__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_reused_measure__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_reused_measure__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_single_expr_and_alias__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_single_expr_and_alias__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_single_expr_and_alias__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_single_expr_and_alias__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_measure_constraint_with_single_expr_and_alias__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_metric_with_measures_from_multiple_sources_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_categorical__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_categorical__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_categorical__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_categorical__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_categorical__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_categorical__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_categorical__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_categorical__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time_quarter__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time_quarter__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time_quarter__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time_quarter__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time_quarter__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time_quarter__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time_quarter__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_only_time_quarter__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_through_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_through_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_through_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_through_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_through_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_through_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_through_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_through_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_to_scd_dimension__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_to_scd_dimension__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_to_scd_dimension__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_to_scd_dimension__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_to_scd_dimension__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multi_hop_to_scd_dimension__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multihop_node__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multihop_node__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multihop_node__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multihop_node__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multihop_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multihop_node__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multihop_node__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multihop_node__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multiple_metrics_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multiple_metrics_no_dimensions__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multiple_metrics_no_dimensions__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multiple_metrics_no_dimensions__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multiple_metrics_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multiple_metrics_no_dimensions__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multiple_metrics_no_dimensions__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_multiple_metrics_no_dimensions__plan0_optimized.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0.sql diff --git a/tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0_optimized.sql rename to tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0_optimized.sql diff --git a/tests/snapshots/test_rendered_query.py/str/BigQuery/test_id_enumeration__query.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/BigQuery/test_id_enumeration__query.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/BigQuery/test_id_enumeration__query.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/BigQuery/test_id_enumeration__query.sql diff --git a/tests/snapshots/test_rendered_query.py/str/BigQuery/test_render_query__query0.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/BigQuery/test_render_query__query0.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/BigQuery/test_render_query__query0.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/BigQuery/test_render_query__query0.sql diff --git a/tests/snapshots/test_rendered_query.py/str/Databricks/test_id_enumeration__query.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/Databricks/test_id_enumeration__query.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/Databricks/test_id_enumeration__query.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/Databricks/test_id_enumeration__query.sql diff --git a/tests/snapshots/test_rendered_query.py/str/Databricks/test_render_query__query0.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/Databricks/test_render_query__query0.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/Databricks/test_render_query__query0.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/Databricks/test_render_query__query0.sql diff --git a/tests/snapshots/test_rendered_query.py/str/DuckDB/test_id_enumeration__query.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/DuckDB/test_id_enumeration__query.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/DuckDB/test_id_enumeration__query.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/DuckDB/test_id_enumeration__query.sql diff --git a/tests/snapshots/test_rendered_query.py/str/DuckDB/test_render_query__query0.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/DuckDB/test_render_query__query0.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/DuckDB/test_render_query__query0.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/DuckDB/test_render_query__query0.sql diff --git a/tests/snapshots/test_rendered_query.py/str/Postgres/test_id_enumeration__query.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/Postgres/test_id_enumeration__query.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/Postgres/test_id_enumeration__query.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/Postgres/test_id_enumeration__query.sql diff --git a/tests/snapshots/test_rendered_query.py/str/Postgres/test_render_query__query0.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/Postgres/test_render_query__query0.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/Postgres/test_render_query__query0.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/Postgres/test_render_query__query0.sql diff --git a/tests/snapshots/test_rendered_query.py/str/Redshift/test_id_enumeration__query.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/Redshift/test_id_enumeration__query.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/Redshift/test_id_enumeration__query.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/Redshift/test_id_enumeration__query.sql diff --git a/tests/snapshots/test_rendered_query.py/str/Redshift/test_render_query__query0.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/Redshift/test_render_query__query0.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/Redshift/test_render_query__query0.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/Redshift/test_render_query__query0.sql diff --git a/tests/snapshots/test_rendered_query.py/str/Snowflake/test_id_enumeration__query.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/Snowflake/test_id_enumeration__query.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/Snowflake/test_id_enumeration__query.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/Snowflake/test_id_enumeration__query.sql diff --git a/tests/snapshots/test_rendered_query.py/str/Snowflake/test_render_query__query0.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/Snowflake/test_render_query__query0.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/Snowflake/test_render_query__query0.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/Snowflake/test_render_query__query0.sql diff --git a/tests/snapshots/test_rendered_query.py/str/Trino/test_id_enumeration__query.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/Trino/test_id_enumeration__query.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/Trino/test_id_enumeration__query.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/Trino/test_id_enumeration__query.sql diff --git a/tests/snapshots/test_rendered_query.py/str/Trino/test_render_query__query0.sql b/tests_metricflow/snapshots/test_rendered_query.py/str/Trino/test_render_query__query0.sql similarity index 100% rename from tests/snapshots/test_rendered_query.py/str/Trino/test_render_query__query0.sql rename to tests_metricflow/snapshots/test_rendered_query.py/str/Trino/test_render_query__query0.sql diff --git a/tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__accumulate_last_2_months_metric__gbir_6.xml b/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__accumulate_last_2_months_metric__gbir_6.xml similarity index 100% rename from tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__accumulate_last_2_months_metric__gbir_6.xml rename to tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__accumulate_last_2_months_metric__gbir_6.xml diff --git a/tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_different_parent_time_grains__gbir_5.xml b/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_different_parent_time_grains__gbir_5.xml similarity index 100% rename from tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_different_parent_time_grains__gbir_5.xml rename to tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_different_parent_time_grains__gbir_5.xml diff --git a/tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_same_parent_time_grains__gbir_4.xml b/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_same_parent_time_grains__gbir_4.xml similarity index 100% rename from tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_same_parent_time_grains__gbir_4.xml rename to tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_same_parent_time_grains__gbir_4.xml diff --git a/tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_different_time_grains__gbir_3.xml b/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_different_time_grains__gbir_3.xml similarity index 100% rename from tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_different_time_grains__gbir_3.xml rename to tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_different_time_grains__gbir_3.xml diff --git a/tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_same_time_grains__gbir_2.xml b/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_same_time_grains__gbir_2.xml similarity index 100% rename from tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_same_time_grains__gbir_2.xml rename to tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_same_time_grains__gbir_2.xml diff --git a/tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__no_metrics__gbir_0.xml b/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__no_metrics__gbir_0.xml similarity index 100% rename from tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__no_metrics__gbir_0.xml rename to tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__no_metrics__gbir_0.xml diff --git a/tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__simple_metric__gbir_1.xml b/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__simple_metric__gbir_1.xml similarity index 100% rename from tests/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__simple_metric__gbir_1.xml rename to tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__simple_metric__gbir_1.xml diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_colliding_alias__after_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_colliding_alias__after_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_colliding_alias__after_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_colliding_alias__after_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_colliding_alias__before_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_colliding_alias__before_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_colliding_alias__before_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_colliding_alias__before_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_all_join_sources__after_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_all_join_sources__after_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_all_join_sources__after_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_all_join_sources__after_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_all_join_sources__before_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_all_join_sources__before_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_all_join_sources__before_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_all_join_sources__before_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_join__after_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_join__after_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_join__after_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_join__after_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_join__before_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_join__before_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_join__before_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_join__before_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__after_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__after_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__after_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__after_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__before_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__before_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__before_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__before_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_left_node_statement__after_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_left_node_statement__after_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_left_node_statement__after_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_left_node_statement__after_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_left_node_statement__before_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_left_node_statement__before_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_left_node_statement__before_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_left_node_statement__before_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_statement__after_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_statement__after_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_statement__after_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_statement__after_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_statement__before_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_statement__before_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_statement__before_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_reducing_join_statement__before_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_rewriting_distinct_select_node_is_not_reduced__after_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_rewriting_distinct_select_node_is_not_reduced__after_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_rewriting_distinct_select_node_is_not_reduced__after_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_rewriting_distinct_select_node_is_not_reduced__after_reducing.sql diff --git a/tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_rewriting_distinct_select_node_is_not_reduced__before_reducing.sql b/tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_rewriting_distinct_select_node_is_not_reduced__before_reducing.sql similarity index 100% rename from tests/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_rewriting_distinct_select_node_is_not_reduced__before_reducing.sql rename to tests_metricflow/snapshots/test_rewriting_sub_query_reducer.py/SqlQueryPlan/test_rewriting_distinct_select_node_is_not_reduced__before_reducing.sql diff --git a/tests/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt b/tests_metricflow/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt similarity index 100% rename from tests/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt rename to tests_metricflow/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt diff --git a/tests/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt b/tests_metricflow/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt similarity index 100% rename from tests/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt rename to tests_metricflow/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt diff --git a/tests/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt b/tests_metricflow/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt similarity index 100% rename from tests/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt rename to tests_metricflow/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt diff --git a/tests/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt b/tests_metricflow/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt similarity index 100% rename from tests/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt rename to tests_metricflow/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt diff --git a/tests/snapshots/test_semantic_model_container.py/tuple/test_elements_for_metric__result0.txt b/tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_elements_for_metric__result0.txt similarity index 100% rename from tests/snapshots/test_semantic_model_container.py/tuple/test_elements_for_metric__result0.txt rename to tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_elements_for_metric__result0.txt diff --git a/tests/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt b/tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt similarity index 100% rename from tests/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt rename to tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt diff --git a/tests/snapshots/test_semantic_model_container.py/tuple/test_local_linked_elements_for_metric__result0.txt b/tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_local_linked_elements_for_metric__result0.txt similarity index 100% rename from tests/snapshots/test_semantic_model_container.py/tuple/test_local_linked_elements_for_metric__result0.txt rename to tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_local_linked_elements_for_metric__result0.txt diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfp_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfp_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfp_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfpo_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfpo_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfpo_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfpo_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfp_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfp_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfp_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfpo_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfpo_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfpo_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfpo_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfp_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfp_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfp_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfpo_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfpo_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfpo_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfpo_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfp_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfp_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfp_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfpo_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfpo_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfpo_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfpo_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfp_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfp_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfp_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfpo_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfpo_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfpo_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfpo_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfp_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfp_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfp_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfpo_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfpo_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfpo_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfpo_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfp_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfp_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfp_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfpo_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfpo_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfpo_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfpo_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfp_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfp_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfp_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfpo_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfpo_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfpo_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfpo_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfp_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfp_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfp_0.xml diff --git a/tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfpo_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfpo_0.xml similarity index 100% rename from tests/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfpo_0.xml rename to tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfpo_0.xml diff --git a/tests/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_derived_metrics_with_common_filtered_metric__result.txt b/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_derived_metrics_with_common_filtered_metric__result.txt similarity index 100% rename from tests/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_derived_metrics_with_common_filtered_metric__result.txt rename to tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_derived_metrics_with_common_filtered_metric__result.txt diff --git a/tests/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_filter__result.txt b/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_filter__result.txt similarity index 100% rename from tests/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_filter__result.txt rename to tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_filter__result.txt diff --git a/tests/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_input_filter__result.txt b/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_input_filter__result.txt similarity index 100% rename from tests/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_input_filter__result.txt rename to tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_input_filter__result.txt diff --git a/tests/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_filter__result.txt b/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_filter__result.txt similarity index 100% rename from tests/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_filter__result.txt rename to tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_filter__result.txt diff --git a/tests/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_input_filter__result.txt b/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_input_filter__result.txt similarity index 100% rename from tests/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_input_filter__result.txt rename to tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_input_filter__result.txt diff --git a/tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__accumulate_last_2_months_metric__result.txt b/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__accumulate_last_2_months_metric__result.txt similarity index 100% rename from tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__accumulate_last_2_months_metric__result.txt rename to tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__accumulate_last_2_months_metric__result.txt diff --git a/tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_different_parent_time_grains__result.txt b/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_different_parent_time_grains__result.txt similarity index 100% rename from tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_different_parent_time_grains__result.txt rename to tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_different_parent_time_grains__result.txt diff --git a/tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_same_parent_time_grains__result.txt b/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_same_parent_time_grains__result.txt similarity index 100% rename from tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_same_parent_time_grains__result.txt rename to tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_same_parent_time_grains__result.txt diff --git a/tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_different_time_grains__result.txt b/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_different_time_grains__result.txt similarity index 100% rename from tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_different_time_grains__result.txt rename to tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_different_time_grains__result.txt diff --git a/tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_same_time_grains__result.txt b/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_same_time_grains__result.txt similarity index 100% rename from tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_same_time_grains__result.txt rename to tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_same_time_grains__result.txt diff --git a/tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__no_metrics__result.txt b/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__no_metrics__result.txt similarity index 100% rename from tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__no_metrics__result.txt rename to tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__no_metrics__result.txt diff --git a/tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__simple_metric__result.txt b/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__simple_metric__result.txt similarity index 100% rename from tests/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__simple_metric__result.txt rename to tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__simple_metric__result.txt diff --git a/tests/snapshots/test_sql_expr_render.py/str/test_window_function_expr__rendered_sql.txt b/tests_metricflow/snapshots/test_sql_expr_render.py/str/test_window_function_expr__rendered_sql.txt similarity index 100% rename from tests/snapshots/test_sql_expr_render.py/str/test_window_function_expr__rendered_sql.txt rename to tests_metricflow/snapshots/test_sql_expr_render.py/str/test_window_function_expr__rendered_sql.txt diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan1.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan1.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan1.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan1.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan2.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan2.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan2.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan2.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan3.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan3.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan3.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan3.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan4.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan4.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan4.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan4.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan5.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan5.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan5.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_component_rendering__plan5.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_create_table_as__create_table_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_create_table_as__create_table_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_create_table_as__create_table_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_create_table_as__create_table_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_create_table_as__create_view_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_create_table_as__create_view_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_create_table_as__create_view_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_create_table_as__create_view_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_limit__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_limit__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_limit__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_limit__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_order_by__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_order_by__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_order_by__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_order_by__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_where__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_where__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_where__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/BigQuery/test_render_where__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan1.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan1.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan1.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan1.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan2.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan2.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan2.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan2.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan3.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan3.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan3.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan3.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan4.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan4.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan4.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan4.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan5.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan5.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan5.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_component_rendering__plan5.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_create_table_as__create_table_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_create_table_as__create_table_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_create_table_as__create_table_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_create_table_as__create_table_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_create_table_as__create_view_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_create_table_as__create_view_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_create_table_as__create_view_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_create_table_as__create_view_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_limit__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_limit__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_limit__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_limit__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_order_by__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_order_by__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_order_by__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_order_by__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_where__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_where__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_where__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Databricks/test_render_where__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan1.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan1.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan1.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan1.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan2.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan2.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan2.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan2.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan3.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan3.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan3.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan3.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan4.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan4.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan4.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan4.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan5.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan5.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan5.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_component_rendering__plan5.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_create_table_as__create_table_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_create_table_as__create_table_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_create_table_as__create_table_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_create_table_as__create_table_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_create_table_as__create_view_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_create_table_as__create_view_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_create_table_as__create_view_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_create_table_as__create_view_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_limit__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_limit__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_limit__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_limit__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_order_by__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_order_by__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_order_by__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_order_by__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_where__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_where__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_where__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/DuckDB/test_render_where__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan1.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan1.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan1.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan1.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan2.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan2.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan2.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan2.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan3.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan3.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan3.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan3.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan4.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan4.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan4.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan4.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan5.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan5.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan5.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_component_rendering__plan5.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_create_table_as__create_table_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_create_table_as__create_table_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_create_table_as__create_table_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_create_table_as__create_table_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_create_table_as__create_view_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_create_table_as__create_view_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_create_table_as__create_view_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_create_table_as__create_view_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_limit__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_limit__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_limit__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_limit__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_order_by__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_order_by__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_order_by__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_order_by__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_where__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_where__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_where__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Postgres/test_render_where__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan1.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan1.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan1.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan1.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan2.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan2.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan2.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan2.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan3.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan3.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan3.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan3.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan4.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan4.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan4.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan4.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan5.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan5.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan5.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_component_rendering__plan5.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_create_table_as__create_table_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_create_table_as__create_table_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_create_table_as__create_table_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_create_table_as__create_table_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_create_table_as__create_view_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_create_table_as__create_view_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_create_table_as__create_view_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_create_table_as__create_view_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_limit__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_limit__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_limit__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_limit__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_order_by__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_order_by__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_order_by__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_order_by__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_where__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_where__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_where__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Redshift/test_render_where__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan1.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan1.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan1.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan1.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan2.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan2.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan2.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan2.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan3.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan3.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan3.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan3.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan4.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan4.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan4.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan4.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan5.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan5.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan5.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_component_rendering__plan5.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_create_table_as__create_table_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_create_table_as__create_table_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_create_table_as__create_table_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_create_table_as__create_table_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_create_table_as__create_view_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_create_table_as__create_view_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_create_table_as__create_view_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_create_table_as__create_view_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_limit__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_limit__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_limit__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_limit__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_order_by__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_order_by__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_order_by__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_order_by__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_where__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_where__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_where__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Snowflake/test_render_where__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan1.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan1.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan1.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan1.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan2.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan2.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan2.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan2.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan3.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan3.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan3.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan3.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan4.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan4.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan4.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan4.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan5.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan5.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan5.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_component_rendering__plan5.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_create_table_as__create_table_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_create_table_as__create_table_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_create_table_as__create_table_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_create_table_as__create_table_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_create_table_as__create_view_as.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_create_table_as__create_view_as.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_create_table_as__create_view_as.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_create_table_as__create_view_as.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_limit__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_limit__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_limit__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_limit__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_order_by__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_order_by__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_order_by__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_order_by__plan0.sql diff --git a/tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_where__plan0.sql b/tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_where__plan0.sql similarity index 100% rename from tests/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_where__plan0.sql rename to tests_metricflow/snapshots/test_sql_plan_render.py/SqlQueryPlan/Trino/test_render_where__plan0.sql diff --git a/tests/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_distinct_select_node_is_not_reduced__after_reducing.sql b/tests_metricflow/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_distinct_select_node_is_not_reduced__after_reducing.sql similarity index 100% rename from tests/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_distinct_select_node_is_not_reduced__after_reducing.sql rename to tests_metricflow/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_distinct_select_node_is_not_reduced__after_reducing.sql diff --git a/tests/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_distinct_select_node_is_not_reduced__before_reducing.sql b/tests_metricflow/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_distinct_select_node_is_not_reduced__before_reducing.sql similarity index 100% rename from tests/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_distinct_select_node_is_not_reduced__before_reducing.sql rename to tests_metricflow/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_distinct_select_node_is_not_reduced__before_reducing.sql diff --git a/tests/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__after_reducing.sql b/tests_metricflow/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__after_reducing.sql similarity index 100% rename from tests/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__after_reducing.sql rename to tests_metricflow/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__after_reducing.sql diff --git a/tests/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__before_reducing.sql b/tests_metricflow/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__before_reducing.sql similarity index 100% rename from tests/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__before_reducing.sql rename to tests_metricflow/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_reduce_sub_query__before_reducing.sql diff --git a/tests/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_rewrite_order_by_with_a_join_in_parent__after_reducing.sql b/tests_metricflow/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_rewrite_order_by_with_a_join_in_parent__after_reducing.sql similarity index 100% rename from tests/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_rewrite_order_by_with_a_join_in_parent__after_reducing.sql rename to tests_metricflow/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_rewrite_order_by_with_a_join_in_parent__after_reducing.sql diff --git a/tests/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_rewrite_order_by_with_a_join_in_parent__before_reducing.sql b/tests_metricflow/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_rewrite_order_by_with_a_join_in_parent__before_reducing.sql similarity index 100% rename from tests/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_rewrite_order_by_with_a_join_in_parent__before_reducing.sql rename to tests_metricflow/snapshots/test_sub_query_reducer.py/SqlQueryPlan/test_rewrite_order_by_with_a_join_in_parent__before_reducing.sql diff --git a/tests/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt b/tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt similarity index 100% rename from tests/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt rename to tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt diff --git a/tests/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt b/tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt similarity index 100% rename from tests/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt rename to tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt diff --git a/tests/snapshots/test_suggestions.py/str/test_suggestions_for_group_by_item__result_0.txt b/tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_group_by_item__result_0.txt similarity index 100% rename from tests/snapshots/test_suggestions.py/str/test_suggestions_for_group_by_item__result_0.txt rename to tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_group_by_item__result_0.txt diff --git a/tests/snapshots/test_suggestions.py/str/test_suggestions_for_metric__result_0.txt b/tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_metric__result_0.txt similarity index 100% rename from tests/snapshots/test_suggestions.py/str/test_suggestions_for_metric__result_0.txt rename to tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_metric__result_0.txt diff --git a/tests/snapshots/test_suggestions.py/str/test_suggestions_for_multiple_metrics__result_0.txt b/tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_multiple_metrics__result_0.txt similarity index 100% rename from tests/snapshots/test_suggestions.py/str/test_suggestions_for_multiple_metrics__result_0.txt rename to tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_multiple_metrics__result_0.txt diff --git a/tests/snapshots/test_table_alias_simplifier.py/SqlQueryPlan/test_table_alias_simplification__after_alias_simplification.sql b/tests_metricflow/snapshots/test_table_alias_simplifier.py/SqlQueryPlan/test_table_alias_simplification__after_alias_simplification.sql similarity index 100% rename from tests/snapshots/test_table_alias_simplifier.py/SqlQueryPlan/test_table_alias_simplification__after_alias_simplification.sql rename to tests_metricflow/snapshots/test_table_alias_simplifier.py/SqlQueryPlan/test_table_alias_simplification__after_alias_simplification.sql diff --git a/tests/snapshots/test_table_alias_simplifier.py/SqlQueryPlan/test_table_alias_simplification__before_alias_simplification.sql b/tests_metricflow/snapshots/test_table_alias_simplifier.py/SqlQueryPlan/test_table_alias_simplification__before_alias_simplification.sql similarity index 100% rename from tests/snapshots/test_table_alias_simplifier.py/SqlQueryPlan/test_table_alias_simplification__before_alias_simplification.sql rename to tests_metricflow/snapshots/test_table_alias_simplifier.py/SqlQueryPlan/test_table_alias_simplification__before_alias_simplification.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/BigQuery/test_simple_join_to_time_spine__plan0.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/BigQuery/test_simple_join_to_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/BigQuery/test_simple_join_to_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/BigQuery/test_simple_join_to_time_spine__plan0.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/BigQuery/test_simple_join_to_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/BigQuery/test_simple_join_to_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/BigQuery/test_simple_join_to_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/BigQuery/test_simple_join_to_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Databricks/test_simple_join_to_time_spine__plan0.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Databricks/test_simple_join_to_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Databricks/test_simple_join_to_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Databricks/test_simple_join_to_time_spine__plan0.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Databricks/test_simple_join_to_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Databricks/test_simple_join_to_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Databricks/test_simple_join_to_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Databricks/test_simple_join_to_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/DuckDB/test_simple_join_to_time_spine__plan0.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/DuckDB/test_simple_join_to_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/DuckDB/test_simple_join_to_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/DuckDB/test_simple_join_to_time_spine__plan0.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/DuckDB/test_simple_join_to_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/DuckDB/test_simple_join_to_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/DuckDB/test_simple_join_to_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/DuckDB/test_simple_join_to_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Postgres/test_simple_join_to_time_spine__plan0.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Postgres/test_simple_join_to_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Postgres/test_simple_join_to_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Postgres/test_simple_join_to_time_spine__plan0.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Postgres/test_simple_join_to_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Postgres/test_simple_join_to_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Postgres/test_simple_join_to_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Postgres/test_simple_join_to_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Redshift/test_simple_join_to_time_spine__plan0.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Redshift/test_simple_join_to_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Redshift/test_simple_join_to_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Redshift/test_simple_join_to_time_spine__plan0.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Redshift/test_simple_join_to_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Redshift/test_simple_join_to_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Redshift/test_simple_join_to_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Redshift/test_simple_join_to_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Snowflake/test_simple_join_to_time_spine__plan0.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Snowflake/test_simple_join_to_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Snowflake/test_simple_join_to_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Snowflake/test_simple_join_to_time_spine__plan0.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Snowflake/test_simple_join_to_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Snowflake/test_simple_join_to_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Snowflake/test_simple_join_to_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Snowflake/test_simple_join_to_time_spine__plan0_optimized.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Trino/test_simple_join_to_time_spine__plan0.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Trino/test_simple_join_to_time_spine__plan0.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Trino/test_simple_join_to_time_spine__plan0.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Trino/test_simple_join_to_time_spine__plan0.sql diff --git a/tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Trino/test_simple_join_to_time_spine__plan0_optimized.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Trino/test_simple_join_to_time_spine__plan0_optimized.sql similarity index 100% rename from tests/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Trino/test_simple_join_to_time_spine__plan0_optimized.sql rename to tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlQueryPlan/Trino/test_simple_join_to_time_spine__plan0_optimized.sql diff --git a/tests/source_schema_tools.py b/tests_metricflow/source_schema_tools.py similarity index 91% rename from tests/source_schema_tools.py rename to tests_metricflow/source_schema_tools.py index a3cd78f558..b0c6db79bb 100644 --- a/tests/source_schema_tools.py +++ b/tests_metricflow/source_schema_tools.py @@ -3,9 +3,9 @@ import logging from metricflow.protocols.sql_client import SqlEngine -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods -from tests.table_snapshot.table_snapshots import ( +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods +from tests_metricflow.table_snapshot.table_snapshots import ( SqlTableSnapshotLoader, SqlTableSnapshotRepository, ) diff --git a/tests/sql/__init__.py b/tests_metricflow/sql/__init__.py similarity index 100% rename from tests/sql/__init__.py rename to tests_metricflow/sql/__init__.py diff --git a/tests/sql/compare_sql_plan.py b/tests_metricflow/sql/compare_sql_plan.py similarity index 95% rename from tests/sql/compare_sql_plan.py rename to tests_metricflow/sql/compare_sql_plan.py index 191616454b..c6e104fd4b 100644 --- a/tests/sql/compare_sql_plan.py +++ b/tests_metricflow/sql/compare_sql_plan.py @@ -6,8 +6,8 @@ from metricflow.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer from metricflow.sql.sql_plan import SqlQueryPlan, SqlQueryPlanNode -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker -from tests.snapshot_utils import ( +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker +from tests_metricflow.snapshot_utils import ( assert_plan_snapshot_text_equal, make_schema_replacement_function, ) diff --git a/tests/sql/optimizer/__init__.py b/tests_metricflow/sql/optimizer/__init__.py similarity index 100% rename from tests/sql/optimizer/__init__.py rename to tests_metricflow/sql/optimizer/__init__.py diff --git a/tests/sql/optimizer/test_column_pruner.py b/tests_metricflow/sql/optimizer/test_column_pruner.py similarity index 99% rename from tests/sql/optimizer/test_column_pruner.py rename to tests_metricflow/sql/optimizer/test_column_pruner.py index 01b076f53c..93f4df658e 100644 --- a/tests/sql/optimizer/test_column_pruner.py +++ b/tests_metricflow/sql/optimizer/test_column_pruner.py @@ -22,8 +22,8 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.sql.compare_sql_plan import assert_default_rendered_sql_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.sql.compare_sql_plan import assert_default_rendered_sql_equal @pytest.fixture diff --git a/tests/sql/optimizer/test_rewriting_sub_query_reducer.py b/tests_metricflow/sql/optimizer/test_rewriting_sub_query_reducer.py similarity index 99% rename from tests/sql/optimizer/test_rewriting_sub_query_reducer.py rename to tests_metricflow/sql/optimizer/test_rewriting_sub_query_reducer.py index dcc38e946b..c9a4de859e 100644 --- a/tests/sql/optimizer/test_rewriting_sub_query_reducer.py +++ b/tests_metricflow/sql/optimizer/test_rewriting_sub_query_reducer.py @@ -23,8 +23,8 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.sql.compare_sql_plan import assert_default_rendered_sql_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.sql.compare_sql_plan import assert_default_rendered_sql_equal @pytest.fixture diff --git a/tests/sql/optimizer/test_sub_query_reducer.py b/tests_metricflow/sql/optimizer/test_sub_query_reducer.py similarity index 98% rename from tests/sql/optimizer/test_sub_query_reducer.py rename to tests_metricflow/sql/optimizer/test_sub_query_reducer.py index 39246bb408..5d2130e335 100644 --- a/tests/sql/optimizer/test_sub_query_reducer.py +++ b/tests_metricflow/sql/optimizer/test_sub_query_reducer.py @@ -19,8 +19,8 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.sql.compare_sql_plan import assert_default_rendered_sql_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.sql.compare_sql_plan import assert_default_rendered_sql_equal @pytest.fixture diff --git a/tests/sql/optimizer/test_table_alias_simplifier.py b/tests_metricflow/sql/optimizer/test_table_alias_simplifier.py similarity index 97% rename from tests/sql/optimizer/test_table_alias_simplifier.py rename to tests_metricflow/sql/optimizer/test_table_alias_simplifier.py index e433caac05..2c690ffffc 100644 --- a/tests/sql/optimizer/test_table_alias_simplifier.py +++ b/tests_metricflow/sql/optimizer/test_table_alias_simplifier.py @@ -19,8 +19,8 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.sql.compare_sql_plan import assert_default_rendered_sql_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.sql.compare_sql_plan import assert_default_rendered_sql_equal @pytest.fixture diff --git a/tests/sql/test_engine_specific_rendering.py b/tests_metricflow/sql/test_engine_specific_rendering.py similarity index 98% rename from tests/sql/test_engine_specific_rendering.py rename to tests_metricflow/sql/test_engine_specific_rendering.py index 60a56fc758..503f6fc33a 100644 --- a/tests/sql/test_engine_specific_rendering.py +++ b/tests_metricflow/sql/test_engine_specific_rendering.py @@ -24,8 +24,8 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.sql.compare_sql_plan import assert_rendered_sql_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_equal @pytest.mark.sql_engine_snapshot diff --git a/tests/sql/test_sql_expr_render.py b/tests_metricflow/sql/test_sql_expr_render.py similarity index 98% rename from tests/sql/test_sql_expr_render.py rename to tests_metricflow/sql/test_sql_expr_render.py index 7dabd7736a..a8e7118e2b 100644 --- a/tests/sql/test_sql_expr_render.py +++ b/tests_metricflow/sql/test_sql_expr_render.py @@ -33,8 +33,8 @@ SqlWindowFunctionExpression, SqlWindowOrderByArgument, ) -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.snapshot_utils import assert_str_snapshot_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests/sql/test_sql_plan_render.py b/tests_metricflow/sql/test_sql_plan_render.py similarity index 98% rename from tests/sql/test_sql_plan_render.py rename to tests_metricflow/sql/test_sql_plan_render.py index e425112b0d..48f7864e40 100644 --- a/tests/sql/test_sql_plan_render.py +++ b/tests_metricflow/sql/test_sql_plan_render.py @@ -26,8 +26,8 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable, SqlTableType -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.sql.compare_sql_plan import assert_rendered_sql_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_equal logger = logging.getLogger(__name__) diff --git a/tests/sql_clients/__init__.py b/tests_metricflow/sql_clients/__init__.py similarity index 100% rename from tests/sql_clients/__init__.py rename to tests_metricflow/sql_clients/__init__.py diff --git a/tests/sql_clients/test_date_time_operations.py b/tests_metricflow/sql_clients/test_date_time_operations.py similarity index 100% rename from tests/sql_clients/test_date_time_operations.py rename to tests_metricflow/sql_clients/test_date_time_operations.py diff --git a/tests/sql_clients/test_sql_client.py b/tests_metricflow/sql_clients/test_sql_client.py similarity index 95% rename from tests/sql_clients/test_sql_client.py rename to tests_metricflow/sql_clients/test_sql_client.py index 4ec750b7bf..f37a8cc416 100644 --- a/tests/sql_clients/test_sql_client.py +++ b/tests_metricflow/sql_clients/test_sql_client.py @@ -10,9 +10,9 @@ from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.sql.sql_table import SqlTable -from tests.compare_df import assert_dataframes_equal -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods +from tests_metricflow.compare_df import assert_dataframes_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods logger = logging.getLogger(__name__) diff --git a/tests/table_snapshot/__init__.py b/tests_metricflow/table_snapshot/__init__.py similarity index 100% rename from tests/table_snapshot/__init__.py rename to tests_metricflow/table_snapshot/__init__.py diff --git a/tests/table_snapshot/example_table_snapshot.yaml b/tests_metricflow/table_snapshot/example_table_snapshot.yaml similarity index 100% rename from tests/table_snapshot/example_table_snapshot.yaml rename to tests_metricflow/table_snapshot/example_table_snapshot.yaml diff --git a/tests/table_snapshot/table_snapshots.py b/tests_metricflow/table_snapshot/table_snapshots.py similarity index 99% rename from tests/table_snapshot/table_snapshots.py rename to tests_metricflow/table_snapshot/table_snapshots.py index 0329939fb5..4b2ccd2df5 100644 --- a/tests/table_snapshot/table_snapshots.py +++ b/tests_metricflow/table_snapshot/table_snapshots.py @@ -17,7 +17,7 @@ from metricflow_semantics.specs.spec_classes import hash_items from metricflow.sql.sql_table import SqlTable -from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods +from tests_metricflow.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods logger = logging.getLogger(__name__) diff --git a/tests/table_snapshot/test_source_schema.py b/tests_metricflow/table_snapshot/test_source_schema.py similarity index 87% rename from tests/table_snapshot/test_source_schema.py rename to tests_metricflow/table_snapshot/test_source_schema.py index 1da5cb36e2..d41e036134 100644 --- a/tests/table_snapshot/test_source_schema.py +++ b/tests_metricflow/table_snapshot/test_source_schema.py @@ -7,11 +7,11 @@ from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.sql.sql_table import SqlTable -from tests.compare_df import assert_dataframes_equal -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.fixtures.table_fixtures import CONFIGURED_SOURCE_TABLE_SNAPSHOT_REPOSITORY -from tests.source_schema_tools import get_populate_source_schema_shell_command -from tests.table_snapshot.table_snapshots import ( +from tests_metricflow.compare_df import assert_dataframes_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.fixtures.table_fixtures import CONFIGURED_SOURCE_TABLE_SNAPSHOT_REPOSITORY +from tests_metricflow.source_schema_tools import get_populate_source_schema_shell_command +from tests_metricflow.table_snapshot.table_snapshots import ( SqlTableSnapshotRepository, TableSnapshotException, ) diff --git a/tests/table_snapshot/test_table_snapshots.py b/tests_metricflow/table_snapshot/test_table_snapshots.py similarity index 92% rename from tests/table_snapshot/test_table_snapshots.py rename to tests_metricflow/table_snapshot/test_table_snapshots.py index bd4ccf8bac..698ab80f00 100644 --- a/tests/table_snapshot/test_table_snapshots.py +++ b/tests_metricflow/table_snapshot/test_table_snapshots.py @@ -9,10 +9,10 @@ from metricflow_semantics.random_id import random_id from metricflow.protocols.sql_client import SqlEngine -from tests.compare_df import assert_dataframes_equal -from tests.fixtures.setup_fixtures import MetricFlowTestConfiguration -from tests.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods -from tests.table_snapshot.table_snapshots import ( +from tests_metricflow.compare_df import assert_dataframes_equal +from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from tests_metricflow.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods +from tests_metricflow.table_snapshot.table_snapshots import ( SqlTableColumnDefinition, SqlTableColumnType, SqlTableSnapshot, diff --git a/tests/telemetry/__init__.py b/tests_metricflow/telemetry/__init__.py similarity index 100% rename from tests/telemetry/__init__.py rename to tests_metricflow/telemetry/__init__.py diff --git a/tests/telemetry/test_telemetry.py b/tests_metricflow/telemetry/test_telemetry.py similarity index 97% rename from tests/telemetry/test_telemetry.py rename to tests_metricflow/telemetry/test_telemetry.py index ab91312e9b..609c7e03bf 100644 --- a/tests/telemetry/test_telemetry.py +++ b/tests_metricflow/telemetry/test_telemetry.py @@ -26,7 +26,7 @@ def test_function() -> str: test_function() start_event = telemetry_reporter.test_handler.payloads[0].function_start_events[0] - assert start_event.module_name == "tests.telemetry.test_telemetry" + assert start_event.module_name == "tests_metricflow.telemetry.test_telemetry" assert start_event.function_name == "test_function" end_event = telemetry_reporter.test_handler.payloads[1].function_end_events[0] diff --git a/tests/test_instance_serialization.py b/tests_metricflow/test_instance_serialization.py similarity index 91% rename from tests/test_instance_serialization.py rename to tests_metricflow/test_instance_serialization.py index 853b9428bb..2d3f4717d3 100644 --- a/tests/test_instance_serialization.py +++ b/tests_metricflow/test_instance_serialization.py @@ -7,7 +7,7 @@ from dbt_semantic_interfaces.dataclass_serialization import DataClassDeserializer, DataclassSerializer from metricflow_semantics.instances import InstanceSet -from tests.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup logger = logging.getLogger(__name__) diff --git a/tests/time/__init__.py b/tests_metricflow/time/__init__.py similarity index 100% rename from tests/time/__init__.py rename to tests_metricflow/time/__init__.py diff --git a/tests/time/metric_time_dimension.py b/tests_metricflow/time/metric_time_dimension.py similarity index 100% rename from tests/time/metric_time_dimension.py rename to tests_metricflow/time/metric_time_dimension.py From 7c17c1ea4edf46f8c255eec878e2b7a0796cff57 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 02:08:10 -0700 Subject: [PATCH 49/80] Update test module name in tests. --- tests_metricflow/telemetry/test_telemetry.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests_metricflow/telemetry/test_telemetry.py b/tests_metricflow/telemetry/test_telemetry.py index 609c7e03bf..749c91d61a 100644 --- a/tests_metricflow/telemetry/test_telemetry.py +++ b/tests_metricflow/telemetry/test_telemetry.py @@ -30,7 +30,7 @@ def test_function() -> str: assert start_event.function_name == "test_function" end_event = telemetry_reporter.test_handler.payloads[1].function_end_events[0] - assert end_event.module_name == "tests.telemetry.test_telemetry" + assert end_event.module_name == "tests_metricflow.telemetry.test_telemetry" assert end_event.function_name == "test_function" assert not end_event.exception_trace assert end_event.runtime > 0 @@ -46,11 +46,11 @@ def test_function() -> str: test_function() start_event = telemetry_reporter.test_handler.payloads[0].function_start_events[0] - assert start_event.module_name == "tests.telemetry.test_telemetry" + assert start_event.module_name == "tests_metricflow.telemetry.test_telemetry" assert start_event.function_name == "test_function" end_event = telemetry_reporter.test_handler.payloads[1].function_end_events[0] - assert end_event.module_name == "tests.telemetry.test_telemetry" + assert end_event.module_name == f"tests_metricflow.telemetry.test_telemetry" assert end_event.function_name == "test_function" assert end_event.exception_trace assert end_event.exception_trace.find("Traceback (most recent call last):") != -1 From f755143405bfb46e89bdb550d3260f55e4a1ebec Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 09:04:06 -0700 Subject: [PATCH 50/80] Split `test_helpers.py` into separate files. --- .../metricflow_semantics/config_helpers.py | 25 ++++++++ .../{test_helpers.py => snapshot_helpers.py} | 58 ++++--------------- .../metricflow_semantics/time_helpers.py | 19 ++++++ tests_metricflow/cli/test_cli.py | 2 +- .../dataflow/builder/test_cyclic_join.py | 2 +- .../builder/test_dataflow_plan_builder.py | 2 +- .../dataflow/builder/test_node_data_set.py | 2 +- .../source_scan/test_cm_branch_combiner.py | 2 +- .../source_scan/test_source_scan_optimizer.py | 2 +- tests_metricflow/dataflow_plan_to_svg.py | 5 +- .../dataset/test_convert_semantic_model.py | 2 +- tests_metricflow/execution/test_tasks.py | 2 +- tests_metricflow/fixtures/cli_fixtures.py | 2 +- .../fixtures/dataflow_fixtures.py | 2 +- .../fixtures/manifest_fixtures.py | 4 +- tests_metricflow/fixtures/setup_fixtures.py | 4 +- .../fixtures/sql_client_fixtures.py | 2 +- tests_metricflow/fixtures/table_fixtures.py | 2 +- tests_metricflow/integration/conftest.py | 4 +- .../query_output/test_cumulative_metrics.py | 2 +- .../query_output/test_fill_nulls_with_0.py | 2 +- .../query_output/test_metric_filter_output.py | 2 +- .../query_output/test_offset_metrics.py | 2 +- .../integration/test_configured_cases.py | 6 +- .../integration/test_mf_engine.py | 2 +- .../integration/test_rendered_query.py | 4 +- .../test_conversion_metrics_to_sql.py | 2 +- .../test_distinct_values_to_sql.py | 2 +- .../test_metric_time_dimension_to_sql.py | 2 +- .../test_dataflow_to_execution.py | 2 +- .../test_dataflow_to_sql_plan.py | 2 +- .../query_rendering/compare_rendered_query.py | 2 +- .../test_cumulative_metric_rendering.py | 2 +- .../test_derived_metric_rendering.py | 2 +- .../test_fill_nulls_with_rendering.py | 2 +- .../test_granularity_date_part_rendering.py | 2 +- .../test_metric_filter_rendering.py | 2 +- .../test_metric_time_without_metrics.py | 2 +- .../query_rendering/test_query_rendering.py | 2 +- .../test_time_spine_join_rendering.py | 2 +- .../semantics/test_linkable_spec_resolver.py | 2 +- .../model/test_data_warehouse_tasks.py | 2 +- .../model/test_semantic_model_container.py | 2 +- .../semantics/query/group_by_item/conftest.py | 2 +- .../test_spec_lookup.py | 2 +- .../resolution_dag/test_resolution_dags.py | 2 +- .../test_available_group_by_items.py | 2 +- .../test_matching_item_for_filters.py | 2 +- .../test_matching_item_for_querying.py | 2 +- .../query/test_ambiguous_entity_path.py | 2 +- .../semantics/query/test_suggestions.py | 2 +- tests_metricflow/snapshot_utils.py | 5 +- tests_metricflow/source_schema_tools.py | 3 +- tests_metricflow/sql/compare_sql_plan.py | 3 +- .../sql/optimizer/test_column_pruner.py | 2 +- .../test_rewriting_sub_query_reducer.py | 2 +- .../sql/optimizer/test_sub_query_reducer.py | 2 +- .../optimizer/test_table_alias_simplifier.py | 2 +- .../sql/test_engine_specific_rendering.py | 2 +- tests_metricflow/sql/test_sql_expr_render.py | 2 +- tests_metricflow/sql/test_sql_plan_render.py | 2 +- .../sql_clients/test_sql_client.py | 2 +- .../table_snapshot/test_source_schema.py | 2 +- .../table_snapshot/test_table_snapshots.py | 2 +- 64 files changed, 127 insertions(+), 117 deletions(-) create mode 100644 metricflow-semantics/metricflow_semantics/config_helpers.py rename metricflow-semantics/metricflow_semantics/{test_helpers.py => snapshot_helpers.py} (83%) create mode 100644 metricflow-semantics/metricflow_semantics/time_helpers.py diff --git a/metricflow-semantics/metricflow_semantics/config_helpers.py b/metricflow-semantics/metricflow_semantics/config_helpers.py new file mode 100644 index 0000000000..c9b829671d --- /dev/null +++ b/metricflow-semantics/metricflow_semantics/config_helpers.py @@ -0,0 +1,25 @@ +from __future__ import annotations + +from dataclasses import dataclass + +from metricflow_semantics.snapshot_helpers import SnapshotConfiguration + + +@dataclass(frozen=True) +class MetricFlowTestConfiguration(SnapshotConfiguration): + """State that is shared between tests during a testing session.""" + + sql_engine_url: str + sql_engine_password: str + # Where MF system tables should be stored. + mf_system_schema: str + # Where tables for test data sets should be stored. + mf_source_schema: str + + # Whether to display the graph associated with a test session in a browser window. + display_graphs: bool + + # The source schema contains tables that are used for running tests. If this is set, a source schema in the SQL + # is created and persisted between runs. The source schema name includes a hash of the tables that should be in + # the schema, so + use_persistent_source_schema: bool diff --git a/metricflow-semantics/metricflow_semantics/test_helpers.py b/metricflow-semantics/metricflow_semantics/snapshot_helpers.py similarity index 83% rename from metricflow-semantics/metricflow_semantics/test_helpers.py rename to metricflow-semantics/metricflow_semantics/snapshot_helpers.py index 28d67e80d7..6f68e1f16f 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers.py +++ b/metricflow-semantics/metricflow_semantics/snapshot_helpers.py @@ -1,6 +1,5 @@ from __future__ import annotations -import datetime import difflib import logging import os @@ -11,25 +10,10 @@ import _pytest.fixtures -from metricflow_semantics.time.time_source import TimeSource +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration logger = logging.getLogger(__name__) -DISPLAY_SNAPSHOTS_CLI_FLAG = "--display-snapshots" -OVERWRITE_SNAPSHOTS_CLI_FLAG = "--overwrite-snapshots" - - -def add_display_snapshots_cli_flag(parser: _pytest.config.argparsing.Parser) -> None: # noqa: D103 - parser.addoption(DISPLAY_SNAPSHOTS_CLI_FLAG, action="store_true", help="Displays snapshots in a browser if set") - - -def add_overwrite_snapshots_cli_flag(parser: _pytest.config.argparsing.Parser) -> None: # noqa: D103 - parser.addoption( - OVERWRITE_SNAPSHOTS_CLI_FLAG, - action="store_true", - help="Overwrites existing snapshots by ones generated during this testing session", - ) - @dataclass(frozen=True) class SnapshotConfiguration: @@ -41,26 +25,6 @@ class SnapshotConfiguration: overwrite_snapshots: bool -@dataclass(frozen=True) -class MetricFlowTestConfiguration(SnapshotConfiguration): - """State that is shared between tests during a testing session.""" - - sql_engine_url: str - sql_engine_password: str - # Where MF system tables should be stored. - mf_system_schema: str - # Where tables for test data sets should be stored. - mf_source_schema: str - - # Whether to display the graph associated with a test session in a browser window. - display_graphs: bool - - # The source schema contains tables that are used for running tests. If this is set, a source schema in the SQL - # is created and persisted between runs. The source schema name includes a hash of the tables that should be in - # the schema, so - use_persistent_source_schema: bool - - def assert_snapshot_text_equal( request: _pytest.fixtures.FixtureRequest, mf_test_configuration: MetricFlowTestConfiguration, @@ -189,15 +153,17 @@ def _exclude_lines_matching_regex(file_contents: str, exclude_line_regex: str) - return "\n".join([line for line in file_contents.split("\n") if not compiled_regex.match(line)]) -class ConfigurableTimeSource(TimeSource): - """A time source that can be configured so that scheduled operations can be simulated in testing.""" +DISPLAY_SNAPSHOTS_CLI_FLAG = "--display-snapshots" +OVERWRITE_SNAPSHOTS_CLI_FLAG = "--overwrite-snapshots" + - def __init__(self, configured_time: datetime.datetime) -> None: # noqa: D107 - self._configured_time = configured_time +def add_display_snapshots_cli_flag(parser: _pytest.config.argparsing.Parser) -> None: # noqa: D103 + parser.addoption(DISPLAY_SNAPSHOTS_CLI_FLAG, action="store_true", help="Displays snapshots in a browser if set") - def get_time(self) -> datetime.datetime: # noqa: D102 - return self._configured_time - def set_time(self, new_time: datetime.datetime) -> datetime.datetime: # noqa: D102 - self._configured_time = new_time - return new_time +def add_overwrite_snapshots_cli_flag(parser: _pytest.config.argparsing.Parser) -> None: # noqa: D103 + parser.addoption( + OVERWRITE_SNAPSHOTS_CLI_FLAG, + action="store_true", + help="Overwrites existing snapshots by ones generated during this testing session", + ) diff --git a/metricflow-semantics/metricflow_semantics/time_helpers.py b/metricflow-semantics/metricflow_semantics/time_helpers.py new file mode 100644 index 0000000000..bcccdc1870 --- /dev/null +++ b/metricflow-semantics/metricflow_semantics/time_helpers.py @@ -0,0 +1,19 @@ +from __future__ import annotations + +import datetime + +from metricflow_semantics.time.time_source import TimeSource + + +class ConfigurableTimeSource(TimeSource): + """A time source that can be configured so that scheduled operations can be simulated in testing.""" + + def __init__(self, configured_time: datetime.datetime) -> None: # noqa: D107 + self._configured_time = configured_time + + def get_time(self) -> datetime.datetime: # noqa: D102 + return self._configured_time + + def set_time(self, new_time: datetime.datetime) -> datetime.datetime: # noqa: D102 + self._configured_time = new_time + return new_time diff --git a/tests_metricflow/cli/test_cli.py b/tests_metricflow/cli/test_cli.py index 479dfbfea7..6e70ac27e7 100644 --- a/tests_metricflow/cli/test_cli.py +++ b/tests_metricflow/cli/test_cli.py @@ -14,6 +14,7 @@ ) from dbt_semantic_interfaces.parsing.objects import YamlConfigFile from dbt_semantic_interfaces.test_utils import base_semantic_manifest_file +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from dbt_metricflow.cli.cli_context import CLIContext from dbt_metricflow.cli.main import ( @@ -28,7 +29,6 @@ ) from metricflow.protocols.sql_client import SqlClient, SqlEngine from tests_metricflow.fixtures.cli_fixtures import MetricFlowCliRunner -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.semantics.model.example_project_configuration import ( EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE, ) diff --git a/tests_metricflow/dataflow/builder/test_cyclic_join.py b/tests_metricflow/dataflow/builder/test_cyclic_join.py index a71e81a067..1c54de6117 100644 --- a/tests_metricflow/dataflow/builder/test_cyclic_join.py +++ b/tests_metricflow/dataflow/builder/test_cyclic_join.py @@ -6,6 +6,7 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import EntityReference +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, @@ -15,7 +16,6 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.fixtures.sql_client_fixtures import sql_client # noqa: F401, F403 from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py b/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py index e7952554b1..37b9139768 100644 --- a/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py @@ -8,6 +8,7 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.errors.error_classes import UnableToSatisfyQueryError from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.query.query_parser import MetricFlowQueryParser @@ -24,7 +25,6 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_QUARTER, MTD_SPEC_WEEK diff --git a/tests_metricflow/dataflow/builder/test_node_data_set.py b/tests_metricflow/dataflow/builder/test_node_data_set.py index eca3be3152..61896702c3 100644 --- a/tests_metricflow/dataflow/builder/test_node_data_set.py +++ b/tests_metricflow/dataflow/builder/test_node_data_set.py @@ -6,6 +6,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelElementReference from metricflow_semantics.aggregation_properties import AggregationState +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.instances import ( InstanceSet, MeasureInstance, @@ -32,7 +33,6 @@ ) from metricflow.sql.sql_table import SqlTable from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_spec_set_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py b/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py index 6601996043..cee7b6329c 100644 --- a/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py +++ b/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py @@ -4,6 +4,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.id_prefix import StaticIdPrefix from metricflow_semantics.dag.mf_dag import DagId from metricflow_semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec @@ -20,7 +21,6 @@ ) from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index 3e29cc7470..f74376cd93 100644 --- a/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -6,6 +6,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver from metricflow_semantics.specs.spec_classes import ( @@ -42,7 +43,6 @@ from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer from metricflow.dataset.dataset_classes import DataSet from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/dataflow_plan_to_svg.py b/tests_metricflow/dataflow_plan_to_svg.py index 3ac12a9ab2..150f038d30 100644 --- a/tests_metricflow/dataflow_plan_to_svg.py +++ b/tests_metricflow/dataflow_plan_to_svg.py @@ -3,10 +3,9 @@ import os from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.dag_visualization import DagGraphT, render_via_graphviz -from metricflow_semantics.test_helpers import snapshot_path_prefix - -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration +from metricflow_semantics.snapshot_helpers import snapshot_path_prefix def display_graph_if_requested( diff --git a/tests_metricflow/dataset/test_convert_semantic_model.py b/tests_metricflow/dataset/test_convert_semantic_model.py index 75c37eb709..c20f1c9cb5 100644 --- a/tests_metricflow/dataset/test_convert_semantic_model.py +++ b/tests_metricflow/dataset/test_convert_semantic_model.py @@ -6,10 +6,10 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelReference +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_spec_set_snapshot_equal from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_equal diff --git a/tests_metricflow/execution/test_tasks.py b/tests_metricflow/execution/test_tasks.py index dbe7307dc7..1e4ae9eef5 100644 --- a/tests_metricflow/execution/test_tasks.py +++ b/tests_metricflow/execution/test_tasks.py @@ -1,6 +1,7 @@ from __future__ import annotations import pandas as pd +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.mf_dag import DagId from metricflow_semantics.random_id import random_id from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters @@ -14,7 +15,6 @@ from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.sql.sql_table import SqlTable from tests_metricflow.compare_df import assert_dataframes_equal -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration def test_read_sql_task(sql_client: SqlClient) -> None: # noqa: D103 diff --git a/tests_metricflow/fixtures/cli_fixtures.py b/tests_metricflow/fixtures/cli_fixtures.py index 7a0519a887..a100148fe7 100644 --- a/tests_metricflow/fixtures/cli_fixtures.py +++ b/tests_metricflow/fixtures/cli_fixtures.py @@ -11,7 +11,7 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.test_utils import as_datetime from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow_semantics.test_helpers import ConfigurableTimeSource +from metricflow_semantics.time_helpers import ConfigurableTimeSource from typing_extensions import override from dbt_metricflow.cli.cli_context import CLIContext diff --git a/tests_metricflow/fixtures/dataflow_fixtures.py b/tests_metricflow/fixtures/dataflow_fixtures.py index ab3fc2e679..e46a4640b2 100644 --- a/tests_metricflow/fixtures/dataflow_fixtures.py +++ b/tests_metricflow/fixtures/dataflow_fixtures.py @@ -3,6 +3,7 @@ from typing import Mapping import pytest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver @@ -10,7 +11,6 @@ from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.fixtures.sql_client_fixtures import sql_client # noqa: F401, F403 """ diff --git a/tests_metricflow/fixtures/manifest_fixtures.py b/tests_metricflow/fixtures/manifest_fixtures.py index 3aeac7a5d2..417b4c7f4f 100644 --- a/tests_metricflow/fixtures/manifest_fixtures.py +++ b/tests_metricflow/fixtures/manifest_fixtures.py @@ -16,10 +16,11 @@ from dbt_semantic_interfaces.protocols import SemanticModel from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow_semantics.test_helpers import ConfigurableTimeSource +from metricflow_semantics.time_helpers import ConfigurableTimeSource from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -32,7 +33,6 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.id_fixtures import IdNumberSpace, patch_id_generators_helper -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration logger = logging.getLogger(__name__) diff --git a/tests_metricflow/fixtures/setup_fixtures.py b/tests_metricflow/fixtures/setup_fixtures.py index f759ef379c..fd7178e015 100644 --- a/tests_metricflow/fixtures/setup_fixtures.py +++ b/tests_metricflow/fixtures/setup_fixtures.py @@ -8,11 +8,11 @@ import _pytest.config import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.random_id import random_id -from metricflow_semantics.test_helpers import ( +from metricflow_semantics.snapshot_helpers import ( DISPLAY_SNAPSHOTS_CLI_FLAG, OVERWRITE_SNAPSHOTS_CLI_FLAG, - MetricFlowTestConfiguration, add_display_snapshots_cli_flag, add_overwrite_snapshots_cli_flag, ) diff --git a/tests_metricflow/fixtures/sql_client_fixtures.py b/tests_metricflow/fixtures/sql_client_fixtures.py index 9a6dbb72e5..fe7cacb52d 100644 --- a/tests_metricflow/fixtures/sql_client_fixtures.py +++ b/tests_metricflow/fixtures/sql_client_fixtures.py @@ -12,7 +12,7 @@ from _pytest.fixtures import FixtureRequest from dbt.adapters.factory import get_adapter_by_type from dbt.cli.main import dbtRunner -from metricflow_semantics.test_helpers import MetricFlowTestConfiguration +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.setup_fixtures import dbt_project_dir, dialect_from_url diff --git a/tests_metricflow/fixtures/table_fixtures.py b/tests_metricflow/fixtures/table_fixtures.py index a3c8d75b42..0dd572c3d5 100644 --- a/tests_metricflow/fixtures/table_fixtures.py +++ b/tests_metricflow/fixtures/table_fixtures.py @@ -5,10 +5,10 @@ from pathlib import Path import pytest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow.plan_conversion.time_spine import TimeSpineSource -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods from tests_metricflow.source_schema_tools import create_tables_listed_in_table_snapshot_repository from tests_metricflow.table_snapshot.table_snapshots import ( diff --git a/tests_metricflow/integration/conftest.py b/tests_metricflow/integration/conftest.py index 995f04c6d7..70e145bd52 100644 --- a/tests_metricflow/integration/conftest.py +++ b/tests_metricflow/integration/conftest.py @@ -4,14 +4,14 @@ import pytest from dbt_semantic_interfaces.test_utils import as_datetime +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow_semantics.test_helpers import ConfigurableTimeSource +from metricflow_semantics.time_helpers import ConfigurableTimeSource from metricflow.engine.metricflow_engine import MetricFlowEngine from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration @dataclass(frozen=True) diff --git a/tests_metricflow/integration/query_output/test_cumulative_metrics.py b/tests_metricflow/integration/query_output/test_cumulative_metrics.py index b5aeb63481..662ba5c004 100644 --- a/tests_metricflow/integration/query_output/test_cumulative_metrics.py +++ b/tests_metricflow/integration/query_output/test_cumulative_metrics.py @@ -5,10 +5,10 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.test_utils import as_datetime +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow.engine.metricflow_engine import MetricFlowQueryRequest from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.integration.conftest import IntegrationTestHelpers from tests_metricflow.snapshot_utils import assert_str_snapshot_equal diff --git a/tests_metricflow/integration/query_output/test_fill_nulls_with_0.py b/tests_metricflow/integration/query_output/test_fill_nulls_with_0.py index 9ab583f998..1aeacbce6e 100644 --- a/tests_metricflow/integration/query_output/test_fill_nulls_with_0.py +++ b/tests_metricflow/integration/query_output/test_fill_nulls_with_0.py @@ -4,10 +4,10 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow.engine.metricflow_engine import MetricFlowQueryRequest from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.integration.conftest import IntegrationTestHelpers from tests_metricflow.snapshot_utils import assert_str_snapshot_equal diff --git a/tests_metricflow/integration/query_output/test_metric_filter_output.py b/tests_metricflow/integration/query_output/test_metric_filter_output.py index c03dd462c2..3adfd3ee5f 100644 --- a/tests_metricflow/integration/query_output/test_metric_filter_output.py +++ b/tests_metricflow/integration/query_output/test_metric_filter_output.py @@ -2,10 +2,10 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow.engine.metricflow_engine import MetricFlowQueryRequest from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.integration.conftest import IntegrationTestHelpers from tests_metricflow.snapshot_utils import assert_str_snapshot_equal diff --git a/tests_metricflow/integration/query_output/test_offset_metrics.py b/tests_metricflow/integration/query_output/test_offset_metrics.py index a5226fbbd3..a0c531dc1a 100644 --- a/tests_metricflow/integration/query_output/test_offset_metrics.py +++ b/tests_metricflow/integration/query_output/test_offset_metrics.py @@ -2,10 +2,10 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow.engine.metricflow_engine import MetricFlowQueryRequest from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.integration.conftest import IntegrationTestHelpers from tests_metricflow.snapshot_utils import assert_str_snapshot_equal diff --git a/tests_metricflow/integration/test_configured_cases.py b/tests_metricflow/integration/test_configured_cases.py index 5b333e3c4c..bd4218413e 100644 --- a/tests_metricflow/integration/test_configured_cases.py +++ b/tests_metricflow/integration/test_configured_cases.py @@ -13,12 +13,11 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.protocols.query_parameter import DimensionOrEntityQueryParameter from metricflow_semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter -from metricflow_semantics.test_helpers import ( - ConfigurableTimeSource, -) +from metricflow_semantics.time_helpers import ConfigurableTimeSource from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest from metricflow.plan_conversion.column_resolver import ( @@ -40,7 +39,6 @@ SqlSubtractTimeIntervalExpression, ) from tests_metricflow.compare_df import assert_dataframes_equal -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.integration.configured_test_case import ( CONFIGURED_INTEGRATION_TESTS_REPOSITORY, IntegrationTestModel, diff --git a/tests_metricflow/integration/test_mf_engine.py b/tests_metricflow/integration/test_mf_engine.py index 47bf04aac3..32a0ccb979 100644 --- a/tests_metricflow/integration/test_mf_engine.py +++ b/tests_metricflow/integration/test_mf_engine.py @@ -1,8 +1,8 @@ from __future__ import annotations from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.integration.conftest import IntegrationTestHelpers from tests_metricflow.snapshot_utils import assert_object_snapshot_equal diff --git a/tests_metricflow/integration/test_rendered_query.py b/tests_metricflow/integration/test_rendered_query.py index 4c94f40615..29ee2da8d8 100644 --- a/tests_metricflow/integration/test_rendered_query.py +++ b/tests_metricflow/integration/test_rendered_query.py @@ -3,13 +3,13 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.test_utils import as_datetime +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow_semantics.test_helpers import ConfigurableTimeSource +from metricflow_semantics.time_helpers import ConfigurableTimeSource from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.integration.conftest import IntegrationTestHelpers from tests_metricflow.snapshot_utils import ( assert_sql_snapshot_equal, diff --git a/tests_metricflow/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py b/tests_metricflow/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py index a88d409f0d..762ac07d77 100644 --- a/tests_metricflow/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py +++ b/tests_metricflow/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py @@ -4,6 +4,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, @@ -14,7 +15,6 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests_metricflow/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests_metricflow/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index 3395d47940..856d314f1d 100644 --- a/tests_metricflow/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests_metricflow/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -4,6 +4,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.references import EntityReference +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver from metricflow_semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec @@ -11,7 +12,6 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.plan_conversion.test_dataflow_to_sql_plan import convert_and_check diff --git a/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index db579cebdb..c69ccedbc8 100644 --- a/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -5,6 +5,7 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import TimeDimensionReference +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.specs.spec_classes import MetricFlowQuerySpec, MetricSpec from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder @@ -12,7 +13,6 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.plan_conversion.test_dataflow_to_sql_plan import convert_and_check from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY diff --git a/tests_metricflow/plan_conversion/test_dataflow_to_execution.py b/tests_metricflow/plan_conversion/test_dataflow_to_execution.py index 018b8501ea..ee654c37e9 100644 --- a/tests_metricflow/plan_conversion/test_dataflow_to_execution.py +++ b/tests_metricflow/plan_conversion/test_dataflow_to_execution.py @@ -2,6 +2,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.specs.spec_classes import ( DimensionSpec, @@ -17,7 +18,6 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_execution_plan_text_equal diff --git a/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py b/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py index 69d7e9c380..a86eecce4d 100644 --- a/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py @@ -9,6 +9,7 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.mf_dag import DagId from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.query.query_parser import MetricFlowQueryParser @@ -52,7 +53,6 @@ from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_from_plan_equal, assert_sql_plan_text_equal from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY diff --git a/tests_metricflow/query_rendering/compare_rendered_query.py b/tests_metricflow/query_rendering/compare_rendered_query.py index 18c2c34116..62da026ca0 100644 --- a/tests_metricflow/query_rendering/compare_rendered_query.py +++ b/tests_metricflow/query_rendering/compare_rendered_query.py @@ -3,6 +3,7 @@ from __future__ import annotations from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.mf_dag import DagId from metricflow.dataflow.dataflow_plan import BaseOutput @@ -10,7 +11,6 @@ from metricflow.protocols.sql_client import SqlClient from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_from_plan_equal diff --git a/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py b/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py index aa0d33d5c6..5c0d28b7cd 100644 --- a/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py +++ b/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py @@ -10,6 +10,7 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver @@ -19,7 +20,6 @@ from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check from tests_metricflow.time.metric_time_dimension import MTD_SPEC_MONTH diff --git a/tests_metricflow/query_rendering/test_derived_metric_rendering.py b/tests_metricflow/query_rendering/test_derived_metric_rendering.py index 146e671685..50c8edffc5 100644 --- a/tests_metricflow/query_rendering/test_derived_metric_rendering.py +++ b/tests_metricflow/query_rendering/test_derived_metric_rendering.py @@ -8,6 +8,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.naming.dunder_scheme import DunderNamingScheme from metricflow_semantics.query.query_parser import MetricFlowQueryParser @@ -20,7 +21,6 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check from tests_metricflow.time.metric_time_dimension import ( MTD_SPEC_DAY, diff --git a/tests_metricflow/query_rendering/test_fill_nulls_with_rendering.py b/tests_metricflow/query_rendering/test_fill_nulls_with_rendering.py index d1fad7ba74..b72233b546 100644 --- a/tests_metricflow/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests_metricflow/query_rendering/test_fill_nulls_with_rendering.py @@ -11,6 +11,7 @@ ) from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.spec_classes import ( DimensionSpec, @@ -23,7 +24,6 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py b/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py index dc13b0c46f..039c8090b9 100644 --- a/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py +++ b/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py @@ -10,6 +10,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, @@ -19,7 +20,6 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests_metricflow/query_rendering/test_metric_filter_rendering.py b/tests_metricflow/query_rendering/test_metric_filter_rendering.py index 18332c819d..52dffdf2b2 100644 --- a/tests_metricflow/query_rendering/test_metric_filter_rendering.py +++ b/tests_metricflow/query_rendering/test_metric_filter_rendering.py @@ -3,12 +3,12 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests_metricflow/query_rendering/test_metric_time_without_metrics.py b/tests_metricflow/query_rendering/test_metric_time_without_metrics.py index 78a5fa29c3..ff9f70cbf6 100644 --- a/tests_metricflow/query_rendering/test_metric_time_without_metrics.py +++ b/tests_metricflow/query_rendering/test_metric_time_without_metrics.py @@ -6,13 +6,13 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.plan_conversion.test_dataflow_to_sql_plan import convert_and_check from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY diff --git a/tests_metricflow/query_rendering/test_query_rendering.py b/tests_metricflow/query_rendering/test_query_rendering.py index 063e574d55..db310bba22 100644 --- a/tests_metricflow/query_rendering/test_query_rendering.py +++ b/tests_metricflow/query_rendering/test_query_rendering.py @@ -15,6 +15,7 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver @@ -29,7 +30,6 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_WEEK diff --git a/tests_metricflow/query_rendering/test_time_spine_join_rendering.py b/tests_metricflow/query_rendering/test_time_spine_join_rendering.py index 8a44b4ec1a..d2c0c66586 100644 --- a/tests_metricflow/query_rendering/test_time_spine_join_rendering.py +++ b/tests_metricflow/query_rendering/test_time_spine_join_rendering.py @@ -11,6 +11,7 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, @@ -20,7 +21,6 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check diff --git a/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py b/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py index 47c32d5db4..7b57964ecb 100644 --- a/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py +++ b/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py @@ -10,6 +10,7 @@ MetricReference, SemanticModelReference, ) +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.model.semantics.linkable_element import ( LinkableElementProperty, @@ -21,7 +22,6 @@ ) from metricflow_semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_spec_set_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/model/test_data_warehouse_tasks.py b/tests_metricflow/semantics/model/test_data_warehouse_tasks.py index 8ef2652715..6fcd5652a7 100644 --- a/tests_metricflow/semantics/model/test_data_warehouse_tasks.py +++ b/tests_metricflow/semantics/model/test_data_warehouse_tasks.py @@ -14,6 +14,7 @@ from dbt_semantic_interfaces.test_utils import semantic_model_with_guaranteed_meta from dbt_semantic_interfaces.transformations.semantic_manifest_transformer import PydanticSemanticManifestTransformer from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.protocols.sql_client import SqlClient @@ -22,7 +23,6 @@ DataWarehouseTaskBuilder, DataWarehouseValidationTask, ) -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import ( assert_sql_snapshot_equal, ) diff --git a/tests_metricflow/semantics/model/test_semantic_model_container.py b/tests_metricflow/semantics/model/test_semantic_model_container.py index fbb25cdb50..0be96d4333 100644 --- a/tests_metricflow/semantics/model/test_semantic_model_container.py +++ b/tests_metricflow/semantics/model/test_semantic_model_container.py @@ -6,11 +6,11 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.references import EntityReference, MeasureReference, MetricReference +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantics.linkable_element import LinkableElementProperty from metricflow_semantics.model.semantics.metric_lookup import MetricLookup from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_object_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/group_by_item/conftest.py b/tests_metricflow/semantics/query/group_by_item/conftest.py index 9c99be39d8..ecc5392336 100644 --- a/tests_metricflow/semantics/query/group_by_item/conftest.py +++ b/tests_metricflow/semantics/query/group_by_item/conftest.py @@ -10,13 +10,13 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.protocols import WhereFilterIntersection from dbt_semantic_interfaces.references import MetricReference +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow_semantics.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId diff --git a/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py b/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py index 4f35181817..900fdb4b68 100644 --- a/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py +++ b/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py @@ -19,6 +19,7 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference from dbt_semantic_interfaces.transformations.transform_rule import SemanticManifestTransformRule +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.mf_logging.pretty_print import mf_pformat from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme @@ -31,7 +32,6 @@ from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_resolver import WhereFilterSpecResolver from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.semantics.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform from tests_metricflow.semantics.model.modify.modify_manifest import modify_manifest from tests_metricflow.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform diff --git a/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py b/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py index ed3493fab5..2bc92718c8 100644 --- a/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py +++ b/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py @@ -5,10 +5,10 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py b/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py index 7ed792bbc3..4c31e74426 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py +++ b/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py @@ -5,12 +5,12 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow_semantics.specs.spec_classes import LinkableSpecSet -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests_metricflow.snapshot_utils import assert_linkable_spec_set_snapshot_equal diff --git a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py index 2e97b9f5ff..736241ccf1 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py +++ b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py @@ -6,13 +6,13 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow_semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests_metricflow.snapshot_utils import assert_object_snapshot_equal diff --git a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py index d3f93cc381..2af81e4692 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py +++ b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py @@ -8,6 +8,7 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme @@ -17,7 +18,6 @@ MetricGroupByItemResolutionNode, ) -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests_metricflow.snapshot_utils import assert_object_snapshot_equal from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_YEAR diff --git a/tests_metricflow/semantics/query/test_ambiguous_entity_path.py b/tests_metricflow/semantics/query/test_ambiguous_entity_path.py index 9b38bc1f42..56b12145c3 100644 --- a/tests_metricflow/semantics/query/test_ambiguous_entity_path.py +++ b/tests_metricflow/semantics/query/test_ambiguous_entity_path.py @@ -4,6 +4,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( DefaultWhereFilterPatternFactory, @@ -11,7 +12,6 @@ from metricflow_semantics.query.query_exceptions import InvalidQueryException from metricflow_semantics.query.query_parser import MetricFlowQueryParser -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_object_snapshot_equal, assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/test_suggestions.py b/tests_metricflow/semantics/query/test_suggestions.py index cb5a8e6f38..eacada13c0 100644 --- a/tests_metricflow/semantics/query/test_suggestions.py +++ b/tests_metricflow/semantics/query/test_suggestions.py @@ -11,12 +11,12 @@ from dbt_semantic_interfaces.implementations.semantic_manifest import PydanticSemanticManifest from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.query_exceptions import InvalidQueryException from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.semantics.model.modify.modify_manifest import modify_manifest from tests_metricflow.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform from tests_metricflow.snapshot_utils import assert_str_snapshot_equal diff --git a/tests_metricflow/snapshot_utils.py b/tests_metricflow/snapshot_utils.py index 4d30aa5e5c..e53ceb6a69 100644 --- a/tests_metricflow/snapshot_utils.py +++ b/tests_metricflow/snapshot_utils.py @@ -6,17 +6,18 @@ import tabulate from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.mf_dag import MetricFlowDag from metricflow_semantics.mf_logging.pretty_print import mf_pformat from metricflow_semantics.model.semantics.linkable_spec_resolver import LinkableElementSet from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.snapshot_helpers import assert_snapshot_text_equal from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet -from metricflow_semantics.test_helpers import assert_snapshot_text_equal from metricflow.dataflow.dataflow_plan import DataflowPlan from metricflow.execution.execution_plan import ExecutionPlan from metricflow.protocols.sql_client import SqlClient, SqlEngine -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker +from tests_metricflow.fixtures.setup_fixtures import check_sql_engine_snapshot_marker logger = logging.getLogger(__name__) diff --git a/tests_metricflow/source_schema_tools.py b/tests_metricflow/source_schema_tools.py index b0c6db79bb..01f73a8134 100644 --- a/tests_metricflow/source_schema_tools.py +++ b/tests_metricflow/source_schema_tools.py @@ -2,8 +2,9 @@ import logging +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration + from metricflow.protocols.sql_client import SqlEngine -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods from tests_metricflow.table_snapshot.table_snapshots import ( SqlTableSnapshotLoader, diff --git a/tests_metricflow/sql/compare_sql_plan.py b/tests_metricflow/sql/compare_sql_plan.py index c6e104fd4b..8b9b6dc2b9 100644 --- a/tests_metricflow/sql/compare_sql_plan.py +++ b/tests_metricflow/sql/compare_sql_plan.py @@ -1,12 +1,13 @@ from __future__ import annotations from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.mf_dag import DagId from metricflow.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer from metricflow.sql.sql_plan import SqlQueryPlan, SqlQueryPlanNode -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration, check_sql_engine_snapshot_marker +from tests_metricflow.fixtures.setup_fixtures import check_sql_engine_snapshot_marker from tests_metricflow.snapshot_utils import ( assert_plan_snapshot_text_equal, make_schema_replacement_function, diff --git a/tests_metricflow/sql/optimizer/test_column_pruner.py b/tests_metricflow/sql/optimizer/test_column_pruner.py index 93f4df658e..2306f17d9b 100644 --- a/tests_metricflow/sql/optimizer/test_column_pruner.py +++ b/tests_metricflow/sql/optimizer/test_column_pruner.py @@ -2,6 +2,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.column_pruner import SqlColumnPrunerOptimizer @@ -22,7 +23,6 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.sql.compare_sql_plan import assert_default_rendered_sql_equal diff --git a/tests_metricflow/sql/optimizer/test_rewriting_sub_query_reducer.py b/tests_metricflow/sql/optimizer/test_rewriting_sub_query_reducer.py index c9a4de859e..75c4c02005 100644 --- a/tests_metricflow/sql/optimizer/test_rewriting_sub_query_reducer.py +++ b/tests_metricflow/sql/optimizer/test_rewriting_sub_query_reducer.py @@ -2,6 +2,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.rewriting_sub_query_reducer import SqlRewritingSubQueryReducer @@ -23,7 +24,6 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.sql.compare_sql_plan import assert_default_rendered_sql_equal diff --git a/tests_metricflow/sql/optimizer/test_sub_query_reducer.py b/tests_metricflow/sql/optimizer/test_sub_query_reducer.py index 5d2130e335..4cd1e635ad 100644 --- a/tests_metricflow/sql/optimizer/test_sub_query_reducer.py +++ b/tests_metricflow/sql/optimizer/test_sub_query_reducer.py @@ -2,6 +2,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.sub_query_reducer import SqlSubQueryReducer @@ -19,7 +20,6 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.sql.compare_sql_plan import assert_default_rendered_sql_equal diff --git a/tests_metricflow/sql/optimizer/test_table_alias_simplifier.py b/tests_metricflow/sql/optimizer/test_table_alias_simplifier.py index 2c690ffffc..80902b6759 100644 --- a/tests_metricflow/sql/optimizer/test_table_alias_simplifier.py +++ b/tests_metricflow/sql/optimizer/test_table_alias_simplifier.py @@ -2,6 +2,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.sql.optimizer.table_alias_simplifier import SqlTableAliasSimplifier @@ -19,7 +20,6 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.sql.compare_sql_plan import assert_default_rendered_sql_equal diff --git a/tests_metricflow/sql/test_engine_specific_rendering.py b/tests_metricflow/sql/test_engine_specific_rendering.py index 503f6fc33a..6b27704753 100644 --- a/tests_metricflow/sql/test_engine_specific_rendering.py +++ b/tests_metricflow/sql/test_engine_specific_rendering.py @@ -4,6 +4,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient from metricflow.sql.sql_exprs import ( @@ -24,7 +25,6 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_equal diff --git a/tests_metricflow/sql/test_sql_expr_render.py b/tests_metricflow/sql/test_sql_expr_render.py index a8e7118e2b..53f036b289 100644 --- a/tests_metricflow/sql/test_sql_expr_render.py +++ b/tests_metricflow/sql/test_sql_expr_render.py @@ -8,6 +8,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow.sql.render.expr_renderer import DefaultSqlExpressionRenderer from metricflow.sql.sql_exprs import ( @@ -33,7 +34,6 @@ SqlWindowFunctionExpression, SqlWindowOrderByArgument, ) -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/sql/test_sql_plan_render.py b/tests_metricflow/sql/test_sql_plan_render.py index 48f7864e40..48ed897425 100644 --- a/tests_metricflow/sql/test_sql_plan_render.py +++ b/tests_metricflow/sql/test_sql_plan_render.py @@ -5,6 +5,7 @@ import pytest from _pytest.fixtures import FixtureRequest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow.protocols.sql_client import SqlClient @@ -26,7 +27,6 @@ SqlTableFromClauseNode, ) from metricflow.sql.sql_table import SqlTable, SqlTableType -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/sql_clients/test_sql_client.py b/tests_metricflow/sql_clients/test_sql_client.py index f37a8cc416..13580557b7 100644 --- a/tests_metricflow/sql_clients/test_sql_client.py +++ b/tests_metricflow/sql_clients/test_sql_client.py @@ -5,13 +5,13 @@ import pandas as pd import pytest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.random_id import random_id from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.sql.sql_table import SqlTable from tests_metricflow.compare_df import assert_dataframes_equal -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods logger = logging.getLogger(__name__) diff --git a/tests_metricflow/table_snapshot/test_source_schema.py b/tests_metricflow/table_snapshot/test_source_schema.py index d41e036134..fb416512a6 100644 --- a/tests_metricflow/table_snapshot/test_source_schema.py +++ b/tests_metricflow/table_snapshot/test_source_schema.py @@ -4,11 +4,11 @@ import warnings import pytest +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.sql.sql_table import SqlTable from tests_metricflow.compare_df import assert_dataframes_equal -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.fixtures.table_fixtures import CONFIGURED_SOURCE_TABLE_SNAPSHOT_REPOSITORY from tests_metricflow.source_schema_tools import get_populate_source_schema_shell_command from tests_metricflow.table_snapshot.table_snapshots import ( diff --git a/tests_metricflow/table_snapshot/test_table_snapshots.py b/tests_metricflow/table_snapshot/test_table_snapshots.py index 698ab80f00..2c6439842a 100644 --- a/tests_metricflow/table_snapshot/test_table_snapshots.py +++ b/tests_metricflow/table_snapshot/test_table_snapshots.py @@ -6,11 +6,11 @@ import pandas as pd import pytest from dbt_semantic_interfaces.test_utils import as_datetime +from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.random_id import random_id from metricflow.protocols.sql_client import SqlEngine from tests_metricflow.compare_df import assert_dataframes_equal -from tests_metricflow.fixtures.setup_fixtures import MetricFlowTestConfiguration from tests_metricflow.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods from tests_metricflow.table_snapshot.table_snapshots import ( SqlTableColumnDefinition, From 5426a610b2d81dd900de324884d1ae5841b10801 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 09:06:47 -0700 Subject: [PATCH 51/80] Move helpers into `test_helpers` module. --- .../metricflow_semantics/test_helpers/__init__.py | 0 .../metricflow_semantics/{ => test_helpers}/config_helpers.py | 2 +- .../{ => test_helpers}/snapshot_helpers.py | 2 +- .../metricflow_semantics/{ => test_helpers}/time_helpers.py | 0 tests_metricflow/cli/test_cli.py | 2 +- tests_metricflow/dataflow/builder/test_cyclic_join.py | 2 +- .../dataflow/builder/test_dataflow_plan_builder.py | 2 +- tests_metricflow/dataflow/builder/test_node_data_set.py | 2 +- .../dataflow/optimizer/source_scan/test_cm_branch_combiner.py | 2 +- .../optimizer/source_scan/test_source_scan_optimizer.py | 2 +- tests_metricflow/dataflow_plan_to_svg.py | 4 ++-- tests_metricflow/dataset/test_convert_semantic_model.py | 2 +- tests_metricflow/execution/test_tasks.py | 2 +- tests_metricflow/fixtures/cli_fixtures.py | 2 +- tests_metricflow/fixtures/dataflow_fixtures.py | 2 +- tests_metricflow/fixtures/manifest_fixtures.py | 4 ++-- tests_metricflow/fixtures/setup_fixtures.py | 4 ++-- tests_metricflow/fixtures/sql_client_fixtures.py | 2 +- tests_metricflow/fixtures/table_fixtures.py | 2 +- tests_metricflow/integration/conftest.py | 4 ++-- .../integration/query_output/test_cumulative_metrics.py | 2 +- .../integration/query_output/test_fill_nulls_with_0.py | 2 +- .../integration/query_output/test_metric_filter_output.py | 2 +- .../integration/query_output/test_offset_metrics.py | 2 +- tests_metricflow/integration/test_configured_cases.py | 4 ++-- tests_metricflow/integration/test_mf_engine.py | 2 +- tests_metricflow/integration/test_rendered_query.py | 4 ++-- .../dataflow_to_sql/test_conversion_metrics_to_sql.py | 2 +- .../dataflow_to_sql/test_distinct_values_to_sql.py | 2 +- .../dataflow_to_sql/test_metric_time_dimension_to_sql.py | 2 +- .../plan_conversion/test_dataflow_to_execution.py | 2 +- tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py | 2 +- tests_metricflow/query_rendering/compare_rendered_query.py | 2 +- .../query_rendering/test_cumulative_metric_rendering.py | 2 +- .../query_rendering/test_derived_metric_rendering.py | 2 +- .../query_rendering/test_fill_nulls_with_rendering.py | 2 +- .../query_rendering/test_granularity_date_part_rendering.py | 2 +- .../query_rendering/test_metric_filter_rendering.py | 2 +- .../query_rendering/test_metric_time_without_metrics.py | 2 +- tests_metricflow/query_rendering/test_query_rendering.py | 2 +- .../query_rendering/test_time_spine_join_rendering.py | 2 +- .../semantics/model/semantics/test_linkable_spec_resolver.py | 2 +- tests_metricflow/semantics/model/test_data_warehouse_tasks.py | 2 +- .../semantics/model/test_semantic_model_container.py | 2 +- tests_metricflow/semantics/query/group_by_item/conftest.py | 2 +- .../group_by_item/filter_spec_resolution/test_spec_lookup.py | 2 +- .../group_by_item/resolution_dag/test_resolution_dags.py | 2 +- .../query/group_by_item/test_available_group_by_items.py | 2 +- .../query/group_by_item/test_matching_item_for_filters.py | 2 +- .../query/group_by_item/test_matching_item_for_querying.py | 2 +- .../semantics/query/test_ambiguous_entity_path.py | 2 +- tests_metricflow/semantics/query/test_suggestions.py | 2 +- tests_metricflow/snapshot_utils.py | 4 ++-- tests_metricflow/source_schema_tools.py | 2 +- tests_metricflow/sql/compare_sql_plan.py | 2 +- tests_metricflow/sql/optimizer/test_column_pruner.py | 2 +- .../sql/optimizer/test_rewriting_sub_query_reducer.py | 2 +- tests_metricflow/sql/optimizer/test_sub_query_reducer.py | 2 +- tests_metricflow/sql/optimizer/test_table_alias_simplifier.py | 2 +- tests_metricflow/sql/test_engine_specific_rendering.py | 2 +- tests_metricflow/sql/test_sql_expr_render.py | 2 +- tests_metricflow/sql/test_sql_plan_render.py | 2 +- tests_metricflow/sql_clients/test_sql_client.py | 2 +- tests_metricflow/table_snapshot/test_source_schema.py | 2 +- tests_metricflow/table_snapshot/test_table_snapshots.py | 2 +- 65 files changed, 70 insertions(+), 70 deletions(-) create mode 100644 metricflow-semantics/metricflow_semantics/test_helpers/__init__.py rename metricflow-semantics/metricflow_semantics/{ => test_helpers}/config_helpers.py (90%) rename metricflow-semantics/metricflow_semantics/{ => test_helpers}/snapshot_helpers.py (98%) rename metricflow-semantics/metricflow_semantics/{ => test_helpers}/time_helpers.py (100%) diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/__init__.py b/metricflow-semantics/metricflow_semantics/test_helpers/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metricflow-semantics/metricflow_semantics/config_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers/config_helpers.py similarity index 90% rename from metricflow-semantics/metricflow_semantics/config_helpers.py rename to metricflow-semantics/metricflow_semantics/test_helpers/config_helpers.py index c9b829671d..926e7f9bed 100644 --- a/metricflow-semantics/metricflow_semantics/config_helpers.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers/config_helpers.py @@ -2,7 +2,7 @@ from dataclasses import dataclass -from metricflow_semantics.snapshot_helpers import SnapshotConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import SnapshotConfiguration @dataclass(frozen=True) diff --git a/metricflow-semantics/metricflow_semantics/snapshot_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py similarity index 98% rename from metricflow-semantics/metricflow_semantics/snapshot_helpers.py rename to metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py index 6f68e1f16f..a158375174 100644 --- a/metricflow-semantics/metricflow_semantics/snapshot_helpers.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py @@ -10,7 +10,7 @@ import _pytest.fixtures -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration logger = logging.getLogger(__name__) diff --git a/metricflow-semantics/metricflow_semantics/time_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers/time_helpers.py similarity index 100% rename from metricflow-semantics/metricflow_semantics/time_helpers.py rename to metricflow-semantics/metricflow_semantics/test_helpers/time_helpers.py diff --git a/tests_metricflow/cli/test_cli.py b/tests_metricflow/cli/test_cli.py index 6e70ac27e7..bf3d78c019 100644 --- a/tests_metricflow/cli/test_cli.py +++ b/tests_metricflow/cli/test_cli.py @@ -14,7 +14,7 @@ ) from dbt_semantic_interfaces.parsing.objects import YamlConfigFile from dbt_semantic_interfaces.test_utils import base_semantic_manifest_file -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from dbt_metricflow.cli.cli_context import CLIContext from dbt_metricflow.cli.main import ( diff --git a/tests_metricflow/dataflow/builder/test_cyclic_join.py b/tests_metricflow/dataflow/builder/test_cyclic_join.py index 1c54de6117..911a44767f 100644 --- a/tests_metricflow/dataflow/builder/test_cyclic_join.py +++ b/tests_metricflow/dataflow/builder/test_cyclic_join.py @@ -6,12 +6,12 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import EntityReference -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, ) +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested diff --git a/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py b/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py index 37b9139768..70ff7b14e5 100644 --- a/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py @@ -8,7 +8,6 @@ from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.errors.error_classes import UnableToSatisfyQueryError from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.query.query_parser import MetricFlowQueryParser @@ -21,6 +20,7 @@ OrderBySpec, TimeDimensionSpec, ) +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet diff --git a/tests_metricflow/dataflow/builder/test_node_data_set.py b/tests_metricflow/dataflow/builder/test_node_data_set.py index 61896702c3..add7477b3a 100644 --- a/tests_metricflow/dataflow/builder/test_node_data_set.py +++ b/tests_metricflow/dataflow/builder/test_node_data_set.py @@ -6,7 +6,6 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelElementReference from metricflow_semantics.aggregation_properties import AggregationState -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.instances import ( InstanceSet, MeasureInstance, @@ -18,6 +17,7 @@ MeasureSpec, ) from metricflow_semantics.sql.sql_join_type import SqlJoinType +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode diff --git a/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py b/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py index cee7b6329c..841303ba69 100644 --- a/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py +++ b/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py @@ -4,10 +4,10 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.id_prefix import StaticIdPrefix from metricflow_semantics.dag.mf_dag import DagId from metricflow_semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.dataflow_plan import ( BaseOutput, diff --git a/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index f74376cd93..e589775d34 100644 --- a/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -6,7 +6,6 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver from metricflow_semantics.specs.spec_classes import ( @@ -15,6 +14,7 @@ MetricFlowQuerySpec, MetricSpec, ) +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.dataflow_plan import ( diff --git a/tests_metricflow/dataflow_plan_to_svg.py b/tests_metricflow/dataflow_plan_to_svg.py index 150f038d30..f018a63540 100644 --- a/tests_metricflow/dataflow_plan_to_svg.py +++ b/tests_metricflow/dataflow_plan_to_svg.py @@ -3,9 +3,9 @@ import os from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.dag_visualization import DagGraphT, render_via_graphviz -from metricflow_semantics.snapshot_helpers import snapshot_path_prefix +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import snapshot_path_prefix def display_graph_if_requested( diff --git a/tests_metricflow/dataset/test_convert_semantic_model.py b/tests_metricflow/dataset/test_convert_semantic_model.py index c20f1c9cb5..86e36a3b45 100644 --- a/tests_metricflow/dataset/test_convert_semantic_model.py +++ b/tests_metricflow/dataset/test_convert_semantic_model.py @@ -6,7 +6,7 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelReference -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests_metricflow/execution/test_tasks.py b/tests_metricflow/execution/test_tasks.py index 1e4ae9eef5..4ee893e5d3 100644 --- a/tests_metricflow/execution/test_tasks.py +++ b/tests_metricflow/execution/test_tasks.py @@ -1,10 +1,10 @@ from __future__ import annotations import pandas as pd -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.mf_dag import DagId from metricflow_semantics.random_id import random_id from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.execution.execution_plan import ( ExecutionPlan, diff --git a/tests_metricflow/fixtures/cli_fixtures.py b/tests_metricflow/fixtures/cli_fixtures.py index a100148fe7..80049b0c9b 100644 --- a/tests_metricflow/fixtures/cli_fixtures.py +++ b/tests_metricflow/fixtures/cli_fixtures.py @@ -11,7 +11,7 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.test_utils import as_datetime from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow_semantics.time_helpers import ConfigurableTimeSource +from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource from typing_extensions import override from dbt_metricflow.cli.cli_context import CLIContext diff --git a/tests_metricflow/fixtures/dataflow_fixtures.py b/tests_metricflow/fixtures/dataflow_fixtures.py index e46a4640b2..540065b162 100644 --- a/tests_metricflow/fixtures/dataflow_fixtures.py +++ b/tests_metricflow/fixtures/dataflow_fixtures.py @@ -3,9 +3,9 @@ from typing import Mapping import pytest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.time_spine import TimeSpineSource diff --git a/tests_metricflow/fixtures/manifest_fixtures.py b/tests_metricflow/fixtures/manifest_fixtures.py index 417b4c7f4f..ac6e07e316 100644 --- a/tests_metricflow/fixtures/manifest_fixtures.py +++ b/tests_metricflow/fixtures/manifest_fixtures.py @@ -16,11 +16,11 @@ from dbt_semantic_interfaces.protocols import SemanticModel from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver -from metricflow_semantics.time_helpers import ConfigurableTimeSource +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver diff --git a/tests_metricflow/fixtures/setup_fixtures.py b/tests_metricflow/fixtures/setup_fixtures.py index fd7178e015..3d441d9c83 100644 --- a/tests_metricflow/fixtures/setup_fixtures.py +++ b/tests_metricflow/fixtures/setup_fixtures.py @@ -8,9 +8,9 @@ import _pytest.config import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.random_id import random_id -from metricflow_semantics.snapshot_helpers import ( +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import ( DISPLAY_SNAPSHOTS_CLI_FLAG, OVERWRITE_SNAPSHOTS_CLI_FLAG, add_display_snapshots_cli_flag, diff --git a/tests_metricflow/fixtures/sql_client_fixtures.py b/tests_metricflow/fixtures/sql_client_fixtures.py index fe7cacb52d..428578e527 100644 --- a/tests_metricflow/fixtures/sql_client_fixtures.py +++ b/tests_metricflow/fixtures/sql_client_fixtures.py @@ -12,7 +12,7 @@ from _pytest.fixtures import FixtureRequest from dbt.adapters.factory import get_adapter_by_type from dbt.cli.main import dbtRunner -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.setup_fixtures import dbt_project_dir, dialect_from_url diff --git a/tests_metricflow/fixtures/table_fixtures.py b/tests_metricflow/fixtures/table_fixtures.py index 0dd572c3d5..27e1e4bcad 100644 --- a/tests_metricflow/fixtures/table_fixtures.py +++ b/tests_metricflow/fixtures/table_fixtures.py @@ -5,8 +5,8 @@ from pathlib import Path import pytest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.plan_conversion.time_spine import TimeSpineSource from tests_metricflow.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods diff --git a/tests_metricflow/integration/conftest.py b/tests_metricflow/integration/conftest.py index 70e145bd52..036529c942 100644 --- a/tests_metricflow/integration/conftest.py +++ b/tests_metricflow/integration/conftest.py @@ -4,9 +4,9 @@ import pytest from dbt_semantic_interfaces.test_utils import as_datetime -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow_semantics.time_helpers import ConfigurableTimeSource +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource from metricflow.engine.metricflow_engine import MetricFlowEngine from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver diff --git a/tests_metricflow/integration/query_output/test_cumulative_metrics.py b/tests_metricflow/integration/query_output/test_cumulative_metrics.py index 662ba5c004..a09e051b2a 100644 --- a/tests_metricflow/integration/query_output/test_cumulative_metrics.py +++ b/tests_metricflow/integration/query_output/test_cumulative_metrics.py @@ -5,7 +5,7 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.test_utils import as_datetime -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.engine.metricflow_engine import MetricFlowQueryRequest from metricflow.protocols.sql_client import SqlClient diff --git a/tests_metricflow/integration/query_output/test_fill_nulls_with_0.py b/tests_metricflow/integration/query_output/test_fill_nulls_with_0.py index 1aeacbce6e..60ed835d01 100644 --- a/tests_metricflow/integration/query_output/test_fill_nulls_with_0.py +++ b/tests_metricflow/integration/query_output/test_fill_nulls_with_0.py @@ -4,7 +4,7 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.engine.metricflow_engine import MetricFlowQueryRequest from metricflow.protocols.sql_client import SqlClient diff --git a/tests_metricflow/integration/query_output/test_metric_filter_output.py b/tests_metricflow/integration/query_output/test_metric_filter_output.py index 3adfd3ee5f..2c8868604e 100644 --- a/tests_metricflow/integration/query_output/test_metric_filter_output.py +++ b/tests_metricflow/integration/query_output/test_metric_filter_output.py @@ -2,7 +2,7 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.engine.metricflow_engine import MetricFlowQueryRequest from metricflow.protocols.sql_client import SqlClient diff --git a/tests_metricflow/integration/query_output/test_offset_metrics.py b/tests_metricflow/integration/query_output/test_offset_metrics.py index a0c531dc1a..0e1c793a52 100644 --- a/tests_metricflow/integration/query_output/test_offset_metrics.py +++ b/tests_metricflow/integration/query_output/test_offset_metrics.py @@ -2,7 +2,7 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.engine.metricflow_engine import MetricFlowQueryRequest from metricflow.protocols.sql_client import SqlClient diff --git a/tests_metricflow/integration/test_configured_cases.py b/tests_metricflow/integration/test_configured_cases.py index bd4218413e..e48efead83 100644 --- a/tests_metricflow/integration/test_configured_cases.py +++ b/tests_metricflow/integration/test_configured_cases.py @@ -13,11 +13,11 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.protocols.query_parameter import DimensionOrEntityQueryParameter from metricflow_semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter -from metricflow_semantics.time_helpers import ConfigurableTimeSource +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest from metricflow.plan_conversion.column_resolver import ( diff --git a/tests_metricflow/integration/test_mf_engine.py b/tests_metricflow/integration/test_mf_engine.py index 32a0ccb979..9aa1373701 100644 --- a/tests_metricflow/integration/test_mf_engine.py +++ b/tests_metricflow/integration/test_mf_engine.py @@ -1,7 +1,7 @@ from __future__ import annotations from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from tests_metricflow.integration.conftest import IntegrationTestHelpers from tests_metricflow.snapshot_utils import assert_object_snapshot_equal diff --git a/tests_metricflow/integration/test_rendered_query.py b/tests_metricflow/integration/test_rendered_query.py index 29ee2da8d8..f5bec91b9a 100644 --- a/tests_metricflow/integration/test_rendered_query.py +++ b/tests_metricflow/integration/test_rendered_query.py @@ -3,9 +3,9 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.test_utils import as_datetime -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup -from metricflow_semantics.time_helpers import ConfigurableTimeSource +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver diff --git a/tests_metricflow/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py b/tests_metricflow/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py index 762ac07d77..fc3138738a 100644 --- a/tests_metricflow/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py +++ b/tests_metricflow/plan_conversion/dataflow_to_sql/test_conversion_metrics_to_sql.py @@ -4,13 +4,13 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.specs.spec_classes import ( DimensionSpec, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec, ) +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter diff --git a/tests_metricflow/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py b/tests_metricflow/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py index 856d314f1d..a7771e4c97 100644 --- a/tests_metricflow/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py +++ b/tests_metricflow/plan_conversion/dataflow_to_sql/test_distinct_values_to_sql.py @@ -4,10 +4,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.references import EntityReference -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver from metricflow_semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter diff --git a/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index c69ccedbc8..821dc38267 100644 --- a/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -5,8 +5,8 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import TimeDimensionReference -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.specs.spec_classes import MetricFlowQuerySpec, MetricSpec +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode diff --git a/tests_metricflow/plan_conversion/test_dataflow_to_execution.py b/tests_metricflow/plan_conversion/test_dataflow_to_execution.py index ee654c37e9..f7bc4eafb1 100644 --- a/tests_metricflow/plan_conversion/test_dataflow_to_execution.py +++ b/tests_metricflow/plan_conversion/test_dataflow_to_execution.py @@ -2,7 +2,6 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.specs.spec_classes import ( DimensionSpec, @@ -11,6 +10,7 @@ MetricSpec, TimeDimensionSpec, ) +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.execution.dataflow_to_execution import DataflowToExecutionPlanConverter diff --git a/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py b/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py index a86eecce4d..8a952d60ed 100644 --- a/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py @@ -9,7 +9,6 @@ from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.mf_dag import DagId from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.query.query_parser import MetricFlowQueryParser @@ -30,6 +29,7 @@ ) from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow_semantics.sql.sql_join_type import SqlJoinType +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.dataflow_plan import ( diff --git a/tests_metricflow/query_rendering/compare_rendered_query.py b/tests_metricflow/query_rendering/compare_rendered_query.py index 62da026ca0..3647ab12fc 100644 --- a/tests_metricflow/query_rendering/compare_rendered_query.py +++ b/tests_metricflow/query_rendering/compare_rendered_query.py @@ -3,8 +3,8 @@ from __future__ import annotations from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.mf_dag import DagId +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.dataflow_plan import BaseOutput from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter diff --git a/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py b/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py index 5c0d28b7cd..a513edc11a 100644 --- a/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py +++ b/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py @@ -10,11 +10,11 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver from metricflow_semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter diff --git a/tests_metricflow/query_rendering/test_derived_metric_rendering.py b/tests_metricflow/query_rendering/test_derived_metric_rendering.py index 50c8edffc5..58a1beb82b 100644 --- a/tests_metricflow/query_rendering/test_derived_metric_rendering.py +++ b/tests_metricflow/query_rendering/test_derived_metric_rendering.py @@ -8,7 +8,6 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.naming.dunder_scheme import DunderNamingScheme from metricflow_semantics.query.query_parser import MetricFlowQueryParser @@ -17,6 +16,7 @@ MetricFlowQuerySpec, MetricSpec, ) +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter diff --git a/tests_metricflow/query_rendering/test_fill_nulls_with_rendering.py b/tests_metricflow/query_rendering/test_fill_nulls_with_rendering.py index b72233b546..ae903803c6 100644 --- a/tests_metricflow/query_rendering/test_fill_nulls_with_rendering.py +++ b/tests_metricflow/query_rendering/test_fill_nulls_with_rendering.py @@ -11,7 +11,6 @@ ) from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.spec_classes import ( DimensionSpec, @@ -19,6 +18,7 @@ MetricSpec, TimeDimensionSpec, ) +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet diff --git a/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py b/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py index 039c8090b9..b4bfd33a7c 100644 --- a/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py +++ b/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py @@ -10,11 +10,11 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, ) +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet diff --git a/tests_metricflow/query_rendering/test_metric_filter_rendering.py b/tests_metricflow/query_rendering/test_metric_filter_rendering.py index 52dffdf2b2..ee1869a727 100644 --- a/tests_metricflow/query_rendering/test_metric_filter_rendering.py +++ b/tests_metricflow/query_rendering/test_metric_filter_rendering.py @@ -3,8 +3,8 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.implementations.filters.where_filter import PydanticWhereFilter -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter diff --git a/tests_metricflow/query_rendering/test_metric_time_without_metrics.py b/tests_metricflow/query_rendering/test_metric_time_without_metrics.py index ff9f70cbf6..3ffa314760 100644 --- a/tests_metricflow/query_rendering/test_metric_time_without_metrics.py +++ b/tests_metricflow/query_rendering/test_metric_time_without_metrics.py @@ -6,9 +6,9 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter diff --git a/tests_metricflow/query_rendering/test_query_rendering.py b/tests_metricflow/query_rendering/test_query_rendering.py index db310bba22..8773e4120a 100644 --- a/tests_metricflow/query_rendering/test_query_rendering.py +++ b/tests_metricflow/query_rendering/test_query_rendering.py @@ -15,7 +15,6 @@ from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.test_utils import as_datetime from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver @@ -25,6 +24,7 @@ MetricSpec, TimeDimensionSpec, ) +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet diff --git a/tests_metricflow/query_rendering/test_time_spine_join_rendering.py b/tests_metricflow/query_rendering/test_time_spine_join_rendering.py index d2c0c66586..58a07c9f2e 100644 --- a/tests_metricflow/query_rendering/test_time_spine_join_rendering.py +++ b/tests_metricflow/query_rendering/test_time_spine_join_rendering.py @@ -11,11 +11,11 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.specs.spec_classes import ( MetricFlowQuerySpec, MetricSpec, ) +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet diff --git a/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py b/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py index 7b57964ecb..4121cdf786 100644 --- a/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py +++ b/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py @@ -10,7 +10,6 @@ MetricReference, SemanticModelReference, ) -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.model.semantics.linkable_element import ( LinkableElementProperty, @@ -21,6 +20,7 @@ ValidLinkableSpecResolver, ) from metricflow_semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_spec_set_snapshot_equal diff --git a/tests_metricflow/semantics/model/test_data_warehouse_tasks.py b/tests_metricflow/semantics/model/test_data_warehouse_tasks.py index 6fcd5652a7..e07996f6d7 100644 --- a/tests_metricflow/semantics/model/test_data_warehouse_tasks.py +++ b/tests_metricflow/semantics/model/test_data_warehouse_tasks.py @@ -14,8 +14,8 @@ from dbt_semantic_interfaces.test_utils import semantic_model_with_guaranteed_meta from dbt_semantic_interfaces.transformations.semantic_manifest_transformer import PydanticSemanticManifestTransformer from dbt_semantic_interfaces.type_enums.aggregation_type import AggregationType -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient from metricflow.validation.data_warehouse_model_validator import ( diff --git a/tests_metricflow/semantics/model/test_semantic_model_container.py b/tests_metricflow/semantics/model/test_semantic_model_container.py index 0be96d4333..91600948e0 100644 --- a/tests_metricflow/semantics/model/test_semantic_model_container.py +++ b/tests_metricflow/semantics/model/test_semantic_model_container.py @@ -6,10 +6,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.references import EntityReference, MeasureReference, MetricReference -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantics.linkable_element import LinkableElementProperty from metricflow_semantics.model.semantics.metric_lookup import MetricLookup from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_object_snapshot_equal diff --git a/tests_metricflow/semantics/query/group_by_item/conftest.py b/tests_metricflow/semantics/query/group_by_item/conftest.py index ecc5392336..9d286f497e 100644 --- a/tests_metricflow/semantics/query/group_by_item/conftest.py +++ b/tests_metricflow/semantics/query/group_by_item/conftest.py @@ -10,12 +10,12 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.protocols import WhereFilterIntersection from dbt_semantic_interfaces.references import MetricReference -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow_semantics.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from tests_metricflow.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId diff --git a/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py b/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py index 900fdb4b68..4dfae17581 100644 --- a/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py +++ b/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py @@ -19,7 +19,6 @@ from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference from dbt_semantic_interfaces.transformations.transform_rule import SemanticManifestTransformRule -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.mf_logging.pretty_print import mf_pformat from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme @@ -31,6 +30,7 @@ ) from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_resolver import WhereFilterSpecResolver from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from tests_metricflow.semantics.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform from tests_metricflow.semantics.model.modify.modify_manifest import modify_manifest diff --git a/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py b/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py index 2bc92718c8..818ed6bd10 100644 --- a/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py +++ b/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py @@ -5,9 +5,9 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from tests_metricflow.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal diff --git a/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py b/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py index 4c31e74426..9382fdb655 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py +++ b/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py @@ -5,11 +5,11 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow_semantics.specs.spec_classes import LinkableSpecSet +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests_metricflow.snapshot_utils import assert_linkable_spec_set_snapshot_equal diff --git a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py index 736241ccf1..6ddfee79cf 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py +++ b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py @@ -6,12 +6,12 @@ import pytest from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow_semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests_metricflow.snapshot_utils import assert_object_snapshot_equal diff --git a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py index 2af81e4692..c366c1ec1d 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py +++ b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py @@ -8,7 +8,6 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.naming.naming_scheme import QueryItemNamingScheme from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme @@ -17,6 +16,7 @@ from metricflow_semantics.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import ( MetricGroupByItemResolutionNode, ) +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId from tests_metricflow.snapshot_utils import assert_object_snapshot_equal diff --git a/tests_metricflow/semantics/query/test_ambiguous_entity_path.py b/tests_metricflow/semantics/query/test_ambiguous_entity_path.py index 56b12145c3..7ce2699bd4 100644 --- a/tests_metricflow/semantics/query/test_ambiguous_entity_path.py +++ b/tests_metricflow/semantics/query/test_ambiguous_entity_path.py @@ -4,13 +4,13 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_pattern_factory import ( DefaultWhereFilterPatternFactory, ) from metricflow_semantics.query.query_exceptions import InvalidQueryException from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from tests_metricflow.snapshot_utils import assert_object_snapshot_equal, assert_str_snapshot_equal diff --git a/tests_metricflow/semantics/query/test_suggestions.py b/tests_metricflow/semantics/query/test_suggestions.py index eacada13c0..37bc804544 100644 --- a/tests_metricflow/semantics/query/test_suggestions.py +++ b/tests_metricflow/semantics/query/test_suggestions.py @@ -11,10 +11,10 @@ from dbt_semantic_interfaces.implementations.semantic_manifest import PydanticSemanticManifest from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME from dbt_semantic_interfaces.references import MetricReference -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.query_exceptions import InvalidQueryException from metricflow_semantics.query.query_parser import MetricFlowQueryParser +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from tests_metricflow.semantics.model.modify.modify_manifest import modify_manifest diff --git a/tests_metricflow/snapshot_utils.py b/tests_metricflow/snapshot_utils.py index e53ceb6a69..f490788c1e 100644 --- a/tests_metricflow/snapshot_utils.py +++ b/tests_metricflow/snapshot_utils.py @@ -6,13 +6,13 @@ import tabulate from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.mf_dag import MetricFlowDag from metricflow_semantics.mf_logging.pretty_print import mf_pformat from metricflow_semantics.model.semantics.linkable_spec_resolver import LinkableElementSet from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow_semantics.snapshot_helpers import assert_snapshot_text_equal from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_snapshot_text_equal from metricflow.dataflow.dataflow_plan import DataflowPlan from metricflow.execution.execution_plan import ExecutionPlan diff --git a/tests_metricflow/source_schema_tools.py b/tests_metricflow/source_schema_tools.py index 01f73a8134..3a3a96d410 100644 --- a/tests_metricflow/source_schema_tools.py +++ b/tests_metricflow/source_schema_tools.py @@ -2,7 +2,7 @@ import logging -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlEngine from tests_metricflow.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods diff --git a/tests_metricflow/sql/compare_sql_plan.py b/tests_metricflow/sql/compare_sql_plan.py index 8b9b6dc2b9..a230ce6c8d 100644 --- a/tests_metricflow/sql/compare_sql_plan.py +++ b/tests_metricflow/sql/compare_sql_plan.py @@ -1,8 +1,8 @@ from __future__ import annotations from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.dag.mf_dag import DagId +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer diff --git a/tests_metricflow/sql/optimizer/test_column_pruner.py b/tests_metricflow/sql/optimizer/test_column_pruner.py index 2306f17d9b..51f870a661 100644 --- a/tests_metricflow/sql/optimizer/test_column_pruner.py +++ b/tests_metricflow/sql/optimizer/test_column_pruner.py @@ -2,8 +2,8 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.sql.sql_join_type import SqlJoinType +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.sql.optimizer.column_pruner import SqlColumnPrunerOptimizer from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer diff --git a/tests_metricflow/sql/optimizer/test_rewriting_sub_query_reducer.py b/tests_metricflow/sql/optimizer/test_rewriting_sub_query_reducer.py index 75c4c02005..1dc7f88546 100644 --- a/tests_metricflow/sql/optimizer/test_rewriting_sub_query_reducer.py +++ b/tests_metricflow/sql/optimizer/test_rewriting_sub_query_reducer.py @@ -2,8 +2,8 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.sql.sql_join_type import SqlJoinType +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.sql.optimizer.rewriting_sub_query_reducer import SqlRewritingSubQueryReducer from metricflow.sql.sql_exprs import ( diff --git a/tests_metricflow/sql/optimizer/test_sub_query_reducer.py b/tests_metricflow/sql/optimizer/test_sub_query_reducer.py index 4cd1e635ad..ed90796054 100644 --- a/tests_metricflow/sql/optimizer/test_sub_query_reducer.py +++ b/tests_metricflow/sql/optimizer/test_sub_query_reducer.py @@ -2,8 +2,8 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.sql.sql_join_type import SqlJoinType +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.sql.optimizer.sub_query_reducer import SqlSubQueryReducer from metricflow.sql.sql_exprs import ( diff --git a/tests_metricflow/sql/optimizer/test_table_alias_simplifier.py b/tests_metricflow/sql/optimizer/test_table_alias_simplifier.py index 80902b6759..c734f07bd7 100644 --- a/tests_metricflow/sql/optimizer/test_table_alias_simplifier.py +++ b/tests_metricflow/sql/optimizer/test_table_alias_simplifier.py @@ -2,8 +2,8 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.sql.sql_join_type import SqlJoinType +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.sql.optimizer.table_alias_simplifier import SqlTableAliasSimplifier from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer, SqlQueryPlanRenderer diff --git a/tests_metricflow/sql/test_engine_specific_rendering.py b/tests_metricflow/sql/test_engine_specific_rendering.py index 6b27704753..8bc1133e35 100644 --- a/tests_metricflow/sql/test_engine_specific_rendering.py +++ b/tests_metricflow/sql/test_engine_specific_rendering.py @@ -4,7 +4,7 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient from metricflow.sql.sql_exprs import ( diff --git a/tests_metricflow/sql/test_sql_expr_render.py b/tests_metricflow/sql/test_sql_expr_render.py index 53f036b289..7e6ba4cb6e 100644 --- a/tests_metricflow/sql/test_sql_expr_render.py +++ b/tests_metricflow/sql/test_sql_expr_render.py @@ -8,7 +8,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.sql.render.expr_renderer import DefaultSqlExpressionRenderer from metricflow.sql.sql_exprs import ( diff --git a/tests_metricflow/sql/test_sql_plan_render.py b/tests_metricflow/sql/test_sql_plan_render.py index 48ed897425..55e1cd4764 100644 --- a/tests_metricflow/sql/test_sql_plan_render.py +++ b/tests_metricflow/sql/test_sql_plan_render.py @@ -5,8 +5,8 @@ import pytest from _pytest.fixtures import FixtureRequest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.sql.sql_join_type import SqlJoinType +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient from metricflow.sql.sql_exprs import ( diff --git a/tests_metricflow/sql_clients/test_sql_client.py b/tests_metricflow/sql_clients/test_sql_client.py index 13580557b7..241886f47d 100644 --- a/tests_metricflow/sql_clients/test_sql_client.py +++ b/tests_metricflow/sql_clients/test_sql_client.py @@ -5,9 +5,9 @@ import pandas as pd import pytest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.random_id import random_id from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.sql.sql_table import SqlTable diff --git a/tests_metricflow/table_snapshot/test_source_schema.py b/tests_metricflow/table_snapshot/test_source_schema.py index fb416512a6..1eb03ed1e6 100644 --- a/tests_metricflow/table_snapshot/test_source_schema.py +++ b/tests_metricflow/table_snapshot/test_source_schema.py @@ -4,7 +4,7 @@ import warnings import pytest -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlClient, SqlEngine from metricflow.sql.sql_table import SqlTable diff --git a/tests_metricflow/table_snapshot/test_table_snapshots.py b/tests_metricflow/table_snapshot/test_table_snapshots.py index 2c6439842a..f9b89476af 100644 --- a/tests_metricflow/table_snapshot/test_table_snapshots.py +++ b/tests_metricflow/table_snapshot/test_table_snapshots.py @@ -6,8 +6,8 @@ import pandas as pd import pytest from dbt_semantic_interfaces.test_utils import as_datetime -from metricflow_semantics.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.random_id import random_id +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.protocols.sql_client import SqlEngine from tests_metricflow.compare_df import assert_dataframes_equal From 3d9aba35df91218aa624ac31797fe41a8e6f3913 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 09:10:04 -0700 Subject: [PATCH 52/80] Change signature of `assert_snapshot_text_equal` to use `SnapshotConfiguration`. --- .../metricflow_semantics/test_helpers/snapshot_helpers.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py index a158375174..edef60e35f 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py @@ -10,8 +10,6 @@ import _pytest.fixtures -from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration - logger = logging.getLogger(__name__) @@ -27,7 +25,7 @@ class SnapshotConfiguration: def assert_snapshot_text_equal( request: _pytest.fixtures.FixtureRequest, - mf_test_configuration: MetricFlowTestConfiguration, + mf_test_configuration: SnapshotConfiguration, group_id: str, snapshot_id: str, snapshot_text: str, From 2b87c7456be59567ef673fbf652df3171a6bfc86 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 09:16:40 -0700 Subject: [PATCH 53/80] Move `load_semantic_manifest` to `manifest_helpers.py`. --- .../test_helpers/manifest_helpers.py | 25 +++++++++++++++++++ .../fixtures/manifest_fixtures.py | 23 ++--------------- tests_metricflow/telemetry/test_telemetry.py | 2 +- 3 files changed, 28 insertions(+), 22 deletions(-) create mode 100644 metricflow-semantics/metricflow_semantics/test_helpers/manifest_helpers.py diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/manifest_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers/manifest_helpers.py new file mode 100644 index 0000000000..ffe71dd088 --- /dev/null +++ b/metricflow-semantics/metricflow_semantics/test_helpers/manifest_helpers.py @@ -0,0 +1,25 @@ +from __future__ import annotations + +import os +from typing import Dict, Optional + +from dbt_semantic_interfaces.implementations.semantic_manifest import PydanticSemanticManifest +from dbt_semantic_interfaces.parsing.dir_to_model import ( + SemanticManifestBuildResult, + parse_directory_of_yaml_files_to_semantic_manifest, +) +from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator + + +def load_semantic_manifest( + relative_manifest_path: str, + template_mapping: Optional[Dict[str, str]] = None, +) -> SemanticManifestBuildResult: + """Reads the manifest YAMLs from the standard location, applies transformations, runs validations.""" + yaml_file_directory = os.path.join(os.path.dirname(__file__), f"semantic_manifest_yamls/{relative_manifest_path}") + build_result = parse_directory_of_yaml_files_to_semantic_manifest( + yaml_file_directory, template_mapping=template_mapping + ) + validator = SemanticManifestValidator[PydanticSemanticManifest]() + validator.checked_validations(build_result.semantic_manifest) + return build_result diff --git a/tests_metricflow/fixtures/manifest_fixtures.py b/tests_metricflow/fixtures/manifest_fixtures.py index ac6e07e316..fe05958dff 100644 --- a/tests_metricflow/fixtures/manifest_fixtures.py +++ b/tests_metricflow/fixtures/manifest_fixtures.py @@ -1,25 +1,20 @@ from __future__ import annotations import logging -import os from collections import OrderedDict from dataclasses import dataclass from enum import Enum -from typing import Dict, Mapping, Optional, Sequence +from typing import Dict, Mapping, Sequence import pytest from dbt_semantic_interfaces.implementations.semantic_manifest import PydanticSemanticManifest -from dbt_semantic_interfaces.parsing.dir_to_model import ( - SemanticManifestBuildResult, - parse_directory_of_yaml_files_to_semantic_manifest, -) from dbt_semantic_interfaces.protocols import SemanticModel from dbt_semantic_interfaces.test_utils import as_datetime -from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.manifest_helpers import load_semantic_manifest from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder @@ -236,20 +231,6 @@ def mf_engine_test_fixture_mapping( return fixture_mapping -def load_semantic_manifest( - relative_manifest_path: str, - template_mapping: Optional[Dict[str, str]] = None, -) -> SemanticManifestBuildResult: - """Reads the manifest YAMLs from the standard location, applies transformations, runs validations.""" - yaml_file_directory = os.path.join(os.path.dirname(__file__), f"semantic_manifest_yamls/{relative_manifest_path}") - build_result = parse_directory_of_yaml_files_to_semantic_manifest( - yaml_file_directory, template_mapping=template_mapping - ) - validator = SemanticManifestValidator[PydanticSemanticManifest]() - validator.checked_validations(build_result.semantic_manifest) - return build_result - - @pytest.fixture(scope="session") def template_mapping(mf_test_configuration: MetricFlowTestConfiguration) -> Dict[str, str]: """Mapping for template variables in the model YAML files.""" diff --git a/tests_metricflow/telemetry/test_telemetry.py b/tests_metricflow/telemetry/test_telemetry.py index 749c91d61a..acd720359a 100644 --- a/tests_metricflow/telemetry/test_telemetry.py +++ b/tests_metricflow/telemetry/test_telemetry.py @@ -50,7 +50,7 @@ def test_function() -> str: assert start_event.function_name == "test_function" end_event = telemetry_reporter.test_handler.payloads[1].function_end_events[0] - assert end_event.module_name == f"tests_metricflow.telemetry.test_telemetry" + assert end_event.module_name == "tests_metricflow.telemetry.test_telemetry" assert end_event.function_name == "test_function" assert end_event.exception_trace assert end_event.exception_trace.find("Traceback (most recent call last):") != -1 From 03138494e7680ea14c5aec98a58bba983b3d69f0 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 09:20:27 -0700 Subject: [PATCH 54/80] Move `semantic_manifest_yamls` to `test_helpers`. --- .../ambiguous_resolution_manifest/metrics.yaml | 0 .../ambiguous_resolution_manifest/project_configuration.yaml | 0 .../semantic_models/monthly_measures_source.yaml | 0 .../semantic_models/yearly_measures_source.yaml | 0 .../multiple_semantic_models_without_divider.yml | 0 .../config_linter_manifest/project_configuration.yaml | 0 .../cyclic_join_manifest/listings_latest.yaml | 0 .../cyclic_join_manifest/listings_latest_cyclic.yaml | 0 .../cyclic_join_manifest/project_configuration.yaml | 0 .../data_warehouse_validation_manifest/project_configuration.yaml | 0 .../semantic_models/semantic_model1.yml | 0 .../extended_date_manifest/metrics/bookings_cumulative.yaml | 0 .../extended_date_manifest/metrics/bookings_last_month.yaml | 0 .../metrics/bookings_monthly_cumulative.yaml | 0 .../extended_date_manifest/project_configuration.yaml | 0 .../semantic_models/bookings_monthly_source.yaml | 0 .../semantic_models/extended_bookings_source.yaml | 0 .../semantic_models/listings_extended_source.yaml | 0 .../join_types_manifest/bookings_source.yaml | 0 .../join_types_manifest/listings_source.yaml | 0 .../join_types_manifest/project_configuration.yaml | 0 .../multi_hop_join_manifest/account_month_txns.yaml | 0 .../multi_hop_join_manifest/bridge_table.yaml | 0 .../multi_hop_join_manifest/customer_other_data.yaml | 0 .../multi_hop_join_manifest/customer_table.yaml | 0 .../multi_hop_join_manifest/project_configuration.yaml | 0 .../multi_hop_join_manifest/third_hop_table.yaml | 0 .../semantic_manifest_yamls/non_sm_manifest/bookings_source.yaml | 0 .../semantic_manifest_yamls/non_sm_manifest/listings_latest.yaml | 0 .../non_sm_manifest/project_configuration.yaml | 0 .../partitioned_multi_hop_join_manifest/account_month_txns.yaml | 0 .../partitioned_multi_hop_join_manifest/bridge_table.yaml | 0 .../partitioned_multi_hop_join_manifest/customer_other_data.yaml | 0 .../partitioned_multi_hop_join_manifest/customer_table.yaml | 0 .../project_configuration.yaml | 0 .../partitioned_multi_hop_join_manifest/third_hop_table.yaml | 0 .../scd_manifest/project_configuration.yaml | 0 .../semantic_manifest_yamls/scd_manifest/scd_accounts.yaml | 0 .../semantic_manifest_yamls/scd_manifest/scd_bookings.yaml | 0 .../semantic_manifest_yamls/scd_manifest/scd_companies.yaml | 0 .../semantic_manifest_yamls/scd_manifest/scd_listings.yaml | 0 .../semantic_manifest_yamls/scd_manifest/scd_lux_listings.yaml | 0 .../semantic_manifest_yamls/scd_manifest/scd_metrics.yaml | 0 .../semantic_manifest_yamls/scd_manifest/scd_users.yaml | 0 .../semantic_manifest_yamls/shared/project_configuration.yaml | 0 .../semantic_manifest_yamls/simple_manifest/metrics.yaml | 0 .../simple_manifest/project_configuration.yaml | 0 .../semantic_manifest_yamls/simple_manifest/saved_queries.yaml | 0 .../simple_manifest/semantic_models/accounts_source.yaml | 0 .../simple_manifest/semantic_models/bookings_source.yaml | 0 .../simple_manifest/semantic_models/buys_source.yaml | 0 .../simple_manifest/semantic_models/companies.yaml | 0 .../simple_manifest/semantic_models/id_verifications.yaml | 0 .../simple_manifest/semantic_models/listings_latest.yaml | 0 .../simple_manifest/semantic_models/lux_listing_mapping.yaml | 0 .../simple_manifest/semantic_models/revenue.yaml | 0 .../simple_manifest/semantic_models/user_sm_source.yaml | 0 .../simple_manifest/semantic_models/users_latest.yaml | 0 .../simple_manifest/semantic_models/views_source.yaml | 0 .../simple_manifest/semantic_models/visits_source.yaml | 0 .../simple_multi_hop_join_manifest/all_entity_measure_source.yaml | 0 .../simple_multi_hop_join_manifest/entity_0_dimension_source.yaml | 0 .../simple_multi_hop_join_manifest/entity_0_measure_source.yaml | 0 .../entity_1_and_entity_2_measure_source.yaml | 0 .../simple_multi_hop_join_manifest/entity_1_dimension_source.yaml | 0 .../simple_multi_hop_join_manifest/entity_1_measure_source.yaml | 0 .../entity_1_to_entity_0_mapping_source.yaml | 0 .../entity_2_to_entity_0_mapping_source.yaml | 0 .../simple_multi_hop_join_manifest/metrics.yaml | 0 .../simple_multi_hop_join_manifest/project_configuration.yaml | 0 70 files changed, 0 insertions(+), 0 deletions(-) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/ambiguous_resolution_manifest/metrics.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/ambiguous_resolution_manifest/project_configuration.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/monthly_measures_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/yearly_measures_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/config_linter_manifest/multiple_semantic_models_without_divider.yml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/config_linter_manifest/project_configuration.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/cyclic_join_manifest/listings_latest.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/cyclic_join_manifest/listings_latest_cyclic.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/cyclic_join_manifest/project_configuration.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/data_warehouse_validation_manifest/project_configuration.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/data_warehouse_validation_manifest/semantic_models/semantic_model1.yml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_cumulative.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_last_month.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_monthly_cumulative.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/extended_date_manifest/project_configuration.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/extended_date_manifest/semantic_models/bookings_monthly_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/extended_date_manifest/semantic_models/extended_bookings_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/extended_date_manifest/semantic_models/listings_extended_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/join_types_manifest/bookings_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/join_types_manifest/listings_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/join_types_manifest/project_configuration.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/multi_hop_join_manifest/account_month_txns.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/multi_hop_join_manifest/bridge_table.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/multi_hop_join_manifest/customer_other_data.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/multi_hop_join_manifest/customer_table.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/multi_hop_join_manifest/project_configuration.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/multi_hop_join_manifest/third_hop_table.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/non_sm_manifest/bookings_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/non_sm_manifest/listings_latest.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/non_sm_manifest/project_configuration.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/account_month_txns.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/bridge_table.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_other_data.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_table.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/project_configuration.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/third_hop_table.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/scd_manifest/project_configuration.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/scd_manifest/scd_accounts.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/scd_manifest/scd_bookings.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/scd_manifest/scd_companies.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/scd_manifest/scd_listings.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/scd_manifest/scd_lux_listings.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/scd_manifest/scd_metrics.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/scd_manifest/scd_users.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/shared/project_configuration.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/metrics.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/project_configuration.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/saved_queries.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/semantic_models/accounts_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/semantic_models/bookings_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/semantic_models/buys_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/semantic_models/companies.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/semantic_models/id_verifications.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/semantic_models/listings_latest.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/semantic_models/lux_listing_mapping.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/semantic_models/revenue.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/semantic_models/users_latest.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/semantic_models/views_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_manifest/semantic_models/visits_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_multi_hop_join_manifest/all_entity_measure_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_dimension_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_measure_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_dimension_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_measure_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_source.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_multi_hop_join_manifest/metrics.yaml (100%) rename {tests_metricflow/fixtures => metricflow-semantics/metricflow_semantics/test_helpers}/semantic_manifest_yamls/simple_multi_hop_join_manifest/project_configuration.yaml (100%) diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/metrics.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/ambiguous_resolution_manifest/metrics.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/metrics.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/ambiguous_resolution_manifest/metrics.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/ambiguous_resolution_manifest/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/ambiguous_resolution_manifest/project_configuration.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/monthly_measures_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/monthly_measures_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/monthly_measures_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/monthly_measures_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/yearly_measures_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/yearly_measures_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/yearly_measures_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/ambiguous_resolution_manifest/semantic_models/yearly_measures_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/config_linter_manifest/multiple_semantic_models_without_divider.yml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/config_linter_manifest/multiple_semantic_models_without_divider.yml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/config_linter_manifest/multiple_semantic_models_without_divider.yml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/config_linter_manifest/multiple_semantic_models_without_divider.yml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/config_linter_manifest/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/config_linter_manifest/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/config_linter_manifest/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/config_linter_manifest/project_configuration.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/cyclic_join_manifest/listings_latest.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/cyclic_join_manifest/listings_latest.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest_cyclic.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/cyclic_join_manifest/listings_latest_cyclic.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/cyclic_join_manifest/listings_latest_cyclic.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/cyclic_join_manifest/listings_latest_cyclic.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/cyclic_join_manifest/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/cyclic_join_manifest/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/cyclic_join_manifest/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/cyclic_join_manifest/project_configuration.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/data_warehouse_validation_manifest/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/data_warehouse_validation_manifest/project_configuration.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/semantic_models/semantic_model1.yml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/data_warehouse_validation_manifest/semantic_models/semantic_model1.yml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/data_warehouse_validation_manifest/semantic_models/semantic_model1.yml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/data_warehouse_validation_manifest/semantic_models/semantic_model1.yml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_cumulative.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_cumulative.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_cumulative.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_cumulative.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_last_month.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_last_month.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_last_month.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_last_month.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_monthly_cumulative.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_monthly_cumulative.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_monthly_cumulative.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/metrics/bookings_monthly_cumulative.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/project_configuration.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/bookings_monthly_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/semantic_models/bookings_monthly_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/bookings_monthly_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/semantic_models/bookings_monthly_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/extended_bookings_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/semantic_models/extended_bookings_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/extended_bookings_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/semantic_models/extended_bookings_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/listings_extended_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/semantic_models/listings_extended_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/extended_date_manifest/semantic_models/listings_extended_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/extended_date_manifest/semantic_models/listings_extended_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/join_types_manifest/bookings_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/join_types_manifest/bookings_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/join_types_manifest/bookings_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/join_types_manifest/bookings_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/join_types_manifest/listings_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/join_types_manifest/listings_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/join_types_manifest/listings_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/join_types_manifest/listings_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/join_types_manifest/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/join_types_manifest/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/join_types_manifest/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/join_types_manifest/project_configuration.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/account_month_txns.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/multi_hop_join_manifest/account_month_txns.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/account_month_txns.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/multi_hop_join_manifest/account_month_txns.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/bridge_table.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/multi_hop_join_manifest/bridge_table.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/bridge_table.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/multi_hop_join_manifest/bridge_table.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_other_data.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/multi_hop_join_manifest/customer_other_data.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_other_data.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/multi_hop_join_manifest/customer_other_data.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_table.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/multi_hop_join_manifest/customer_table.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/customer_table.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/multi_hop_join_manifest/customer_table.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/multi_hop_join_manifest/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/multi_hop_join_manifest/project_configuration.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/third_hop_table.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/multi_hop_join_manifest/third_hop_table.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/multi_hop_join_manifest/third_hop_table.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/multi_hop_join_manifest/third_hop_table.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/non_sm_manifest/bookings_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/non_sm_manifest/bookings_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/non_sm_manifest/bookings_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/non_sm_manifest/bookings_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/non_sm_manifest/listings_latest.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/non_sm_manifest/listings_latest.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/non_sm_manifest/listings_latest.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/non_sm_manifest/listings_latest.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/non_sm_manifest/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/non_sm_manifest/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/non_sm_manifest/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/non_sm_manifest/project_configuration.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/account_month_txns.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/account_month_txns.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/account_month_txns.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/account_month_txns.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/bridge_table.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/bridge_table.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/bridge_table.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/bridge_table.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_other_data.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_other_data.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_other_data.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_other_data.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_table.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_table.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_table.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/customer_table.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/project_configuration.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/third_hop_table.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/third_hop_table.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/third_hop_table.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/partitioned_multi_hop_join_manifest/third_hop_table.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/project_configuration.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_accounts.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_accounts.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_accounts.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_accounts.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_bookings.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_bookings.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_bookings.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_bookings.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_companies.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_companies.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_companies.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_companies.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_listings.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_listings.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_listings.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_listings.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_lux_listings.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_lux_listings.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_lux_listings.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_lux_listings.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_metrics.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_metrics.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_metrics.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_metrics.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_users.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_users.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/scd_manifest/scd_users.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/scd_manifest/scd_users.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/shared/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/shared/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/shared/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/shared/project_configuration.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/metrics.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/metrics.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/metrics.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/metrics.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/project_configuration.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/saved_queries.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/saved_queries.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/saved_queries.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/saved_queries.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/accounts_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/accounts_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/accounts_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/accounts_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/bookings_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/bookings_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/bookings_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/bookings_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/buys_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/buys_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/buys_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/buys_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/companies.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/companies.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/companies.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/companies.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/id_verifications.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/id_verifications.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/id_verifications.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/id_verifications.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/listings_latest.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/listings_latest.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/listings_latest.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/listings_latest.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/lux_listing_mapping.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/lux_listing_mapping.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/lux_listing_mapping.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/lux_listing_mapping.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/revenue.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/revenue.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/revenue.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/revenue.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/users_latest.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/users_latest.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/users_latest.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/users_latest.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/views_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/views_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/views_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/views_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/visits_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/visits_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_manifest/semantic_models/visits_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/visits_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/all_entity_measure_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/all_entity_measure_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/all_entity_measure_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/all_entity_measure_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_dimension_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_dimension_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_dimension_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_dimension_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_measure_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_measure_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_measure_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_0_measure_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_and_entity_2_measure_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_dimension_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_dimension_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_dimension_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_dimension_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_measure_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_measure_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_measure_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_measure_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_1_to_entity_0_mapping_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_source.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_source.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/entity_2_to_entity_0_mapping_source.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/metrics.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/metrics.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/metrics.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/metrics.yaml diff --git a/tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/project_configuration.yaml similarity index 100% rename from tests_metricflow/fixtures/semantic_manifest_yamls/simple_multi_hop_join_manifest/project_configuration.yaml rename to metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_multi_hop_join_manifest/project_configuration.yaml From d6d3cfc8e8b9ea6e7779fffc60a466b5aabdae21 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 09:37:07 -0700 Subject: [PATCH 55/80] Add `DirectoryAnchor` and use new manifest YAML dir. --- .../test_helpers/config_helpers.py | 21 +++++++++++++++++++ .../test_helpers/manifest_helpers.py | 15 ++++++++++--- .../semantic_manifest_yamls/__init__.py | 5 +++++ 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/__init__.py diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/config_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers/config_helpers.py index 926e7f9bed..e15d7c5bbc 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers/config_helpers.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers/config_helpers.py @@ -1,5 +1,6 @@ from __future__ import annotations +import pathlib from dataclasses import dataclass from metricflow_semantics.test_helpers.snapshot_helpers import SnapshotConfiguration @@ -23,3 +24,23 @@ class MetricFlowTestConfiguration(SnapshotConfiguration): # is created and persisted between runs. The source schema name includes a hash of the tables that should be in # the schema, so use_persistent_source_schema: bool + + +class DirectoryPathAnchor: + """Defines a directory inside the repo. + + Using this object allows you to avoid using hard-coded paths and instead use objects that will be handled properly + during refactoring. + """ + + def __init__(self, path_to_file_in_directory: str) -> None: + """Initializer. + + Args: + path_to_file_in_directory: To be used with `__file__`. + """ + self._directory = pathlib.Path(path_to_file_in_directory).parent + + @property + def directory(self) -> pathlib.Path: # noqa: D102 + return self._directory diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/manifest_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers/manifest_helpers.py index ffe71dd088..f7e3a8ae13 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers/manifest_helpers.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers/manifest_helpers.py @@ -1,6 +1,5 @@ from __future__ import annotations -import os from typing import Dict, Optional from dbt_semantic_interfaces.implementations.semantic_manifest import PydanticSemanticManifest @@ -10,16 +9,26 @@ ) from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator +from metricflow_semantics.test_helpers.semantic_manifest_yamls import SEMANTIC_MANIFEST_YAMLS_PATH_ANCHOR + def load_semantic_manifest( relative_manifest_path: str, template_mapping: Optional[Dict[str, str]] = None, ) -> SemanticManifestBuildResult: """Reads the manifest YAMLs from the standard location, applies transformations, runs validations.""" - yaml_file_directory = os.path.join(os.path.dirname(__file__), f"semantic_manifest_yamls/{relative_manifest_path}") + yaml_file_directory = SEMANTIC_MANIFEST_YAMLS_PATH_ANCHOR.directory.joinpath(relative_manifest_path) build_result = parse_directory_of_yaml_files_to_semantic_manifest( - yaml_file_directory, template_mapping=template_mapping + str(yaml_file_directory), template_mapping=template_mapping ) validator = SemanticManifestValidator[PydanticSemanticManifest]() validator.checked_validations(build_result.semantic_manifest) return build_result + + +def load_named_manifest(template_mapping: Dict[str, str], manifest_name: str) -> PydanticSemanticManifest: # noqa: D103 + try: + build_result = load_semantic_manifest(manifest_name, template_mapping) + return build_result.semantic_manifest + except Exception as e: + raise RuntimeError(f"Error while loading semantic manifest: {manifest_name}") from e diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/__init__.py b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/__init__.py new file mode 100644 index 0000000000..d16f5a283f --- /dev/null +++ b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/__init__.py @@ -0,0 +1,5 @@ +from __future__ import annotations + +from metricflow_semantics.test_helpers.config_helpers import DirectoryPathAnchor + +SEMANTIC_MANIFEST_YAMLS_PATH_ANCHOR = DirectoryPathAnchor(__file__) From d58a95332bbb499742a093cbb3891ac6df7f5c68 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 09:51:44 -0700 Subject: [PATCH 56/80] Move `assert_*_snapshot*` to `snapshot_helpers`. --- .../test_helpers/snapshot_helpers.py | 176 ++++++++++++++++- .../dataflow/builder/test_cyclic_join.py | 2 +- .../builder/test_dataflow_plan_builder.py | 2 +- .../dataflow/builder/test_node_data_set.py | 2 +- .../source_scan/test_cm_branch_combiner.py | 2 +- .../source_scan/test_source_scan_optimizer.py | 2 +- .../dataset/test_convert_semantic_model.py | 2 +- .../test_dataflow_to_sql_plan.py | 2 +- .../semantics/test_linkable_spec_resolver.py | 6 +- .../model/test_semantic_model_container.py | 5 +- .../resolution_dag/test_resolution_dags.py | 2 +- .../test_available_group_by_items.py | 2 +- tests_metricflow/snapshot_utils.py | 178 +----------------- tests_metricflow/sql/compare_sql_plan.py | 8 +- 14 files changed, 203 insertions(+), 188 deletions(-) diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py index edef60e35f..1741e25c78 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py @@ -6,9 +6,19 @@ import re import webbrowser from dataclasses import dataclass -from typing import Callable, List, Optional, Tuple +from typing import Callable, List, Optional, Tuple, TypeVar import _pytest.fixtures +import tabulate +from _pytest.fixtures import FixtureRequest + +from metricflow_semantics.dag.mf_dag import MetricFlowDag +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.semantics.linkable_element_set import LinkableElementSet +from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme +from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from tests_metricflow.snapshot_utils import assert_object_snapshot_equal, assert_str_snapshot_equal logger = logging.getLogger(__name__) @@ -165,3 +175,167 @@ def add_overwrite_snapshots_cli_flag(parser: _pytest.config.argparsing.Parser) - action="store_true", help="Overwrites existing snapshots by ones generated during this testing session", ) + + +# In plan outputs, replace strings that vary from run to run with this so that comparisons can be made +# consistently. +PLACEHOLDER_CHAR_FOR_INCOMPARABLE_STRINGS = "*" + + +def make_schema_replacement_function(system_schema: str, source_schema: str) -> Callable[[str], str]: + """Generates a function to replace schema names in test outputs.""" + + # The schema of the warehouse used in tests changes from run to run, so don't compare those. + def replacement_function(text: str) -> str: + # Replace with a string of the same length so that indents are preserved. + text = text.replace(source_schema, PLACEHOLDER_CHAR_FOR_INCOMPARABLE_STRINGS * len(source_schema)) + # Same with the MetricFlow system schema. + return text.replace(system_schema, PLACEHOLDER_CHAR_FOR_INCOMPARABLE_STRINGS * len(system_schema)) + + return replacement_function + + +def replace_dataset_id_hash(text: str) -> str: + """Replaces data set ID hashes for primed semantic models. + + The data set ID hash changes from run to run because it's based on the DW schema in the semantic model, which changes + run to run. + """ + pattern = re.compile(r"'[a-zA-Z0-9_]+__[a-zA-Z0-9_]+__(?P[a-zA-Z0-9_]+)'") + while True: + match = pattern.search(text) + if match: + data_set_id_hash = match.group("hash") + # Replace with the same length to preserve indents + text = text.replace(data_set_id_hash, PLACEHOLDER_CHAR_FOR_INCOMPARABLE_STRINGS * len(data_set_id_hash)) + else: + break + return text + + +PlanT = TypeVar("PlanT", bound=MetricFlowDag) + + +def assert_plan_snapshot_text_equal( + request: FixtureRequest, + mf_test_configuration: MetricFlowTestConfiguration, + plan: PlanT, + plan_snapshot_text: str, + plan_snapshot_file_extension: str = ".xml", + exclude_line_regex: Optional[str] = None, + incomparable_strings_replacement_function: Optional[Callable[[str], str]] = None, + additional_sub_directories_for_snapshots: Tuple[str, ...] = (), +) -> None: + """Checks if the given plan text is equal to the one that's saved for comparison. + + * The location of the file is automatically generated based on the test and the plan's ID. + * This may create a new saved plan file or overwrite the existing one, depending on the configuration. + * replace_incomparable_strings is used to replace strings in the plan text before comparison. Useful for making + plans consistent when there are strings that vary between runs and shouldn't be compared. + * additional_sub_directories_for_snapshots is used to specify additional sub-directories (in the automatically + generated directory) where plan outputs should reside. + + TODO: Make this more generic by renaming plan -> DAG. + """ + assert_snapshot_text_equal( + request=request, + mf_test_configuration=mf_test_configuration, + group_id=plan.__class__.__name__, + snapshot_id=str(plan.dag_id), + snapshot_text=plan_snapshot_text, + snapshot_file_extension=plan_snapshot_file_extension, + exclude_line_regex=exclude_line_regex, + incomparable_strings_replacement_function=incomparable_strings_replacement_function, + additional_sub_directories_for_snapshots=additional_sub_directories_for_snapshots, + ) + + +def assert_linkable_element_set_snapshot_equal( # noqa: D103 + request: FixtureRequest, + mf_test_configuration: MetricFlowTestConfiguration, + set_id: str, + linkable_element_set: LinkableElementSet, +) -> None: + headers = ("Semantic Model", "Entity Links", "Name", "Time Granularity", "Date Part", "Properties") + rows = [] + for linkable_dimension_iterable in linkable_element_set.path_key_to_linkable_dimensions.values(): + for linkable_dimension in linkable_dimension_iterable: + rows.append( + ( + # Checking a limited set of fields as the result is large due to the paths in the object. + ( + linkable_dimension.semantic_model_origin.semantic_model_name + if linkable_dimension.semantic_model_origin + else None + ), + tuple(entity_link.element_name for entity_link in linkable_dimension.entity_links), + linkable_dimension.element_name, + linkable_dimension.time_granularity.name if linkable_dimension.time_granularity is not None else "", + linkable_dimension.date_part.name if linkable_dimension.date_part is not None else "", + sorted( + linkable_element_property.name for linkable_element_property in linkable_dimension.properties + ), + ) + ) + + for linkable_entity_iterable in linkable_element_set.path_key_to_linkable_entities.values(): + for linkable_entity in linkable_entity_iterable: + rows.append( + ( + # Checking a limited set of fields as the result is large due to the paths in the object. + linkable_entity.semantic_model_origin.semantic_model_name, + tuple(entity_link.element_name for entity_link in linkable_entity.entity_links), + linkable_entity.element_name, + "", + "", + sorted(linkable_element_property.name for linkable_element_property in linkable_entity.properties), + ) + ) + + for linkable_metric_iterable in linkable_element_set.path_key_to_linkable_metrics.values(): + for linkable_metric in linkable_metric_iterable: + rows.append( + ( + # Checking a limited set of fields as the result is large due to the paths in the object. + linkable_metric.join_by_semantic_model.semantic_model_name, + tuple(entity_link.element_name for entity_link in linkable_entity.entity_links), + linkable_metric.element_name, + "", + "", + sorted(linkable_element_property.name for linkable_element_property in linkable_metric.properties), + ) + ) + + assert_str_snapshot_equal( + request=request, + mf_test_configuration=mf_test_configuration, + snapshot_id=set_id, + snapshot_str=tabulate.tabulate(headers=headers, tabular_data=sorted(rows)), + ) + + +def assert_spec_set_snapshot_equal( # noqa: D103 + request: FixtureRequest, mf_test_configuration: MetricFlowTestConfiguration, set_id: str, spec_set: InstanceSpecSet +) -> None: + assert_object_snapshot_equal( + request=request, + mf_test_configuration=mf_test_configuration, + obj_id=set_id, + obj=sorted(spec.qualified_name for spec in spec_set.all_specs), + ) + + +def assert_linkable_spec_set_snapshot_equal( # noqa: D103 + request: FixtureRequest, mf_test_configuration: MetricFlowTestConfiguration, set_id: str, spec_set: LinkableSpecSet +) -> None: + # TODO: This will be used in a later PR and this message will be removed. + naming_scheme = ObjectBuilderNamingScheme() + assert_snapshot_text_equal( + request=request, + mf_test_configuration=mf_test_configuration, + group_id=spec_set.__class__.__name__, + snapshot_id=set_id, + snapshot_text=mf_pformat(sorted(naming_scheme.input_str(spec) for spec in spec_set.as_tuple)), + snapshot_file_extension=".txt", + additional_sub_directories_for_snapshots=(), + ) diff --git a/tests_metricflow/dataflow/builder/test_cyclic_join.py b/tests_metricflow/dataflow/builder/test_cyclic_join.py index 911a44767f..10eb9758b9 100644 --- a/tests_metricflow/dataflow/builder/test_cyclic_join.py +++ b/tests_metricflow/dataflow/builder/test_cyclic_join.py @@ -12,12 +12,12 @@ MetricSpec, ) from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_plan_snapshot_text_equal from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests_metricflow.fixtures.sql_client_fixtures import sql_client # noqa: F401, F403 -from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py b/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py index 70ff7b14e5..8118347075 100644 --- a/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py @@ -21,11 +21,11 @@ TimeDimensionSpec, ) from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_plan_snapshot_text_equal from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested -from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_QUARTER, MTD_SPEC_WEEK logger = logging.getLogger(__name__) diff --git a/tests_metricflow/dataflow/builder/test_node_data_set.py b/tests_metricflow/dataflow/builder/test_node_data_set.py index add7477b3a..f3982c8b4b 100644 --- a/tests_metricflow/dataflow/builder/test_node_data_set.py +++ b/tests_metricflow/dataflow/builder/test_node_data_set.py @@ -18,6 +18,7 @@ ) from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_spec_set_snapshot_equal from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode @@ -33,7 +34,6 @@ ) from metricflow.sql.sql_table import SqlTable from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests_metricflow.snapshot_utils import assert_spec_set_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py b/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py index 841303ba69..56aca18e6c 100644 --- a/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py +++ b/tests_metricflow/dataflow/optimizer/source_scan/test_cm_branch_combiner.py @@ -8,6 +8,7 @@ from metricflow_semantics.dag.mf_dag import DagId from metricflow_semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_plan_snapshot_text_equal from metricflow.dataflow.dataflow_plan import ( BaseOutput, @@ -21,7 +22,6 @@ ) from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal def make_dataflow_plan(node: BaseOutput) -> DataflowPlan: # noqa: D103 diff --git a/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py b/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py index e589775d34..1cb33ee108 100644 --- a/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py +++ b/tests_metricflow/dataflow/optimizer/source_scan/test_source_scan_optimizer.py @@ -15,6 +15,7 @@ MetricSpec, ) from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_plan_snapshot_text_equal from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.dataflow_plan import ( @@ -43,7 +44,6 @@ from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer from metricflow.dataset.dataset_classes import DataSet from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested -from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/dataset/test_convert_semantic_model.py b/tests_metricflow/dataset/test_convert_semantic_model.py index 86e36a3b45..1a3b2e5c74 100644 --- a/tests_metricflow/dataset/test_convert_semantic_model.py +++ b/tests_metricflow/dataset/test_convert_semantic_model.py @@ -7,10 +7,10 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelReference from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_spec_set_snapshot_equal from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests_metricflow.snapshot_utils import assert_spec_set_snapshot_equal from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py b/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py index 8a952d60ed..1acb2d1485 100644 --- a/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py @@ -30,6 +30,7 @@ from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_plan_snapshot_text_equal from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.dataflow_plan import ( @@ -53,7 +54,6 @@ from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup -from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_from_plan_equal, assert_sql_plan_text_equal from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY diff --git a/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py b/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py index 4121cdf786..cce2e574c7 100644 --- a/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py +++ b/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py @@ -21,8 +21,10 @@ ) from metricflow_semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration - -from tests_metricflow.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_spec_set_snapshot_equal +from metricflow_semantics.test_helpers.snapshot_helpers import ( + assert_linkable_element_set_snapshot_equal, + assert_spec_set_snapshot_equal, +) logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/model/test_semantic_model_container.py b/tests_metricflow/semantics/model/test_semantic_model_container.py index 91600948e0..b0afc4f8eb 100644 --- a/tests_metricflow/semantics/model/test_semantic_model_container.py +++ b/tests_metricflow/semantics/model/test_semantic_model_container.py @@ -10,8 +10,11 @@ from metricflow_semantics.model.semantics.metric_lookup import MetricLookup from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import ( + assert_linkable_element_set_snapshot_equal, +) -from tests_metricflow.snapshot_utils import assert_linkable_element_set_snapshot_equal, assert_object_snapshot_equal +from tests_metricflow.snapshot_utils import assert_object_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py b/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py index 818ed6bd10..106b7fa54b 100644 --- a/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py +++ b/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py @@ -8,9 +8,9 @@ from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_plan_snapshot_text_equal from tests_metricflow.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId -from tests_metricflow.snapshot_utils import assert_plan_snapshot_text_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py b/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py index 9382fdb655..d8223818da 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py +++ b/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py @@ -10,9 +10,9 @@ from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow_semantics.specs.spec_classes import LinkableSpecSet from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_linkable_spec_set_snapshot_equal from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId -from tests_metricflow.snapshot_utils import assert_linkable_spec_set_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/snapshot_utils.py b/tests_metricflow/snapshot_utils.py index f490788c1e..111a5d4e16 100644 --- a/tests_metricflow/snapshot_utils.py +++ b/tests_metricflow/snapshot_utils.py @@ -1,18 +1,17 @@ from __future__ import annotations import logging -import re -from typing import Any, Callable, Optional, Tuple, TypeVar +from typing import Any, Optional -import tabulate from _pytest.fixtures import FixtureRequest -from metricflow_semantics.dag.mf_dag import MetricFlowDag from metricflow_semantics.mf_logging.pretty_print import mf_pformat -from metricflow_semantics.model.semantics.linkable_spec_resolver import LinkableElementSet -from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme -from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration -from metricflow_semantics.test_helpers.snapshot_helpers import assert_snapshot_text_equal +from metricflow_semantics.test_helpers.snapshot_helpers import ( + assert_plan_snapshot_text_equal, + assert_snapshot_text_equal, + make_schema_replacement_function, + replace_dataset_id_hash, +) from metricflow.dataflow.dataflow_plan import DataflowPlan from metricflow.execution.execution_plan import ExecutionPlan @@ -22,82 +21,10 @@ logger = logging.getLogger(__name__) -# In plan outputs, replace strings that vary from run to run with this so that comparisons can be made -# consistently. -PLACEHOLDER_CHAR_FOR_INCOMPARABLE_STRINGS = "*" - # Needed as the table alias can vary from run to run. _EXCLUDE_TABLE_ALIAS_REGEX = "^.*_src.*$" -def make_schema_replacement_function(system_schema: str, source_schema: str) -> Callable[[str], str]: - """Generates a function to replace schema names in test outputs.""" - - # The schema of the warehouse used in tests changes from run to run, so don't compare those. - def replacement_function(text: str) -> str: - # Replace with a string of the same length so that indents are preserved. - text = text.replace(source_schema, PLACEHOLDER_CHAR_FOR_INCOMPARABLE_STRINGS * len(source_schema)) - # Same with the MetricFlow system schema. - return text.replace(system_schema, PLACEHOLDER_CHAR_FOR_INCOMPARABLE_STRINGS * len(system_schema)) - - return replacement_function - - -def replace_dataset_id_hash(text: str) -> str: - """Replaces data set ID hashes for primed semantic models. - - The data set ID hash changes from run to run because it's based on the DW schema in the semantic model, which changes - run to run. - """ - pattern = re.compile(r"'[a-zA-Z0-9_]+__[a-zA-Z0-9_]+__(?P[a-zA-Z0-9_]+)'") - while True: - match = pattern.search(text) - if match: - data_set_id_hash = match.group("hash") - # Replace with the same length to preserve indents - text = text.replace(data_set_id_hash, PLACEHOLDER_CHAR_FOR_INCOMPARABLE_STRINGS * len(data_set_id_hash)) - else: - break - return text - - -PlanT = TypeVar("PlanT", bound=MetricFlowDag) - - -def assert_plan_snapshot_text_equal( - request: FixtureRequest, - mf_test_configuration: MetricFlowTestConfiguration, - plan: PlanT, - plan_snapshot_text: str, - plan_snapshot_file_extension: str = ".xml", - exclude_line_regex: Optional[str] = None, - incomparable_strings_replacement_function: Optional[Callable[[str], str]] = None, - additional_sub_directories_for_snapshots: Tuple[str, ...] = (), -) -> None: - """Checks if the given plan text is equal to the one that's saved for comparison. - - * The location of the file is automatically generated based on the test and the plan's ID. - * This may create a new saved plan file or overwrite the existing one, depending on the configuration. - * replace_incomparable_strings is used to replace strings in the plan text before comparison. Useful for making - plans consistent when there are strings that vary between runs and shouldn't be compared. - * additional_sub_directories_for_snapshots is used to specify additional sub-directories (in the automatically - generated directory) where plan outputs should reside. - - TODO: Make this more generic by renaming plan -> DAG. - """ - assert_snapshot_text_equal( - request=request, - mf_test_configuration=mf_test_configuration, - group_id=plan.__class__.__name__, - snapshot_id=str(plan.dag_id), - snapshot_text=plan_snapshot_text, - snapshot_file_extension=plan_snapshot_file_extension, - exclude_line_regex=exclude_line_regex, - incomparable_strings_replacement_function=incomparable_strings_replacement_function, - additional_sub_directories_for_snapshots=additional_sub_directories_for_snapshots, - ) - - def assert_execution_plan_text_equal( # noqa: D103 request: FixtureRequest, mf_test_configuration: MetricFlowTestConfiguration, @@ -201,94 +128,3 @@ def assert_str_snapshot_equal( # type: ignore[misc] snapshot_file_extension=".txt", additional_sub_directories_for_snapshots=(sql_engine.value,) if sql_engine is not None else (), ) - - -def assert_linkable_element_set_snapshot_equal( # noqa: D103 - request: FixtureRequest, - mf_test_configuration: MetricFlowTestConfiguration, - set_id: str, - linkable_element_set: LinkableElementSet, -) -> None: - headers = ("Semantic Model", "Entity Links", "Name", "Time Granularity", "Date Part", "Properties") - rows = [] - for linkable_dimension_iterable in linkable_element_set.path_key_to_linkable_dimensions.values(): - for linkable_dimension in linkable_dimension_iterable: - rows.append( - ( - # Checking a limited set of fields as the result is large due to the paths in the object. - ( - linkable_dimension.semantic_model_origin.semantic_model_name - if linkable_dimension.semantic_model_origin - else None - ), - tuple(entity_link.element_name for entity_link in linkable_dimension.entity_links), - linkable_dimension.element_name, - linkable_dimension.time_granularity.name if linkable_dimension.time_granularity is not None else "", - linkable_dimension.date_part.name if linkable_dimension.date_part is not None else "", - sorted( - linkable_element_property.name for linkable_element_property in linkable_dimension.properties - ), - ) - ) - - for linkable_entity_iterable in linkable_element_set.path_key_to_linkable_entities.values(): - for linkable_entity in linkable_entity_iterable: - rows.append( - ( - # Checking a limited set of fields as the result is large due to the paths in the object. - linkable_entity.semantic_model_origin.semantic_model_name, - tuple(entity_link.element_name for entity_link in linkable_entity.entity_links), - linkable_entity.element_name, - "", - "", - sorted(linkable_element_property.name for linkable_element_property in linkable_entity.properties), - ) - ) - - for linkable_metric_iterable in linkable_element_set.path_key_to_linkable_metrics.values(): - for linkable_metric in linkable_metric_iterable: - rows.append( - ( - # Checking a limited set of fields as the result is large due to the paths in the object. - linkable_metric.join_by_semantic_model.semantic_model_name, - tuple(entity_link.element_name for entity_link in linkable_entity.entity_links), - linkable_metric.element_name, - "", - "", - sorted(linkable_element_property.name for linkable_element_property in linkable_metric.properties), - ) - ) - - assert_str_snapshot_equal( - request=request, - mf_test_configuration=mf_test_configuration, - snapshot_id=set_id, - snapshot_str=tabulate.tabulate(headers=headers, tabular_data=sorted(rows)), - ) - - -def assert_spec_set_snapshot_equal( # noqa: D103 - request: FixtureRequest, mf_test_configuration: MetricFlowTestConfiguration, set_id: str, spec_set: InstanceSpecSet -) -> None: - assert_object_snapshot_equal( - request=request, - mf_test_configuration=mf_test_configuration, - obj_id=set_id, - obj=sorted(spec.qualified_name for spec in spec_set.all_specs), - ) - - -def assert_linkable_spec_set_snapshot_equal( # noqa: D103 - request: FixtureRequest, mf_test_configuration: MetricFlowTestConfiguration, set_id: str, spec_set: LinkableSpecSet -) -> None: - # TODO: This will be used in a later PR and this message will be removed. - naming_scheme = ObjectBuilderNamingScheme() - assert_snapshot_text_equal( - request=request, - mf_test_configuration=mf_test_configuration, - group_id=spec_set.__class__.__name__, - snapshot_id=set_id, - snapshot_text=mf_pformat(sorted(naming_scheme.input_str(spec) for spec in spec_set.as_tuple)), - snapshot_file_extension=".txt", - additional_sub_directories_for_snapshots=(), - ) diff --git a/tests_metricflow/sql/compare_sql_plan.py b/tests_metricflow/sql/compare_sql_plan.py index a230ce6c8d..4bb17c84a1 100644 --- a/tests_metricflow/sql/compare_sql_plan.py +++ b/tests_metricflow/sql/compare_sql_plan.py @@ -3,15 +3,15 @@ from _pytest.fixtures import FixtureRequest from metricflow_semantics.dag.mf_dag import DagId from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import ( + assert_plan_snapshot_text_equal, + make_schema_replacement_function, +) from metricflow.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer from metricflow.sql.sql_plan import SqlQueryPlan, SqlQueryPlanNode from tests_metricflow.fixtures.setup_fixtures import check_sql_engine_snapshot_marker -from tests_metricflow.snapshot_utils import ( - assert_plan_snapshot_text_equal, - make_schema_replacement_function, -) def assert_default_rendered_sql_equal( From 4c9dda2a540c299855d1c84d25f7aa1668068064 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 11:12:06 -0700 Subject: [PATCH 57/80] Add snapshot methods that don't depend on a SQL client. --- .../test_helpers/snapshot_helpers.py | 37 ++++++++++++++++++- .../model/test_semantic_model_container.py | 3 +- .../test_spec_lookup.py | 2 +- .../test_matching_item_for_filters.py | 2 +- .../test_matching_item_for_querying.py | 2 +- .../query/test_ambiguous_entity_path.py | 3 +- .../semantics/query/test_suggestions.py | 2 +- 7 files changed, 41 insertions(+), 10 deletions(-) diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py index 1741e25c78..ac247dac2e 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py @@ -6,7 +6,7 @@ import re import webbrowser from dataclasses import dataclass -from typing import Callable, List, Optional, Tuple, TypeVar +from typing import Any, Callable, List, Optional, Tuple, TypeVar import _pytest.fixtures import tabulate @@ -18,7 +18,6 @@ from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration -from tests_metricflow.snapshot_utils import assert_object_snapshot_equal, assert_str_snapshot_equal logger = logging.getLogger(__name__) @@ -339,3 +338,37 @@ def assert_linkable_spec_set_snapshot_equal( # noqa: D103 snapshot_file_extension=".txt", additional_sub_directories_for_snapshots=(), ) + + +def assert_object_snapshot_equal( # type: ignore[misc] + request: FixtureRequest, + mf_test_configuration: SnapshotConfiguration, + obj_id: str, + obj: Any, +) -> None: + """For tests to compare large objects, this can be used to snapshot a text representation of the object.""" + assert_snapshot_text_equal( + request=request, + mf_test_configuration=mf_test_configuration, + group_id=obj.__class__.__name__, + snapshot_id=obj_id, + snapshot_text=mf_pformat(obj), + snapshot_file_extension=".txt", + ) + + +def assert_str_snapshot_equal( # type: ignore[misc] + request: FixtureRequest, + mf_test_configuration: SnapshotConfiguration, + snapshot_id: str, + snapshot_str: str, +) -> None: + """Write / compare a string snapshot.""" + assert_snapshot_text_equal( + request=request, + mf_test_configuration=mf_test_configuration, + group_id=snapshot_str.__class__.__name__, + snapshot_id=snapshot_id, + snapshot_text=snapshot_str, + snapshot_file_extension=".txt", + ) diff --git a/tests_metricflow/semantics/model/test_semantic_model_container.py b/tests_metricflow/semantics/model/test_semantic_model_container.py index b0afc4f8eb..69f8c5ec0c 100644 --- a/tests_metricflow/semantics/model/test_semantic_model_container.py +++ b/tests_metricflow/semantics/model/test_semantic_model_container.py @@ -12,10 +12,9 @@ from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.test_helpers.snapshot_helpers import ( assert_linkable_element_set_snapshot_equal, + assert_object_snapshot_equal, ) -from tests_metricflow.snapshot_utils import assert_object_snapshot_equal - logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py b/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py index 4dfae17581..2ea3fcfac6 100644 --- a/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py +++ b/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py @@ -31,12 +31,12 @@ from metricflow_semantics.query.group_by_item.filter_spec_resolution.filter_spec_resolver import WhereFilterSpecResolver from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_str_snapshot_equal from tests_metricflow.semantics.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform from tests_metricflow.semantics.model.modify.modify_manifest import modify_manifest from tests_metricflow.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId, _build_resolution_dag -from tests_metricflow.snapshot_utils import assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py index 6ddfee79cf..cf899ff92b 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py +++ b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py @@ -12,9 +12,9 @@ from metricflow_semantics.query.group_by_item.group_by_item_resolver import GroupByItemResolver from metricflow_semantics.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_object_snapshot_equal from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId -from tests_metricflow.snapshot_utils import assert_object_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py index c366c1ec1d..89b05ced44 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py +++ b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py @@ -17,9 +17,9 @@ MetricGroupByItemResolutionNode, ) from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_object_snapshot_equal from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId -from tests_metricflow.snapshot_utils import assert_object_snapshot_equal from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_YEAR logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/test_ambiguous_entity_path.py b/tests_metricflow/semantics/query/test_ambiguous_entity_path.py index 7ce2699bd4..e4b6caa1cc 100644 --- a/tests_metricflow/semantics/query/test_ambiguous_entity_path.py +++ b/tests_metricflow/semantics/query/test_ambiguous_entity_path.py @@ -11,8 +11,7 @@ from metricflow_semantics.query.query_exceptions import InvalidQueryException from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration - -from tests_metricflow.snapshot_utils import assert_object_snapshot_equal, assert_str_snapshot_equal +from metricflow_semantics.test_helpers.snapshot_helpers import assert_object_snapshot_equal, assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/test_suggestions.py b/tests_metricflow/semantics/query/test_suggestions.py index 37bc804544..025c8d949a 100644 --- a/tests_metricflow/semantics/query/test_suggestions.py +++ b/tests_metricflow/semantics/query/test_suggestions.py @@ -15,11 +15,11 @@ from metricflow_semantics.query.query_exceptions import InvalidQueryException from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import assert_str_snapshot_equal from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from tests_metricflow.semantics.model.modify.modify_manifest import modify_manifest from tests_metricflow.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform -from tests_metricflow.snapshot_utils import assert_str_snapshot_equal logger = logging.getLogger(__name__) From 3e349ff0f372750c9200691ace91f0575a2e1440 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 09:52:49 -0700 Subject: [PATCH 58/80] Change signaure of `assert*` methods to use `SnapshotConfiguration`. --- .../test_helpers/snapshot_helpers.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py index ac247dac2e..4354c6eed4 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers/snapshot_helpers.py @@ -17,7 +17,6 @@ from metricflow_semantics.model.semantics.linkable_element_set import LinkableElementSet from metricflow_semantics.naming.object_builder_scheme import ObjectBuilderNamingScheme from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableSpecSet -from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration logger = logging.getLogger(__name__) @@ -217,7 +216,7 @@ def replace_dataset_id_hash(text: str) -> str: def assert_plan_snapshot_text_equal( request: FixtureRequest, - mf_test_configuration: MetricFlowTestConfiguration, + mf_test_configuration: SnapshotConfiguration, plan: PlanT, plan_snapshot_text: str, plan_snapshot_file_extension: str = ".xml", @@ -251,7 +250,7 @@ def assert_plan_snapshot_text_equal( def assert_linkable_element_set_snapshot_equal( # noqa: D103 request: FixtureRequest, - mf_test_configuration: MetricFlowTestConfiguration, + mf_test_configuration: SnapshotConfiguration, set_id: str, linkable_element_set: LinkableElementSet, ) -> None: @@ -314,7 +313,7 @@ def assert_linkable_element_set_snapshot_equal( # noqa: D103 def assert_spec_set_snapshot_equal( # noqa: D103 - request: FixtureRequest, mf_test_configuration: MetricFlowTestConfiguration, set_id: str, spec_set: InstanceSpecSet + request: FixtureRequest, mf_test_configuration: SnapshotConfiguration, set_id: str, spec_set: InstanceSpecSet ) -> None: assert_object_snapshot_equal( request=request, @@ -325,7 +324,7 @@ def assert_spec_set_snapshot_equal( # noqa: D103 def assert_linkable_spec_set_snapshot_equal( # noqa: D103 - request: FixtureRequest, mf_test_configuration: MetricFlowTestConfiguration, set_id: str, spec_set: LinkableSpecSet + request: FixtureRequest, mf_test_configuration: SnapshotConfiguration, set_id: str, spec_set: LinkableSpecSet ) -> None: # TODO: This will be used in a later PR and this message will be removed. naming_scheme = ObjectBuilderNamingScheme() From 7e9ee2c95d63e89d5133a9923b434babefe4383e Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 10:14:02 -0700 Subject: [PATCH 59/80] Initial configuration for `metricflow-semantics` tests. --- tests_metricflow_semantics/conftest.py | 5 + .../fixtures/__init__.py | 0 .../fixtures/manifest_fixtures.py | 94 +++++++++++++++++++ .../fixtures/setup_fixtures.py | 38 ++++++++ 4 files changed, 137 insertions(+) create mode 100644 tests_metricflow_semantics/conftest.py create mode 100644 tests_metricflow_semantics/fixtures/__init__.py create mode 100644 tests_metricflow_semantics/fixtures/manifest_fixtures.py create mode 100644 tests_metricflow_semantics/fixtures/setup_fixtures.py diff --git a/tests_metricflow_semantics/conftest.py b/tests_metricflow_semantics/conftest.py new file mode 100644 index 0000000000..7d9dc15474 --- /dev/null +++ b/tests_metricflow_semantics/conftest.py @@ -0,0 +1,5 @@ +# These imports are required to properly set up pytest fixtures. +from __future__ import annotations + +from tests_metricflow_semantics.fixtures.manifest_fixtures import * # noqa: F401, F403 +from tests_metricflow_semantics.fixtures.setup_fixtures import * # noqa: F401, F403 diff --git a/tests_metricflow_semantics/fixtures/__init__.py b/tests_metricflow_semantics/fixtures/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests_metricflow_semantics/fixtures/manifest_fixtures.py b/tests_metricflow_semantics/fixtures/manifest_fixtures.py new file mode 100644 index 0000000000..6c83a1cafc --- /dev/null +++ b/tests_metricflow_semantics/fixtures/manifest_fixtures.py @@ -0,0 +1,94 @@ +from __future__ import annotations + +import logging +from typing import Dict + +import pytest +from dbt_semantic_interfaces.implementations.semantic_manifest import PydanticSemanticManifest +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.manifest_helpers import load_named_manifest + +logger = logging.getLogger(__name__) + + +@pytest.fixture(scope="session") +def template_mapping(mf_test_configuration: MetricFlowTestConfiguration) -> Dict[str, str]: + """Mapping for template variables in the model YAML files.""" + return {"source_schema": mf_test_configuration.mf_source_schema} + + +@pytest.fixture(scope="session") +def simple_semantic_manifest(template_mapping: Dict[str, str]) -> PydanticSemanticManifest: + """Manifest used for many tests.""" + return load_named_manifest(template_mapping, "simple_manifest") + + +@pytest.fixture(scope="session") +def simple_semantic_manifest_lookup( # noqa: D103 + simple_semantic_manifest: PydanticSemanticManifest, +) -> SemanticManifestLookup: + return SemanticManifestLookup(simple_semantic_manifest) + + +@pytest.fixture(scope="session") +def simple_multi_hop_join_manifest(template_mapping: Dict[str, str]) -> PydanticSemanticManifest: + """Manifest used for many tests.""" + return load_named_manifest(template_mapping, "simple_multi_hop_join_manifest") + + +@pytest.fixture(scope="session") +def simple_multi_hop_join_manifest_lookup( # noqa: D103 + simple_multi_hop_join_manifest: PydanticSemanticManifest, +) -> SemanticManifestLookup: + return SemanticManifestLookup(simple_multi_hop_join_manifest) + + +@pytest.fixture(scope="session") +def partitioned_multi_hop_join_semantic_manifest( # noqa: D103 + template_mapping: Dict[str, str] +) -> PydanticSemanticManifest: + return load_named_manifest(template_mapping, "partitioned_multi_hop_join_manifest") + + +@pytest.fixture(scope="session") +def partitioned_multi_hop_join_semantic_manifest_lookup( # noqa: D103 + partitioned_multi_hop_join_semantic_manifest: PydanticSemanticManifest, +) -> SemanticManifestLookup: + return SemanticManifestLookup(partitioned_multi_hop_join_semantic_manifest) + + +@pytest.fixture(scope="session") +def scd_semantic_manifest(template_mapping: Dict[str, str]) -> PydanticSemanticManifest: # noqa: D103 + return load_named_manifest(template_mapping, "scd_manifest") + + +@pytest.fixture(scope="session") +def scd_semantic_manifest_lookup( # noqa: D103 + scd_semantic_manifest: PydanticSemanticManifest, +) -> SemanticManifestLookup: + return SemanticManifestLookup(scd_semantic_manifest) + + +@pytest.fixture(scope="session") +def ambiguous_resolution_manifest(template_mapping: Dict[str, str]) -> PydanticSemanticManifest: # noqa: D103 + return load_named_manifest(template_mapping, "ambiguous_resolution_manifest") + + +@pytest.fixture(scope="session") +def ambiguous_resolution_manifest_lookup( # noqa: D103 + ambiguous_resolution_manifest: PydanticSemanticManifest, +) -> SemanticManifestLookup: + return SemanticManifestLookup(ambiguous_resolution_manifest) + + +@pytest.fixture(scope="session") +def cyclic_join_manifest(template_mapping: Dict[str, str]) -> PydanticSemanticManifest: # noqa: D103 + return load_named_manifest(template_mapping, "cyclic_join_manifest") + + +@pytest.fixture(scope="session") +def cyclic_join_semantic_manifest_lookup( # noqa: D103 + cyclic_join_manifest: PydanticSemanticManifest, +) -> SemanticManifestLookup: + return SemanticManifestLookup(cyclic_join_manifest) diff --git a/tests_metricflow_semantics/fixtures/setup_fixtures.py b/tests_metricflow_semantics/fixtures/setup_fixtures.py new file mode 100644 index 0000000000..572536772e --- /dev/null +++ b/tests_metricflow_semantics/fixtures/setup_fixtures.py @@ -0,0 +1,38 @@ +from __future__ import annotations + +import logging + +import _pytest.config +import pytest +from _pytest.fixtures import FixtureRequest +from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.snapshot_helpers import ( + DISPLAY_SNAPSHOTS_CLI_FLAG, + OVERWRITE_SNAPSHOTS_CLI_FLAG, + add_display_snapshots_cli_flag, + add_overwrite_snapshots_cli_flag, +) + +logger = logging.getLogger(__name__) + + +def pytest_addoption(parser: _pytest.config.argparsing.Parser) -> None: + """Add options for running pytest through the CLI.""" + add_overwrite_snapshots_cli_flag(parser) + add_display_snapshots_cli_flag(parser) + + +@pytest.fixture(scope="session") +def mf_test_configuration( # noqa: D103 + request: FixtureRequest, +) -> MetricFlowTestConfiguration: + return MetricFlowTestConfiguration( + sql_engine_url="N/A", + sql_engine_password="N/A", + mf_system_schema="N/A", + mf_source_schema="N/A", + display_snapshots=bool(request.config.getoption(DISPLAY_SNAPSHOTS_CLI_FLAG, default=False)), + display_graphs=False, + overwrite_snapshots=bool(request.config.getoption(OVERWRITE_SNAPSHOTS_CLI_FLAG, default=False)), + use_persistent_source_schema=False, + ) From 00129acfe88386feb56b629e4e7ed251934ab61b Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 10:38:14 -0700 Subject: [PATCH 60/80] Move a few tests to new locations. --- tests_metricflow/{semantics => }/mf_logging/__init__.py | 0 tests_metricflow/{semantics => }/mf_logging/test_dag_to_text.py | 0 tests_metricflow/validation/__init__.py | 0 .../{semantics/model => validation}/test_data_warehouse_tasks.py | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename tests_metricflow/{semantics => }/mf_logging/__init__.py (100%) rename tests_metricflow/{semantics => }/mf_logging/test_dag_to_text.py (100%) create mode 100644 tests_metricflow/validation/__init__.py rename tests_metricflow/{semantics/model => validation}/test_data_warehouse_tasks.py (100%) diff --git a/tests_metricflow/semantics/mf_logging/__init__.py b/tests_metricflow/mf_logging/__init__.py similarity index 100% rename from tests_metricflow/semantics/mf_logging/__init__.py rename to tests_metricflow/mf_logging/__init__.py diff --git a/tests_metricflow/semantics/mf_logging/test_dag_to_text.py b/tests_metricflow/mf_logging/test_dag_to_text.py similarity index 100% rename from tests_metricflow/semantics/mf_logging/test_dag_to_text.py rename to tests_metricflow/mf_logging/test_dag_to_text.py diff --git a/tests_metricflow/validation/__init__.py b/tests_metricflow/validation/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests_metricflow/semantics/model/test_data_warehouse_tasks.py b/tests_metricflow/validation/test_data_warehouse_tasks.py similarity index 100% rename from tests_metricflow/semantics/model/test_data_warehouse_tasks.py rename to tests_metricflow/validation/test_data_warehouse_tasks.py From 6f21bb7ec909e926f56dc4200d6aabba5770b3c8 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 10:40:28 -0700 Subject: [PATCH 61/80] Remove `DunderColumnAssociationResolver` from `test_suggestions.py`. --- tests_metricflow/semantics/query/test_suggestions.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests_metricflow/semantics/query/test_suggestions.py b/tests_metricflow/semantics/query/test_suggestions.py index 025c8d949a..7a568c1742 100644 --- a/tests_metricflow/semantics/query/test_suggestions.py +++ b/tests_metricflow/semantics/query/test_suggestions.py @@ -17,7 +17,6 @@ from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.test_helpers.snapshot_helpers import assert_str_snapshot_equal -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from tests_metricflow.semantics.model.modify.modify_manifest import modify_manifest from tests_metricflow.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform @@ -130,7 +129,6 @@ def test_suggestions_for_defined_filters_in_multi_metric_query( ) semantic_manifest_lookup = SemanticManifestLookup(modified_manifest) - DunderColumnAssociationResolver(modified_manifest) query_parser = MetricFlowQueryParser( semantic_manifest_lookup=semantic_manifest_lookup, From b988db5fa4691ab046c23f429259a11c44959da1 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 10:42:13 -0700 Subject: [PATCH 62/80] Move `metric_time_dimension.py` to `test_helpers`. --- .../test_helpers}/metric_time_dimension.py | 0 .../dataflow/builder/test_dataflow_plan_builder.py | 7 ++++++- .../test_metric_time_dimension_to_sql.py | 2 +- .../plan_conversion/test_dataflow_to_sql_plan.py | 2 +- .../test_cumulative_metric_rendering.py | 2 +- .../query_rendering/test_derived_metric_rendering.py | 12 ++++++------ .../test_metric_time_without_metrics.py | 2 +- .../query_rendering/test_query_rendering.py | 2 +- .../collection_helpers/test_pretty_print.py | 3 +-- tests_metricflow/semantics/naming/conftest.py | 3 +-- .../semantics/naming/test_dunder_naming_scheme.py | 3 +-- .../naming/test_object_builder_naming_scheme.py | 3 +-- .../group_by_item/test_matching_item_for_querying.py | 2 +- .../semantics/query/test_query_parser.py | 2 +- .../specs/patterns/test_entity_link_pattern.py | 3 +-- 15 files changed, 24 insertions(+), 24 deletions(-) rename {tests_metricflow/time => metricflow-semantics/metricflow_semantics/test_helpers}/metric_time_dimension.py (100%) diff --git a/tests_metricflow/time/metric_time_dimension.py b/metricflow-semantics/metricflow_semantics/test_helpers/metric_time_dimension.py similarity index 100% rename from tests_metricflow/time/metric_time_dimension.py rename to metricflow-semantics/metricflow_semantics/test_helpers/metric_time_dimension.py diff --git a/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py b/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py index 8118347075..24c60296e7 100644 --- a/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py @@ -21,12 +21,17 @@ TimeDimensionSpec, ) from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.metric_time_dimension import ( + MTD_SPEC_DAY, + MTD_SPEC_MONTH, + MTD_SPEC_QUARTER, + MTD_SPEC_WEEK, +) from metricflow_semantics.test_helpers.snapshot_helpers import assert_plan_snapshot_text_equal from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested -from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_QUARTER, MTD_SPEC_WEEK logger = logging.getLogger(__name__) diff --git a/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py b/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py index 821dc38267..ae53da1509 100644 --- a/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py +++ b/tests_metricflow/plan_conversion/dataflow_to_sql/test_metric_time_dimension_to_sql.py @@ -7,6 +7,7 @@ from dbt_semantic_interfaces.references import TimeDimensionReference from metricflow_semantics.specs.spec_classes import MetricFlowQuerySpec, MetricSpec from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.metric_time_dimension import MTD_SPEC_DAY from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode @@ -14,7 +15,6 @@ from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests_metricflow.plan_conversion.test_dataflow_to_sql_plan import convert_and_check -from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY @pytest.mark.sql_engine_snapshot diff --git a/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py b/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py index 1acb2d1485..a007d72765 100644 --- a/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py @@ -30,6 +30,7 @@ from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.metric_time_dimension import MTD_SPEC_DAY from metricflow_semantics.test_helpers.snapshot_helpers import assert_plan_snapshot_text_equal from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder @@ -55,7 +56,6 @@ from tests_metricflow.dataflow_plan_to_svg import display_graph_if_requested from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests_metricflow.sql.compare_sql_plan import assert_rendered_sql_from_plan_equal, assert_sql_plan_text_equal -from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY def convert_and_check( diff --git a/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py b/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py index a513edc11a..a96e1f532c 100644 --- a/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py +++ b/tests_metricflow/query_rendering/test_cumulative_metric_rendering.py @@ -15,13 +15,13 @@ from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver from metricflow_semantics.specs.spec_classes import EntityReference, MetricFlowQuerySpec, MetricSpec, TimeDimensionSpec from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.metric_time_dimension import MTD_SPEC_MONTH from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check -from tests_metricflow.time.metric_time_dimension import MTD_SPEC_MONTH @pytest.mark.sql_engine_snapshot diff --git a/tests_metricflow/query_rendering/test_derived_metric_rendering.py b/tests_metricflow/query_rendering/test_derived_metric_rendering.py index 58a1beb82b..509ee6c253 100644 --- a/tests_metricflow/query_rendering/test_derived_metric_rendering.py +++ b/tests_metricflow/query_rendering/test_derived_metric_rendering.py @@ -17,12 +17,7 @@ MetricSpec, ) from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration - -from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter -from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check -from tests_metricflow.time.metric_time_dimension import ( +from metricflow_semantics.test_helpers.metric_time_dimension import ( MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_QUARTER, @@ -30,6 +25,11 @@ MTD_SPEC_YEAR, ) +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter +from metricflow.protocols.sql_client import SqlClient +from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check + @pytest.mark.sql_engine_snapshot def test_derived_metric( # noqa: D103 diff --git a/tests_metricflow/query_rendering/test_metric_time_without_metrics.py b/tests_metricflow/query_rendering/test_metric_time_without_metrics.py index 3ffa314760..55f32370e5 100644 --- a/tests_metricflow/query_rendering/test_metric_time_without_metrics.py +++ b/tests_metricflow/query_rendering/test_metric_time_without_metrics.py @@ -9,12 +9,12 @@ from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.specs.spec_classes import DimensionSpec, MetricFlowQuerySpec, TimeDimensionSpec from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.metric_time_dimension import MTD_SPEC_DAY from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from tests_metricflow.plan_conversion.test_dataflow_to_sql_plan import convert_and_check -from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY @pytest.mark.sql_engine_snapshot diff --git a/tests_metricflow/query_rendering/test_query_rendering.py b/tests_metricflow/query_rendering/test_query_rendering.py index 8773e4120a..fe32116bfb 100644 --- a/tests_metricflow/query_rendering/test_query_rendering.py +++ b/tests_metricflow/query_rendering/test_query_rendering.py @@ -25,13 +25,13 @@ TimeDimensionSpec, ) from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_WEEK from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from tests_metricflow.query_rendering.compare_rendered_query import convert_and_check -from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_WEEK @pytest.mark.sql_engine_snapshot diff --git a/tests_metricflow/semantics/collection_helpers/test_pretty_print.py b/tests_metricflow/semantics/collection_helpers/test_pretty_print.py index 4622d92442..462a7d4f7b 100644 --- a/tests_metricflow/semantics/collection_helpers/test_pretty_print.py +++ b/tests_metricflow/semantics/collection_helpers/test_pretty_print.py @@ -7,8 +7,7 @@ from dbt_semantic_interfaces.type_enums import DimensionType from metricflow_semantics.mf_logging.formatting import indent from metricflow_semantics.mf_logging.pretty_print import mf_pformat, mf_pformat_many - -from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY +from metricflow_semantics.test_helpers.metric_time_dimension import MTD_SPEC_DAY logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/naming/conftest.py b/tests_metricflow/semantics/naming/conftest.py index 81b7774eda..3dac120add 100644 --- a/tests_metricflow/semantics/naming/conftest.py +++ b/tests_metricflow/semantics/naming/conftest.py @@ -13,8 +13,7 @@ LinkableInstanceSpec, TimeDimensionSpec, ) - -from tests_metricflow.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR +from metricflow_semantics.test_helpers.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR @pytest.fixture(scope="session") diff --git a/tests_metricflow/semantics/naming/test_dunder_naming_scheme.py b/tests_metricflow/semantics/naming/test_dunder_naming_scheme.py index c57e3e4544..99c329f034 100644 --- a/tests_metricflow/semantics/naming/test_dunder_naming_scheme.py +++ b/tests_metricflow/semantics/naming/test_dunder_naming_scheme.py @@ -8,8 +8,7 @@ from dbt_semantic_interfaces.type_enums.date_part import DatePart from metricflow_semantics.naming.dunder_scheme import DunderNamingScheme from metricflow_semantics.specs.spec_classes import DimensionSpec, EntitySpec, LinkableInstanceSpec, TimeDimensionSpec - -from tests_metricflow.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR +from metricflow_semantics.test_helpers.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR @pytest.fixture(scope="session") diff --git a/tests_metricflow/semantics/naming/test_object_builder_naming_scheme.py b/tests_metricflow/semantics/naming/test_object_builder_naming_scheme.py index 96bedbe1d4..d5abdfcb27 100644 --- a/tests_metricflow/semantics/naming/test_object_builder_naming_scheme.py +++ b/tests_metricflow/semantics/naming/test_object_builder_naming_scheme.py @@ -14,8 +14,7 @@ LinkableInstanceSpec, TimeDimensionSpec, ) - -from tests_metricflow.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR +from metricflow_semantics.test_helpers.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR @pytest.fixture(scope="session") diff --git a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py index 89b05ced44..84e451c838 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py +++ b/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py @@ -17,10 +17,10 @@ MetricGroupByItemResolutionNode, ) from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_YEAR from metricflow_semantics.test_helpers.snapshot_helpers import assert_object_snapshot_equal from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId -from tests_metricflow.time.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_YEAR logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/test_query_parser.py b/tests_metricflow/semantics/query/test_query_parser.py index 3a1b145592..c690835caf 100644 --- a/tests_metricflow/semantics/query/test_query_parser.py +++ b/tests_metricflow/semantics/query/test_query_parser.py @@ -30,11 +30,11 @@ OrderBySpec, TimeDimensionSpec, ) +from metricflow_semantics.test_helpers.metric_time_dimension import MTD from tests_metricflow.semantics.model.example_project_configuration import ( EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE, ) -from tests_metricflow.time.metric_time_dimension import MTD logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/specs/patterns/test_entity_link_pattern.py b/tests_metricflow/semantics/specs/patterns/test_entity_link_pattern.py index 51fae67009..cfb1c4da16 100644 --- a/tests_metricflow/semantics/specs/patterns/test_entity_link_pattern.py +++ b/tests_metricflow/semantics/specs/patterns/test_entity_link_pattern.py @@ -21,8 +21,7 @@ LinkableInstanceSpec, TimeDimensionSpec, ) - -from tests_metricflow.time.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR +from metricflow_semantics.test_helpers.metric_time_dimension import MTD_SPEC_MONTH, MTD_SPEC_WEEK, MTD_SPEC_YEAR logger = logging.getLogger(__name__) From 3da177309d4a25fe5de9ae005a86ab8e4c5f4a71 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 10:48:31 -0700 Subject: [PATCH 63/80] Remove `DataSet` dependency from `metric_time_dimension.py` --- .../test_helpers/metric_time_dimension.py | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/metric_time_dimension.py b/metricflow-semantics/metricflow_semantics/test_helpers/metric_time_dimension.py index ac7ea7d9be..93a2928b8c 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers/metric_time_dimension.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers/metric_time_dimension.py @@ -1,14 +1,26 @@ from __future__ import annotations +from dbt_semantic_interfaces.references import TimeDimensionReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity +from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords -from metricflow.dataset.dataset_classes import DataSet +from metricflow_semantics.specs.spec_classes import TimeDimensionSpec # Shortcuts for referring to the metric time dimension. -MTD = DataSet.metric_time_dimension_name() -MTD_REFERENCE = DataSet.metric_time_dimension_reference() -MTD_SPEC_DAY = DataSet.metric_time_dimension_spec(TimeGranularity.DAY) -MTD_SPEC_WEEK = DataSet.metric_time_dimension_spec(TimeGranularity.WEEK) -MTD_SPEC_MONTH = DataSet.metric_time_dimension_spec(TimeGranularity.MONTH) -MTD_SPEC_QUARTER = DataSet.metric_time_dimension_spec(TimeGranularity.QUARTER) -MTD_SPEC_YEAR = DataSet.metric_time_dimension_spec(TimeGranularity.YEAR) +MTD = MetricFlowReservedKeywords.METRIC_TIME.value +MTD_REFERENCE = TimeDimensionReference(element_name=MetricFlowReservedKeywords.METRIC_TIME.value) +MTD_SPEC_DAY = TimeDimensionSpec( + element_name=MetricFlowReservedKeywords.METRIC_TIME.value, entity_links=(), time_granularity=TimeGranularity.DAY +) +MTD_SPEC_WEEK = TimeDimensionSpec( + element_name=MetricFlowReservedKeywords.METRIC_TIME.value, entity_links=(), time_granularity=TimeGranularity.WEEK +) +MTD_SPEC_MONTH = TimeDimensionSpec( + element_name=MetricFlowReservedKeywords.METRIC_TIME.value, entity_links=(), time_granularity=TimeGranularity.MONTH +) +MTD_SPEC_QUARTER = TimeDimensionSpec( + element_name=MetricFlowReservedKeywords.METRIC_TIME.value, entity_links=(), time_granularity=TimeGranularity.QUARTER +) +MTD_SPEC_YEAR = TimeDimensionSpec( + element_name=MetricFlowReservedKeywords.METRIC_TIME.value, entity_links=(), time_granularity=TimeGranularity.YEAR +) From 76119b6492faf6e5625ef1ef88fddb5be65f7ec8 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 11:50:15 -0700 Subject: [PATCH 64/80] Separate dataflow validation from `SemanticModelJoinEvaluator`. --- metricflow/plan_conversion/node_processor.py | 5 +- .../validation/dataflow_join_validator.py | 57 +++++ .../test_semantic_model_join_evaluator.py | 207 +---------------- .../validation/test_join_validator.py | 212 ++++++++++++++++++ 4 files changed, 273 insertions(+), 208 deletions(-) create mode 100644 metricflow/validation/dataflow_join_validator.py create mode 100644 tests_metricflow/validation/test_join_validator.py diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index a7ad4d548f..f58756542d 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -7,7 +7,7 @@ from dbt_semantic_interfaces.references import EntityReference, TimeDimensionReference from metricflow_semantics.filters.time_constraint import TimeRangeConstraint from metricflow_semantics.mf_logging.pretty_print import mf_pformat -from metricflow_semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS, SemanticModelJoinEvaluator +from metricflow_semantics.model.semantics.semantic_model_join_evaluator import MAX_JOIN_HOPS from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, LinklessEntitySpec from metricflow_semantics.specs.spec_set_transforms import ToElementNameSet @@ -22,6 +22,7 @@ from metricflow.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode +from metricflow.validation.dataflow_join_validator import JoinDataflowOutputValidator logger = logging.getLogger(__name__) @@ -84,7 +85,7 @@ def __init__( # noqa: D107 self._node_data_set_resolver = node_data_set_resolver self._partition_resolver = PartitionJoinResolver(semantic_model_lookup) self._semantic_model_lookup = semantic_model_lookup - self._join_evaluator = SemanticModelJoinEvaluator(semantic_model_lookup) + self._join_evaluator = JoinDataflowOutputValidator(semantic_model_lookup) def add_time_range_constraint( self, diff --git a/metricflow/validation/dataflow_join_validator.py b/metricflow/validation/dataflow_join_validator.py new file mode 100644 index 0000000000..88c08dcf06 --- /dev/null +++ b/metricflow/validation/dataflow_join_validator.py @@ -0,0 +1,57 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, List + +from dbt_semantic_interfaces.references import ( + EntityReference, + SemanticModelReference, +) +from metricflow_semantics.instances import EntityInstance, InstanceSet +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator + +if TYPE_CHECKING: + from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup + + +class JoinDataflowOutputValidator: + """Checks that the instances in the output of a join dataflow node is valid.""" + + def __init__(self, semantic_model_lookup: SemanticModelLookup) -> None: # noqa: D107 + self._join_evaluator = SemanticModelJoinEvaluator(semantic_model_lookup) + + @staticmethod + def _semantic_model_of_entity_in_instance_set( + instance_set: InstanceSet, + entity_reference: EntityReference, + ) -> SemanticModelReference: + """Return the semantic model where the entity was defined in the instance set.""" + matching_instances: List[EntityInstance] = [] + for entity_instance in instance_set.entity_instances: + assert len(entity_instance.defined_from) == 1 + if len(entity_instance.spec.entity_links) == 0 and entity_instance.spec.reference == entity_reference: + matching_instances.append(entity_instance) + + assert len(matching_instances) == 1, ( + f"Not exactly 1 matching entity instances found: {matching_instances} for {entity_reference} in " + f"{mf_pformat(instance_set)}" + ) + return matching_instances[0].origin_semantic_model_reference.semantic_model_reference + + def is_valid_instance_set_join( + self, + left_instance_set: InstanceSet, + right_instance_set: InstanceSet, + on_entity_reference: EntityReference, + ) -> bool: + """Return true if the instance sets can be joined using the given entity.""" + return self._join_evaluator.is_valid_semantic_model_join( + left_semantic_model_reference=JoinDataflowOutputValidator._semantic_model_of_entity_in_instance_set( + instance_set=left_instance_set, entity_reference=on_entity_reference + ), + right_semantic_model_reference=JoinDataflowOutputValidator._semantic_model_of_entity_in_instance_set( + instance_set=right_instance_set, + entity_reference=on_entity_reference, + ), + on_entity_reference=on_entity_reference, + ) diff --git a/tests_metricflow/semantics/model/semantics/test_semantic_model_join_evaluator.py b/tests_metricflow/semantics/model/semantics/test_semantic_model_join_evaluator.py index 0401bc2101..a54ccc3e67 100644 --- a/tests_metricflow/semantics/model/semantics/test_semantic_model_join_evaluator.py +++ b/tests_metricflow/semantics/model/semantics/test_semantic_model_join_evaluator.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Dict, Mapping, Sequence +from typing import Dict, Sequence from dbt_semantic_interfaces.enum_extension import assert_values_exhausted from dbt_semantic_interfaces.protocols.entity import EntityType @@ -13,8 +13,6 @@ SemanticModelLink, ) -from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup - def _get_join_types_for_entity_type(entity_type: EntityType) -> Sequence[SemanticModelEntityJoinType]: """Exhaustively evaluate entity types and return a sequence of all possible join type pairs. @@ -207,124 +205,6 @@ def test_semantic_model_join_validation_on_missing_entity( ) -def test_distinct_target_instance_set_join_validation( - mf_engine_test_fixture_mapping: Mapping[SemanticManifestSetup, MetricFlowEngineTestFixture], - simple_semantic_manifest_lookup: SemanticManifestLookup, -) -> None: - """Tests instance set join validation to a PRIMARY or UNIQUE entity.""" - foreign_user_instance_set = ( - mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST] - .data_set_mapping["listings_latest"] - .instance_set - ) - primary_user_instance_set = ( - mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST] - .data_set_mapping["users_latest"] - .instance_set - ) - unique_user_instance_set = ( - mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST].data_set_mapping["companies"].instance_set - ) - user_entity_reference = EntityReference(element_name="user") - join_evaluator = SemanticModelJoinEvaluator( - semantic_model_lookup=simple_semantic_manifest_lookup.semantic_model_lookup - ) - - foreign_primary = join_evaluator.is_valid_instance_set_join( - left_instance_set=foreign_user_instance_set, - right_instance_set=primary_user_instance_set, - on_entity_reference=user_entity_reference, - ) - primary_primary = join_evaluator.is_valid_instance_set_join( - left_instance_set=primary_user_instance_set, - right_instance_set=primary_user_instance_set, - on_entity_reference=user_entity_reference, - ) - unique_primary = join_evaluator.is_valid_instance_set_join( - left_instance_set=unique_user_instance_set, - right_instance_set=primary_user_instance_set, - on_entity_reference=user_entity_reference, - ) - foreign_unique = join_evaluator.is_valid_instance_set_join( - left_instance_set=foreign_user_instance_set, - right_instance_set=unique_user_instance_set, - on_entity_reference=user_entity_reference, - ) - primary_unique = join_evaluator.is_valid_instance_set_join( - left_instance_set=primary_user_instance_set, - right_instance_set=unique_user_instance_set, - on_entity_reference=user_entity_reference, - ) - unique_unique = join_evaluator.is_valid_instance_set_join( - left_instance_set=unique_user_instance_set, - right_instance_set=unique_user_instance_set, - on_entity_reference=user_entity_reference, - ) - - results = { - "foreign to primary": foreign_primary, - "primary to primary": primary_primary, - "unique to primary": unique_primary, - "foreign to unique": foreign_unique, - "primary to unique": primary_unique, - "unique to unique": unique_unique, - } - assert all(results.values()), ( - f"All instance set level join types for primary and unique targets should be valid, but we found " - f"at least one that was not! Incorrectly failing types: {[k for k,v in results.items() if not v]}." - ) - - -def test_foreign_target_instance_set_join_validation( - mf_engine_test_fixture_mapping: Mapping[SemanticManifestSetup, MetricFlowEngineTestFixture], - simple_semantic_manifest_lookup: SemanticManifestLookup, -) -> None: - """Tests semantic model join validation to FOREIGN entity types.""" - foreign_user_instance_set = ( - mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST] - .data_set_mapping["listings_latest"] - .instance_set - ) - primary_user_instance_set = ( - mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST] - .data_set_mapping["users_latest"] - .instance_set - ) - unique_user_instance_set = ( - mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST].data_set_mapping["companies"].instance_set - ) - user_entity_reference = EntityReference(element_name="user") - join_evaluator = SemanticModelJoinEvaluator( - semantic_model_lookup=simple_semantic_manifest_lookup.semantic_model_lookup - ) - - foreign_foreign = join_evaluator.is_valid_instance_set_join( - left_instance_set=foreign_user_instance_set, - right_instance_set=foreign_user_instance_set, - on_entity_reference=user_entity_reference, - ) - primary_foreign = join_evaluator.is_valid_instance_set_join( - left_instance_set=primary_user_instance_set, - right_instance_set=foreign_user_instance_set, - on_entity_reference=user_entity_reference, - ) - unique_foreign = join_evaluator.is_valid_instance_set_join( - left_instance_set=unique_user_instance_set, - right_instance_set=foreign_user_instance_set, - on_entity_reference=user_entity_reference, - ) - - results = { - "foreign to foreign": foreign_foreign, - "primary to foreign": primary_foreign, - "unique to foreign": unique_foreign, - } - assert not any(results.values()), ( - f"All semantic model level joins against foreign targets should be invalid, but we found at least one " - f"that was not! Incorrectly passing types: {[k for k,v in results.items() if v]}." - ) - - def test_get_joinable_semantic_models_single_hop( # noqa: D103 partitioned_multi_hop_join_semantic_manifest_lookup: SemanticManifestLookup, ) -> None: @@ -498,88 +378,3 @@ def test_natural_entity_semantic_model_validation(scd_semantic_manifest_lookup: f"joins marked invalid: {[k for k,v in valid_joins.items() if not v]}. Invalid joins marked valid: " f"{[k for k, v in invalid_joins.items() if v]}." ) - - -def test_natural_entity_instance_set_validation( - mf_engine_test_fixture_mapping: Mapping[SemanticManifestSetup, MetricFlowEngineTestFixture], - scd_semantic_manifest_lookup: SemanticManifestLookup, -) -> None: - """Tests instance set validation for NATURAL target entity types. - - These tests rely on the scd_semantic_manifest_lookup, which makes extensive use of NATURAL key types. - """ - natural_user_instance_set = ( - mf_engine_test_fixture_mapping[SemanticManifestSetup.SCD_MANIFEST] - .data_set_mapping["primary_accounts"] - .instance_set - ) - primary_user_instance_set = ( - mf_engine_test_fixture_mapping[SemanticManifestSetup.SCD_MANIFEST].data_set_mapping["users_latest"].instance_set - ) - foreign_user_instance_set = ( - mf_engine_test_fixture_mapping[SemanticManifestSetup.SCD_MANIFEST] - .data_set_mapping["bookings_source"] - .instance_set - ) - unique_user_instance_set = ( - mf_engine_test_fixture_mapping[SemanticManifestSetup.SCD_MANIFEST].data_set_mapping["companies"].instance_set - ) - user_entity_reference = EntityReference(element_name="user") - join_evaluator = SemanticModelJoinEvaluator( - semantic_model_lookup=scd_semantic_manifest_lookup.semantic_model_lookup - ) - - # Valid cases - natural_primary = join_evaluator.is_valid_instance_set_join( - left_instance_set=natural_user_instance_set, - right_instance_set=primary_user_instance_set, - on_entity_reference=user_entity_reference, - ) - natural_unique = join_evaluator.is_valid_instance_set_join( - left_instance_set=natural_user_instance_set, - right_instance_set=unique_user_instance_set, - on_entity_reference=user_entity_reference, - ) - foreign_natural = join_evaluator.is_valid_instance_set_join( - left_instance_set=foreign_user_instance_set, - right_instance_set=natural_user_instance_set, - on_entity_reference=user_entity_reference, - ) - primary_natural = join_evaluator.is_valid_instance_set_join( - left_instance_set=primary_user_instance_set, - right_instance_set=natural_user_instance_set, - on_entity_reference=user_entity_reference, - ) - unique_natural = join_evaluator.is_valid_instance_set_join( - left_instance_set=unique_user_instance_set, - right_instance_set=natural_user_instance_set, - on_entity_reference=user_entity_reference, - ) - # Invalid cases - natural_foreign = join_evaluator.is_valid_instance_set_join( - left_instance_set=natural_user_instance_set, - right_instance_set=foreign_user_instance_set, - on_entity_reference=user_entity_reference, - ) - natural_natural = join_evaluator.is_valid_instance_set_join( - left_instance_set=natural_user_instance_set, - right_instance_set=natural_user_instance_set, - on_entity_reference=user_entity_reference, - ) - - valid_joins = { - "natural to primary": natural_primary, - "natural to unique": natural_unique, - "foreign to natural": foreign_natural, - "primary to natural": primary_natural, - "unique to natural": unique_natural, - } - invalid_joins = { - "natural to foreign": natural_foreign, - "natural to natural": natural_natural, - } - assert all(valid_joins.values()) and not any(invalid_joins.values()), ( - f"Found unexpected join validator results when validating joins involving natural key comparisons! Valid " - f"joins marked invalid: {[k for k,v in valid_joins.items() if not v]}. Invalid joins marked valid: " - f"{[k for k, v in invalid_joins.items() if v]}." - ) diff --git a/tests_metricflow/validation/test_join_validator.py b/tests_metricflow/validation/test_join_validator.py new file mode 100644 index 0000000000..cbea41a4eb --- /dev/null +++ b/tests_metricflow/validation/test_join_validator.py @@ -0,0 +1,212 @@ +from __future__ import annotations + +from typing import Mapping + +from dbt_semantic_interfaces.references import EntityReference +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup + +from metricflow.validation.dataflow_join_validator import JoinDataflowOutputValidator +from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup + + +def test_natural_entity_instance_set_validation( + mf_engine_test_fixture_mapping: Mapping[SemanticManifestSetup, MetricFlowEngineTestFixture], + scd_semantic_manifest_lookup: SemanticManifestLookup, +) -> None: + """Tests instance set validation for NATURAL target entity types. + + These tests rely on the scd_semantic_manifest_lookup, which makes extensive use of NATURAL key types. + """ + natural_user_instance_set = ( + mf_engine_test_fixture_mapping[SemanticManifestSetup.SCD_MANIFEST] + .data_set_mapping["primary_accounts"] + .instance_set + ) + primary_user_instance_set = ( + mf_engine_test_fixture_mapping[SemanticManifestSetup.SCD_MANIFEST].data_set_mapping["users_latest"].instance_set + ) + foreign_user_instance_set = ( + mf_engine_test_fixture_mapping[SemanticManifestSetup.SCD_MANIFEST] + .data_set_mapping["bookings_source"] + .instance_set + ) + unique_user_instance_set = ( + mf_engine_test_fixture_mapping[SemanticManifestSetup.SCD_MANIFEST].data_set_mapping["companies"].instance_set + ) + user_entity_reference = EntityReference(element_name="user") + join_evaluator = JoinDataflowOutputValidator( + semantic_model_lookup=scd_semantic_manifest_lookup.semantic_model_lookup + ) + + # Valid cases + natural_primary = join_evaluator.is_valid_instance_set_join( + left_instance_set=natural_user_instance_set, + right_instance_set=primary_user_instance_set, + on_entity_reference=user_entity_reference, + ) + natural_unique = join_evaluator.is_valid_instance_set_join( + left_instance_set=natural_user_instance_set, + right_instance_set=unique_user_instance_set, + on_entity_reference=user_entity_reference, + ) + foreign_natural = join_evaluator.is_valid_instance_set_join( + left_instance_set=foreign_user_instance_set, + right_instance_set=natural_user_instance_set, + on_entity_reference=user_entity_reference, + ) + primary_natural = join_evaluator.is_valid_instance_set_join( + left_instance_set=primary_user_instance_set, + right_instance_set=natural_user_instance_set, + on_entity_reference=user_entity_reference, + ) + unique_natural = join_evaluator.is_valid_instance_set_join( + left_instance_set=unique_user_instance_set, + right_instance_set=natural_user_instance_set, + on_entity_reference=user_entity_reference, + ) + # Invalid cases + natural_foreign = join_evaluator.is_valid_instance_set_join( + left_instance_set=natural_user_instance_set, + right_instance_set=foreign_user_instance_set, + on_entity_reference=user_entity_reference, + ) + natural_natural = join_evaluator.is_valid_instance_set_join( + left_instance_set=natural_user_instance_set, + right_instance_set=natural_user_instance_set, + on_entity_reference=user_entity_reference, + ) + + valid_joins = { + "natural to primary": natural_primary, + "natural to unique": natural_unique, + "foreign to natural": foreign_natural, + "primary to natural": primary_natural, + "unique to natural": unique_natural, + } + invalid_joins = { + "natural to foreign": natural_foreign, + "natural to natural": natural_natural, + } + assert all(valid_joins.values()) and not any(invalid_joins.values()), ( + f"Found unexpected join validator results when validating joins involving natural key comparisons! Valid " + f"joins marked invalid: {[k for k,v in valid_joins.items() if not v]}. Invalid joins marked valid: " + f"{[k for k, v in invalid_joins.items() if v]}." + ) + + +def test_distinct_target_instance_set_join_validation( + mf_engine_test_fixture_mapping: Mapping[SemanticManifestSetup, MetricFlowEngineTestFixture], + simple_semantic_manifest_lookup: SemanticManifestLookup, +) -> None: + """Tests instance set join validation to a PRIMARY or UNIQUE entity.""" + foreign_user_instance_set = ( + mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST] + .data_set_mapping["listings_latest"] + .instance_set + ) + primary_user_instance_set = ( + mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST] + .data_set_mapping["users_latest"] + .instance_set + ) + unique_user_instance_set = ( + mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST].data_set_mapping["companies"].instance_set + ) + user_entity_reference = EntityReference(element_name="user") + join_evaluator = JoinDataflowOutputValidator( + semantic_model_lookup=simple_semantic_manifest_lookup.semantic_model_lookup + ) + + foreign_primary = join_evaluator.is_valid_instance_set_join( + left_instance_set=foreign_user_instance_set, + right_instance_set=primary_user_instance_set, + on_entity_reference=user_entity_reference, + ) + primary_primary = join_evaluator.is_valid_instance_set_join( + left_instance_set=primary_user_instance_set, + right_instance_set=primary_user_instance_set, + on_entity_reference=user_entity_reference, + ) + unique_primary = join_evaluator.is_valid_instance_set_join( + left_instance_set=unique_user_instance_set, + right_instance_set=primary_user_instance_set, + on_entity_reference=user_entity_reference, + ) + foreign_unique = join_evaluator.is_valid_instance_set_join( + left_instance_set=foreign_user_instance_set, + right_instance_set=unique_user_instance_set, + on_entity_reference=user_entity_reference, + ) + primary_unique = join_evaluator.is_valid_instance_set_join( + left_instance_set=primary_user_instance_set, + right_instance_set=unique_user_instance_set, + on_entity_reference=user_entity_reference, + ) + unique_unique = join_evaluator.is_valid_instance_set_join( + left_instance_set=unique_user_instance_set, + right_instance_set=unique_user_instance_set, + on_entity_reference=user_entity_reference, + ) + + results = { + "foreign to primary": foreign_primary, + "primary to primary": primary_primary, + "unique to primary": unique_primary, + "foreign to unique": foreign_unique, + "primary to unique": primary_unique, + "unique to unique": unique_unique, + } + assert all(results.values()), ( + f"All instance set level join types for primary and unique targets should be valid, but we found " + f"at least one that was not! Incorrectly failing types: {[k for k,v in results.items() if not v]}." + ) + + +def test_foreign_target_instance_set_join_validation( + mf_engine_test_fixture_mapping: Mapping[SemanticManifestSetup, MetricFlowEngineTestFixture], + simple_semantic_manifest_lookup: SemanticManifestLookup, +) -> None: + """Tests semantic model join validation to FOREIGN entity types.""" + foreign_user_instance_set = ( + mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST] + .data_set_mapping["listings_latest"] + .instance_set + ) + primary_user_instance_set = ( + mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST] + .data_set_mapping["users_latest"] + .instance_set + ) + unique_user_instance_set = ( + mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST].data_set_mapping["companies"].instance_set + ) + user_entity_reference = EntityReference(element_name="user") + join_evaluator = JoinDataflowOutputValidator( + semantic_model_lookup=simple_semantic_manifest_lookup.semantic_model_lookup + ) + + foreign_foreign = join_evaluator.is_valid_instance_set_join( + left_instance_set=foreign_user_instance_set, + right_instance_set=foreign_user_instance_set, + on_entity_reference=user_entity_reference, + ) + primary_foreign = join_evaluator.is_valid_instance_set_join( + left_instance_set=primary_user_instance_set, + right_instance_set=foreign_user_instance_set, + on_entity_reference=user_entity_reference, + ) + unique_foreign = join_evaluator.is_valid_instance_set_join( + left_instance_set=unique_user_instance_set, + right_instance_set=foreign_user_instance_set, + on_entity_reference=user_entity_reference, + ) + + results = { + "foreign to foreign": foreign_foreign, + "primary to foreign": primary_foreign, + "unique to foreign": unique_foreign, + } + assert not any(results.values()), ( + f"All semantic model level joins against foreign targets should be invalid, but we found at least one " + f"that was not! Incorrectly passing types: {[k for k,v in results.items() if v]}." + ) From ec9d09253d11bdda9a3d01975bb30873df7b4c1e Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 12:20:43 -0700 Subject: [PATCH 65/80] Move semantic tests to `tests_metricflow_semantics`. --- tests_metricflow/cli/test_cli.py | 4 ++-- .../collection_helpers/__init__.py | 0 .../collection_helpers/test_merger.py | 0 .../collection_helpers/test_pretty_print.py | 0 .../model/__init__.py | 0 .../model/example_project_configuration.py | 0 .../model/modify/__init__.py | 0 .../model/modify/modify_input_measure_filter.py | 0 .../model/modify/modify_input_metric_filter.py | 0 .../model/modify/modify_manifest.py | 0 .../model/modify/modify_metric_filter.py | 0 .../model/semantics/__init__.py | 0 .../model/semantics/test_linkable_element_set.py | 0 .../model/semantics/test_linkable_spec_resolver.py | 0 .../model/semantics/test_semantic_model_join_evaluator.py | 0 .../model/test_semantic_model_container.py | 0 .../model/test_where_filter_spec.py | 2 +- .../naming/__init__.py | 0 .../naming/conftest.py | 0 .../naming/test_dunder_naming_scheme.py | 0 .../naming/test_metric_name_scheme.py | 0 .../naming/test_object_builder_naming_scheme.py | 0 .../query/__init__.py | 0 .../query/group_by_item/__init__.py | 0 .../query/group_by_item/ambiguous_resolution_query_id.py | 0 .../query/group_by_item/conftest.py | 2 +- .../group_by_item/filter_spec_resolution/__init__.py | 0 .../filter_spec_resolution/test_spec_lookup.py | 8 ++++---- .../query/group_by_item/resolution_dag/__init__.py | 0 .../group_by_item/resolution_dag/test_resolution_dags.py | 2 +- .../query/group_by_item/test_available_group_by_items.py | 2 +- .../query/group_by_item/test_matching_item_for_filters.py | 2 +- .../group_by_item/test_matching_item_for_querying.py | 2 +- .../query/test_ambiguous_entity_path.py | 0 .../query/test_query_parser.py | 2 +- .../query/test_suggestions.py | 4 ++-- .../specs/__init__.py | 0 .../specs/conftest.py | 0 .../specs/patterns/__init__.py | 0 .../specs/patterns/test_entity_link_pattern.py | 0 .../specs/patterns/test_typed_patterns.py | 0 .../specs/test_time_dimension_spec.py | 0 .../specs/test_where_filter_entity.py | 2 +- .../sql/__init__.py | 0 .../sql/test_bind_parameter_serialization.py | 0 .../test_specs.py | 0 46 files changed, 16 insertions(+), 16 deletions(-) rename {tests_metricflow/semantics => tests_metricflow_semantics}/collection_helpers/__init__.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/collection_helpers/test_merger.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/collection_helpers/test_pretty_print.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/__init__.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/example_project_configuration.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/modify/__init__.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/modify/modify_input_measure_filter.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/modify/modify_input_metric_filter.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/modify/modify_manifest.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/modify/modify_metric_filter.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/semantics/__init__.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/semantics/test_linkable_element_set.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/semantics/test_linkable_spec_resolver.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/semantics/test_semantic_model_join_evaluator.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/test_semantic_model_container.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/model/test_where_filter_spec.py (99%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/naming/__init__.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/naming/conftest.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/naming/test_dunder_naming_scheme.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/naming/test_metric_name_scheme.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/naming/test_object_builder_naming_scheme.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/__init__.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/group_by_item/__init__.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/group_by_item/ambiguous_resolution_query_id.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/group_by_item/conftest.py (98%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/group_by_item/filter_spec_resolution/__init__.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/group_by_item/filter_spec_resolution/test_spec_lookup.py (97%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/group_by_item/resolution_dag/__init__.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/group_by_item/resolution_dag/test_resolution_dags.py (95%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/group_by_item/test_available_group_by_items.py (96%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/group_by_item/test_matching_item_for_filters.py (97%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/group_by_item/test_matching_item_for_querying.py (99%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/test_ambiguous_entity_path.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/test_query_parser.py (99%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/query/test_suggestions.py (97%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/specs/__init__.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/specs/conftest.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/specs/patterns/__init__.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/specs/patterns/test_entity_link_pattern.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/specs/patterns/test_typed_patterns.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/specs/test_time_dimension_spec.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/specs/test_where_filter_entity.py (94%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/sql/__init__.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/sql/test_bind_parameter_serialization.py (100%) rename {tests_metricflow/semantics => tests_metricflow_semantics}/test_specs.py (100%) diff --git a/tests_metricflow/cli/test_cli.py b/tests_metricflow/cli/test_cli.py index bf3d78c019..3aead3e650 100644 --- a/tests_metricflow/cli/test_cli.py +++ b/tests_metricflow/cli/test_cli.py @@ -29,10 +29,10 @@ ) from metricflow.protocols.sql_client import SqlClient, SqlEngine from tests_metricflow.fixtures.cli_fixtures import MetricFlowCliRunner -from tests_metricflow.semantics.model.example_project_configuration import ( +from tests_metricflow.snapshot_utils import assert_str_snapshot_equal +from tests_metricflow_semantics.model.example_project_configuration import ( EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE, ) -from tests_metricflow.snapshot_utils import assert_str_snapshot_equal logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/collection_helpers/__init__.py b/tests_metricflow_semantics/collection_helpers/__init__.py similarity index 100% rename from tests_metricflow/semantics/collection_helpers/__init__.py rename to tests_metricflow_semantics/collection_helpers/__init__.py diff --git a/tests_metricflow/semantics/collection_helpers/test_merger.py b/tests_metricflow_semantics/collection_helpers/test_merger.py similarity index 100% rename from tests_metricflow/semantics/collection_helpers/test_merger.py rename to tests_metricflow_semantics/collection_helpers/test_merger.py diff --git a/tests_metricflow/semantics/collection_helpers/test_pretty_print.py b/tests_metricflow_semantics/collection_helpers/test_pretty_print.py similarity index 100% rename from tests_metricflow/semantics/collection_helpers/test_pretty_print.py rename to tests_metricflow_semantics/collection_helpers/test_pretty_print.py diff --git a/tests_metricflow/semantics/model/__init__.py b/tests_metricflow_semantics/model/__init__.py similarity index 100% rename from tests_metricflow/semantics/model/__init__.py rename to tests_metricflow_semantics/model/__init__.py diff --git a/tests_metricflow/semantics/model/example_project_configuration.py b/tests_metricflow_semantics/model/example_project_configuration.py similarity index 100% rename from tests_metricflow/semantics/model/example_project_configuration.py rename to tests_metricflow_semantics/model/example_project_configuration.py diff --git a/tests_metricflow/semantics/model/modify/__init__.py b/tests_metricflow_semantics/model/modify/__init__.py similarity index 100% rename from tests_metricflow/semantics/model/modify/__init__.py rename to tests_metricflow_semantics/model/modify/__init__.py diff --git a/tests_metricflow/semantics/model/modify/modify_input_measure_filter.py b/tests_metricflow_semantics/model/modify/modify_input_measure_filter.py similarity index 100% rename from tests_metricflow/semantics/model/modify/modify_input_measure_filter.py rename to tests_metricflow_semantics/model/modify/modify_input_measure_filter.py diff --git a/tests_metricflow/semantics/model/modify/modify_input_metric_filter.py b/tests_metricflow_semantics/model/modify/modify_input_metric_filter.py similarity index 100% rename from tests_metricflow/semantics/model/modify/modify_input_metric_filter.py rename to tests_metricflow_semantics/model/modify/modify_input_metric_filter.py diff --git a/tests_metricflow/semantics/model/modify/modify_manifest.py b/tests_metricflow_semantics/model/modify/modify_manifest.py similarity index 100% rename from tests_metricflow/semantics/model/modify/modify_manifest.py rename to tests_metricflow_semantics/model/modify/modify_manifest.py diff --git a/tests_metricflow/semantics/model/modify/modify_metric_filter.py b/tests_metricflow_semantics/model/modify/modify_metric_filter.py similarity index 100% rename from tests_metricflow/semantics/model/modify/modify_metric_filter.py rename to tests_metricflow_semantics/model/modify/modify_metric_filter.py diff --git a/tests_metricflow/semantics/model/semantics/__init__.py b/tests_metricflow_semantics/model/semantics/__init__.py similarity index 100% rename from tests_metricflow/semantics/model/semantics/__init__.py rename to tests_metricflow_semantics/model/semantics/__init__.py diff --git a/tests_metricflow/semantics/model/semantics/test_linkable_element_set.py b/tests_metricflow_semantics/model/semantics/test_linkable_element_set.py similarity index 100% rename from tests_metricflow/semantics/model/semantics/test_linkable_element_set.py rename to tests_metricflow_semantics/model/semantics/test_linkable_element_set.py diff --git a/tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py b/tests_metricflow_semantics/model/semantics/test_linkable_spec_resolver.py similarity index 100% rename from tests_metricflow/semantics/model/semantics/test_linkable_spec_resolver.py rename to tests_metricflow_semantics/model/semantics/test_linkable_spec_resolver.py diff --git a/tests_metricflow/semantics/model/semantics/test_semantic_model_join_evaluator.py b/tests_metricflow_semantics/model/semantics/test_semantic_model_join_evaluator.py similarity index 100% rename from tests_metricflow/semantics/model/semantics/test_semantic_model_join_evaluator.py rename to tests_metricflow_semantics/model/semantics/test_semantic_model_join_evaluator.py diff --git a/tests_metricflow/semantics/model/test_semantic_model_container.py b/tests_metricflow_semantics/model/test_semantic_model_container.py similarity index 100% rename from tests_metricflow/semantics/model/test_semantic_model_container.py rename to tests_metricflow_semantics/model/test_semantic_model_container.py diff --git a/tests_metricflow/semantics/model/test_where_filter_spec.py b/tests_metricflow_semantics/model/test_where_filter_spec.py similarity index 99% rename from tests_metricflow/semantics/model/test_where_filter_spec.py rename to tests_metricflow_semantics/model/test_where_filter_spec.py index 56ad459413..5e234f104c 100644 --- a/tests_metricflow/semantics/model/test_where_filter_spec.py +++ b/tests_metricflow_semantics/model/test_where_filter_spec.py @@ -45,7 +45,7 @@ ) from metricflow_semantics.specs.where_filter_transform import WhereSpecFactory -from tests_metricflow.semantics.specs.conftest import EXAMPLE_FILTER_LOCATION +from tests_metricflow_semantics.specs.conftest import EXAMPLE_FILTER_LOCATION logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/naming/__init__.py b/tests_metricflow_semantics/naming/__init__.py similarity index 100% rename from tests_metricflow/semantics/naming/__init__.py rename to tests_metricflow_semantics/naming/__init__.py diff --git a/tests_metricflow/semantics/naming/conftest.py b/tests_metricflow_semantics/naming/conftest.py similarity index 100% rename from tests_metricflow/semantics/naming/conftest.py rename to tests_metricflow_semantics/naming/conftest.py diff --git a/tests_metricflow/semantics/naming/test_dunder_naming_scheme.py b/tests_metricflow_semantics/naming/test_dunder_naming_scheme.py similarity index 100% rename from tests_metricflow/semantics/naming/test_dunder_naming_scheme.py rename to tests_metricflow_semantics/naming/test_dunder_naming_scheme.py diff --git a/tests_metricflow/semantics/naming/test_metric_name_scheme.py b/tests_metricflow_semantics/naming/test_metric_name_scheme.py similarity index 100% rename from tests_metricflow/semantics/naming/test_metric_name_scheme.py rename to tests_metricflow_semantics/naming/test_metric_name_scheme.py diff --git a/tests_metricflow/semantics/naming/test_object_builder_naming_scheme.py b/tests_metricflow_semantics/naming/test_object_builder_naming_scheme.py similarity index 100% rename from tests_metricflow/semantics/naming/test_object_builder_naming_scheme.py rename to tests_metricflow_semantics/naming/test_object_builder_naming_scheme.py diff --git a/tests_metricflow/semantics/query/__init__.py b/tests_metricflow_semantics/query/__init__.py similarity index 100% rename from tests_metricflow/semantics/query/__init__.py rename to tests_metricflow_semantics/query/__init__.py diff --git a/tests_metricflow/semantics/query/group_by_item/__init__.py b/tests_metricflow_semantics/query/group_by_item/__init__.py similarity index 100% rename from tests_metricflow/semantics/query/group_by_item/__init__.py rename to tests_metricflow_semantics/query/group_by_item/__init__.py diff --git a/tests_metricflow/semantics/query/group_by_item/ambiguous_resolution_query_id.py b/tests_metricflow_semantics/query/group_by_item/ambiguous_resolution_query_id.py similarity index 100% rename from tests_metricflow/semantics/query/group_by_item/ambiguous_resolution_query_id.py rename to tests_metricflow_semantics/query/group_by_item/ambiguous_resolution_query_id.py diff --git a/tests_metricflow/semantics/query/group_by_item/conftest.py b/tests_metricflow_semantics/query/group_by_item/conftest.py similarity index 98% rename from tests_metricflow/semantics/query/group_by_item/conftest.py rename to tests_metricflow_semantics/query/group_by_item/conftest.py index 9d286f497e..280c18d3eb 100644 --- a/tests_metricflow/semantics/query/group_by_item/conftest.py +++ b/tests_metricflow_semantics/query/group_by_item/conftest.py @@ -17,7 +17,7 @@ from metricflow_semantics.query.group_by_item.resolution_dag.dag_builder import GroupByItemResolutionDagBuilder from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration -from tests_metricflow.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId +from tests_metricflow_semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId def _build_resolution_dag( diff --git a/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/__init__.py b/tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/__init__.py similarity index 100% rename from tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/__init__.py rename to tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/__init__.py diff --git a/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py b/tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py similarity index 97% rename from tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py rename to tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py index 2ea3fcfac6..e77068305c 100644 --- a/tests_metricflow/semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py +++ b/tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py @@ -33,10 +33,10 @@ from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.test_helpers.snapshot_helpers import assert_str_snapshot_equal -from tests_metricflow.semantics.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform -from tests_metricflow.semantics.model.modify.modify_manifest import modify_manifest -from tests_metricflow.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform -from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId, _build_resolution_dag +from tests_metricflow_semantics.model.modify.modify_input_metric_filter import ModifyInputMetricFilterTransform +from tests_metricflow_semantics.model.modify.modify_manifest import modify_manifest +from tests_metricflow_semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform +from tests_metricflow_semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId, _build_resolution_dag logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/group_by_item/resolution_dag/__init__.py b/tests_metricflow_semantics/query/group_by_item/resolution_dag/__init__.py similarity index 100% rename from tests_metricflow/semantics/query/group_by_item/resolution_dag/__init__.py rename to tests_metricflow_semantics/query/group_by_item/resolution_dag/__init__.py diff --git a/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py b/tests_metricflow_semantics/query/group_by_item/resolution_dag/test_resolution_dags.py similarity index 95% rename from tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py rename to tests_metricflow_semantics/query/group_by_item/resolution_dag/test_resolution_dags.py index 106b7fa54b..e0f27e02c1 100644 --- a/tests_metricflow/semantics/query/group_by_item/resolution_dag/test_resolution_dags.py +++ b/tests_metricflow_semantics/query/group_by_item/resolution_dag/test_resolution_dags.py @@ -10,7 +10,7 @@ from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.test_helpers.snapshot_helpers import assert_plan_snapshot_text_equal -from tests_metricflow.semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId +from tests_metricflow_semantics.query.group_by_item.ambiguous_resolution_query_id import AmbiguousResolutionQueryId logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py b/tests_metricflow_semantics/query/group_by_item/test_available_group_by_items.py similarity index 96% rename from tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py rename to tests_metricflow_semantics/query/group_by_item/test_available_group_by_items.py index d8223818da..ffb7af27ff 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_available_group_by_items.py +++ b/tests_metricflow_semantics/query/group_by_item/test_available_group_by_items.py @@ -12,7 +12,7 @@ from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.test_helpers.snapshot_helpers import assert_linkable_spec_set_snapshot_equal -from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId +from tests_metricflow_semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py b/tests_metricflow_semantics/query/group_by_item/test_matching_item_for_filters.py similarity index 97% rename from tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py rename to tests_metricflow_semantics/query/group_by_item/test_matching_item_for_filters.py index cf899ff92b..76b5f61169 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_filters.py +++ b/tests_metricflow_semantics/query/group_by_item/test_matching_item_for_filters.py @@ -14,7 +14,7 @@ from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.test_helpers.snapshot_helpers import assert_object_snapshot_equal -from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId +from tests_metricflow_semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py b/tests_metricflow_semantics/query/group_by_item/test_matching_item_for_querying.py similarity index 99% rename from tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py rename to tests_metricflow_semantics/query/group_by_item/test_matching_item_for_querying.py index 84e451c838..41c0cf6afc 100644 --- a/tests_metricflow/semantics/query/group_by_item/test_matching_item_for_querying.py +++ b/tests_metricflow_semantics/query/group_by_item/test_matching_item_for_querying.py @@ -20,7 +20,7 @@ from metricflow_semantics.test_helpers.metric_time_dimension import MTD_SPEC_DAY, MTD_SPEC_MONTH, MTD_SPEC_YEAR from metricflow_semantics.test_helpers.snapshot_helpers import assert_object_snapshot_equal -from tests_metricflow.semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId +from tests_metricflow_semantics.query.group_by_item.conftest import AmbiguousResolutionQueryId logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/query/test_ambiguous_entity_path.py b/tests_metricflow_semantics/query/test_ambiguous_entity_path.py similarity index 100% rename from tests_metricflow/semantics/query/test_ambiguous_entity_path.py rename to tests_metricflow_semantics/query/test_ambiguous_entity_path.py diff --git a/tests_metricflow/semantics/query/test_query_parser.py b/tests_metricflow_semantics/query/test_query_parser.py similarity index 99% rename from tests_metricflow/semantics/query/test_query_parser.py rename to tests_metricflow_semantics/query/test_query_parser.py index c690835caf..d5f82d4927 100644 --- a/tests_metricflow/semantics/query/test_query_parser.py +++ b/tests_metricflow_semantics/query/test_query_parser.py @@ -32,7 +32,7 @@ ) from metricflow_semantics.test_helpers.metric_time_dimension import MTD -from tests_metricflow.semantics.model.example_project_configuration import ( +from tests_metricflow_semantics.model.example_project_configuration import ( EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE, ) diff --git a/tests_metricflow/semantics/query/test_suggestions.py b/tests_metricflow_semantics/query/test_suggestions.py similarity index 97% rename from tests_metricflow/semantics/query/test_suggestions.py rename to tests_metricflow_semantics/query/test_suggestions.py index 7a568c1742..8c4abfb81b 100644 --- a/tests_metricflow/semantics/query/test_suggestions.py +++ b/tests_metricflow_semantics/query/test_suggestions.py @@ -17,8 +17,8 @@ from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.test_helpers.snapshot_helpers import assert_str_snapshot_equal -from tests_metricflow.semantics.model.modify.modify_manifest import modify_manifest -from tests_metricflow.semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform +from tests_metricflow_semantics.model.modify.modify_manifest import modify_manifest +from tests_metricflow_semantics.model.modify.modify_metric_filter import ModifyMetricFilterTransform logger = logging.getLogger(__name__) diff --git a/tests_metricflow/semantics/specs/__init__.py b/tests_metricflow_semantics/specs/__init__.py similarity index 100% rename from tests_metricflow/semantics/specs/__init__.py rename to tests_metricflow_semantics/specs/__init__.py diff --git a/tests_metricflow/semantics/specs/conftest.py b/tests_metricflow_semantics/specs/conftest.py similarity index 100% rename from tests_metricflow/semantics/specs/conftest.py rename to tests_metricflow_semantics/specs/conftest.py diff --git a/tests_metricflow/semantics/specs/patterns/__init__.py b/tests_metricflow_semantics/specs/patterns/__init__.py similarity index 100% rename from tests_metricflow/semantics/specs/patterns/__init__.py rename to tests_metricflow_semantics/specs/patterns/__init__.py diff --git a/tests_metricflow/semantics/specs/patterns/test_entity_link_pattern.py b/tests_metricflow_semantics/specs/patterns/test_entity_link_pattern.py similarity index 100% rename from tests_metricflow/semantics/specs/patterns/test_entity_link_pattern.py rename to tests_metricflow_semantics/specs/patterns/test_entity_link_pattern.py diff --git a/tests_metricflow/semantics/specs/patterns/test_typed_patterns.py b/tests_metricflow_semantics/specs/patterns/test_typed_patterns.py similarity index 100% rename from tests_metricflow/semantics/specs/patterns/test_typed_patterns.py rename to tests_metricflow_semantics/specs/patterns/test_typed_patterns.py diff --git a/tests_metricflow/semantics/specs/test_time_dimension_spec.py b/tests_metricflow_semantics/specs/test_time_dimension_spec.py similarity index 100% rename from tests_metricflow/semantics/specs/test_time_dimension_spec.py rename to tests_metricflow_semantics/specs/test_time_dimension_spec.py diff --git a/tests_metricflow/semantics/specs/test_where_filter_entity.py b/tests_metricflow_semantics/specs/test_where_filter_entity.py similarity index 94% rename from tests_metricflow/semantics/specs/test_where_filter_entity.py rename to tests_metricflow_semantics/specs/test_where_filter_entity.py index ab42458114..21890fcb8b 100644 --- a/tests_metricflow/semantics/specs/test_where_filter_entity.py +++ b/tests_metricflow_semantics/specs/test_where_filter_entity.py @@ -9,7 +9,7 @@ from metricflow_semantics.specs.rendered_spec_tracker import RenderedSpecTracker from metricflow_semantics.specs.where_filter_entity import WhereFilterEntity -from tests_metricflow.semantics.specs.conftest import EXAMPLE_FILTER_LOCATION +from tests_metricflow_semantics.specs.conftest import EXAMPLE_FILTER_LOCATION def test_descending_cannot_be_set( # noqa diff --git a/tests_metricflow/semantics/sql/__init__.py b/tests_metricflow_semantics/sql/__init__.py similarity index 100% rename from tests_metricflow/semantics/sql/__init__.py rename to tests_metricflow_semantics/sql/__init__.py diff --git a/tests_metricflow/semantics/sql/test_bind_parameter_serialization.py b/tests_metricflow_semantics/sql/test_bind_parameter_serialization.py similarity index 100% rename from tests_metricflow/semantics/sql/test_bind_parameter_serialization.py rename to tests_metricflow_semantics/sql/test_bind_parameter_serialization.py diff --git a/tests_metricflow/semantics/test_specs.py b/tests_metricflow_semantics/test_specs.py similarity index 100% rename from tests_metricflow/semantics/test_specs.py rename to tests_metricflow_semantics/test_specs.py From 9b468a90ef58f53cea27fa0afdce4769a83434f5 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 12:48:39 -0700 Subject: [PATCH 66/80] Move `DunderColumnAssociationResolver` to `metricflow-semantics`. --- .../dunder_column_association_resolver.py | 40 +++++++++---------- metricflow/engine/metricflow_engine.py | 2 +- .../data_warehouse_model_validator.py | 2 +- .../dataflow/builder/test_node_data_set.py | 2 +- .../dataflow/builder/test_node_evaluator.py | 2 +- tests_metricflow/examples/test_node_sql.py | 2 +- tests_metricflow/fixtures/cli_fixtures.py | 2 +- .../fixtures/manifest_fixtures.py | 2 +- tests_metricflow/integration/conftest.py | 2 +- .../integration/test_configured_cases.py | 4 +- .../integration/test_rendered_query.py | 2 +- ...select_columns_with_measures_aggregated.py | 2 +- .../test_dataflow_to_execution.py | 2 +- 13 files changed, 30 insertions(+), 36 deletions(-) rename metricflow/plan_conversion/column_resolver.py => metricflow-semantics/metricflow_semantics/specs/dunder_column_association_resolver.py (98%) diff --git a/metricflow/plan_conversion/column_resolver.py b/metricflow-semantics/metricflow_semantics/specs/dunder_column_association_resolver.py similarity index 98% rename from metricflow/plan_conversion/column_resolver.py rename to metricflow-semantics/metricflow_semantics/specs/dunder_column_association_resolver.py index edb53349b7..d217067646 100644 --- a/metricflow/plan_conversion/column_resolver.py +++ b/metricflow-semantics/metricflow_semantics/specs/dunder_column_association_resolver.py @@ -1,7 +1,5 @@ from __future__ import annotations -import logging - from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.naming.linkable_spec_name import DUNDER, StructuredLinkableSpecName from metricflow_semantics.specs.column_assoc import ( @@ -21,7 +19,24 @@ TimeDimensionSpec, ) -logger = logging.getLogger(__name__) + +class DunderColumnAssociationResolver(ColumnAssociationResolver): + """Uses a double underscore to map specs to column names. + + For example: + + DimensionSpec(element_name='country', entity_links=['listing']) + + -> + + listing__country + """ + + def __init__(self, semantic_manifest_lookup: SemanticManifestLookup) -> None: # noqa: D107 + self._visitor_helper = DunderColumnAssociationResolverVisitor(semantic_manifest_lookup) + + def resolve_spec(self, spec: InstanceSpec) -> ColumnAssociation: # noqa: D102 + return spec.accept(self._visitor_helper) class DunderColumnAssociationResolverVisitor(InstanceSpecVisitor[ColumnAssociation]): @@ -92,22 +107,3 @@ def visit_metadata_spec(self, metadata_spec: MetadataSpec) -> ColumnAssociation: column_name=metadata_spec.qualified_name, single_column_correlation_key=SingleColumnCorrelationKey(), ) - - -class DunderColumnAssociationResolver(ColumnAssociationResolver): - """Uses a double underscore to map specs to column names. - - For example: - - DimensionSpec(element_name='country', entity_links=['listing']) - - -> - - listing__country - """ - - def __init__(self, semantic_manifest_lookup: SemanticManifestLookup) -> None: # noqa: D107 - self._visitor_helper = DunderColumnAssociationResolverVisitor(semantic_manifest_lookup) - - def resolve_spec(self, spec: InstanceSpec) -> ColumnAssociation: # noqa: D102 - return spec.accept(self._visitor_helper) diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 934fc29085..eb0e011623 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -29,6 +29,7 @@ from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.random_id import random_id from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.specs.query_param_implementations import SavedQueryParameter from metricflow_semantics.specs.spec_classes import InstanceSpecSet, MetricFlowQuerySpec from metricflow_semantics.time.time_source import TimeSource @@ -51,7 +52,6 @@ ) from metricflow.execution.execution_plan import ExecutionPlan, SqlQuery from metricflow.execution.executor import SequentialPlanExecutor -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient diff --git a/metricflow/validation/data_warehouse_model_validator.py b/metricflow/validation/data_warehouse_model_validator.py index 1cd6078050..7d43e34e11 100644 --- a/metricflow/validation/data_warehouse_model_validator.py +++ b/metricflow/validation/data_warehouse_model_validator.py @@ -29,6 +29,7 @@ ValidationWarning, ) from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.specs.spec_classes import InstanceSpecSet, LinkableInstanceSpec, MeasureSpec from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameters @@ -39,7 +40,6 @@ from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.dataset_classes import DataSet from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient diff --git a/tests_metricflow/dataflow/builder/test_node_data_set.py b/tests_metricflow/dataflow/builder/test_node_data_set.py index f3982c8b4b..30267070a5 100644 --- a/tests_metricflow/dataflow/builder/test_node_data_set.py +++ b/tests_metricflow/dataflow/builder/test_node_data_set.py @@ -12,6 +12,7 @@ ) from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.specs.column_assoc import ColumnAssociation, SingleColumnCorrelationKey +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.specs.spec_classes import ( LinklessEntitySpec, MeasureSpec, @@ -24,7 +25,6 @@ from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinToBaseOutputNode from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.dataset.sql_dataset import SqlDataSet -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.sql.sql_exprs import SqlColumnReference, SqlColumnReferenceExpression from metricflow.sql.sql_plan import ( diff --git a/tests_metricflow/dataflow/builder/test_node_evaluator.py b/tests_metricflow/dataflow/builder/test_node_evaluator.py index 57d458ed2c..07245d1257 100644 --- a/tests_metricflow/dataflow/builder/test_node_evaluator.py +++ b/tests_metricflow/dataflow/builder/test_node_evaluator.py @@ -6,6 +6,7 @@ import pytest from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntityReference, @@ -26,7 +27,6 @@ from metricflow.dataflow.builder.source_node import SourceNodeSet from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.dataset.dataset_classes import DataSet -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup diff --git a/tests_metricflow/examples/test_node_sql.py b/tests_metricflow/examples/test_node_sql.py index e96e533a9f..cd6e517563 100644 --- a/tests_metricflow/examples/test_node_sql.py +++ b/tests_metricflow/examples/test_node_sql.py @@ -7,6 +7,7 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow_semantics.mf_logging.pretty_print import mf_pformat from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.specs.spec_classes import InstanceSpecSet, TimeDimensionReference, TimeDimensionSpec from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver @@ -14,7 +15,6 @@ from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel diff --git a/tests_metricflow/fixtures/cli_fixtures.py b/tests_metricflow/fixtures/cli_fixtures.py index 80049b0c9b..5416c75366 100644 --- a/tests_metricflow/fixtures/cli_fixtures.py +++ b/tests_metricflow/fixtures/cli_fixtures.py @@ -11,13 +11,13 @@ from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest from dbt_semantic_interfaces.test_utils import as_datetime from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource from typing_extensions import override from dbt_metricflow.cli.cli_context import CLIContext from dbt_metricflow.cli.dbt_connectors.dbt_config_accessor import dbtArtifacts, dbtProjectMetadata from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.setup_fixtures import dbt_project_dir diff --git a/tests_metricflow/fixtures/manifest_fixtures.py b/tests_metricflow/fixtures/manifest_fixtures.py index fe05958dff..673b5eef22 100644 --- a/tests_metricflow/fixtures/manifest_fixtures.py +++ b/tests_metricflow/fixtures/manifest_fixtures.py @@ -13,6 +13,7 @@ from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.test_helpers.manifest_helpers import load_semantic_manifest from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource @@ -24,7 +25,6 @@ from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from tests_metricflow.fixtures.id_fixtures import IdNumberSpace, patch_id_generators_helper diff --git a/tests_metricflow/integration/conftest.py b/tests_metricflow/integration/conftest.py index 036529c942..19e0d13edc 100644 --- a/tests_metricflow/integration/conftest.py +++ b/tests_metricflow/integration/conftest.py @@ -5,11 +5,11 @@ import pytest from dbt_semantic_interfaces.test_utils import as_datetime from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource from metricflow.engine.metricflow_engine import MetricFlowEngine -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient diff --git a/tests_metricflow/integration/test_configured_cases.py b/tests_metricflow/integration/test_configured_cases.py index e48efead83..dab436efb5 100644 --- a/tests_metricflow/integration/test_configured_cases.py +++ b/tests_metricflow/integration/test_configured_cases.py @@ -15,14 +15,12 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.protocols.query_parameter import DimensionOrEntityQueryParameter +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.specs.query_param_implementations import DimensionOrEntityParameter, TimeDimensionParameter from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest -from metricflow.plan_conversion.column_resolver import ( - DunderColumnAssociationResolver, -) from metricflow.plan_conversion.time_spine import TimeSpineSource from metricflow.protocols.sql_client import SqlClient from metricflow.sql.sql_exprs import ( diff --git a/tests_metricflow/integration/test_rendered_query.py b/tests_metricflow/integration/test_rendered_query.py index f5bec91b9a..ec5d1c6563 100644 --- a/tests_metricflow/integration/test_rendered_query.py +++ b/tests_metricflow/integration/test_rendered_query.py @@ -4,11 +4,11 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.test_utils import as_datetime from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowQueryRequest -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.protocols.sql_client import SqlClient from tests_metricflow.integration.conftest import IntegrationTestHelpers from tests_metricflow.snapshot_utils import ( diff --git a/tests_metricflow/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py b/tests_metricflow/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py index c3ed57c33a..fbd9f7eb10 100644 --- a/tests_metricflow/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py +++ b/tests_metricflow/plan_conversion/instance_converters/test_create_select_columns_with_measures_aggregated.py @@ -4,9 +4,9 @@ from metricflow_semantics.instances import InstanceSet from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.specs.spec_classes import InstanceSpecSet, MeasureSpec, MetricInputMeasureSpec -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.instance_converters import ( CreateSelectColumnsWithMeasuresAggregated, FilterElements, diff --git a/tests_metricflow/plan_conversion/test_dataflow_to_execution.py b/tests_metricflow/plan_conversion/test_dataflow_to_execution.py index f7bc4eafb1..925c7b22e7 100644 --- a/tests_metricflow/plan_conversion/test_dataflow_to_execution.py +++ b/tests_metricflow/plan_conversion/test_dataflow_to_execution.py @@ -3,6 +3,7 @@ import pytest from _pytest.fixtures import FixtureRequest from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.specs.spec_classes import ( DimensionSpec, EntityReference, @@ -14,7 +15,6 @@ from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder from metricflow.execution.dataflow_to_execution import DataflowToExecutionPlanConverter -from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer From d2015999c4a70bdca13ee89c73d45b662012c8ae Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 12:54:02 -0700 Subject: [PATCH 67/80] Add `column_association_resolver` fixture. --- tests_metricflow_semantics/fixtures/manifest_fixtures.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests_metricflow_semantics/fixtures/manifest_fixtures.py b/tests_metricflow_semantics/fixtures/manifest_fixtures.py index 6c83a1cafc..accd99015c 100644 --- a/tests_metricflow_semantics/fixtures/manifest_fixtures.py +++ b/tests_metricflow_semantics/fixtures/manifest_fixtures.py @@ -6,6 +6,8 @@ import pytest from dbt_semantic_interfaces.implementations.semantic_manifest import PydanticSemanticManifest from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow_semantics.test_helpers.manifest_helpers import load_named_manifest @@ -92,3 +94,10 @@ def cyclic_join_semantic_manifest_lookup( # noqa: D103 cyclic_join_manifest: PydanticSemanticManifest, ) -> SemanticManifestLookup: return SemanticManifestLookup(cyclic_join_manifest) + + +@pytest.fixture(scope="session") +def column_association_resolver( # noqa: D103 + simple_semantic_manifest_lookup: SemanticManifestLookup, +) -> ColumnAssociationResolver: + return DunderColumnAssociationResolver(simple_semantic_manifest_lookup) From ae485c07d615c41f2f875320254aac17411812d1 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 13:09:55 -0700 Subject: [PATCH 68/80] Add missing `query_parser` fixture. --- tests_metricflow_semantics/query/test_suggestions.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests_metricflow_semantics/query/test_suggestions.py b/tests_metricflow_semantics/query/test_suggestions.py index 8c4abfb81b..8ab94aa9c5 100644 --- a/tests_metricflow_semantics/query/test_suggestions.py +++ b/tests_metricflow_semantics/query/test_suggestions.py @@ -23,6 +23,11 @@ logger = logging.getLogger(__name__) +@pytest.fixture +def query_parser(simple_semantic_manifest_lookup: SemanticManifestLookup) -> MetricFlowQueryParser: # noqa: D103 + return MetricFlowQueryParser(simple_semantic_manifest_lookup) + + def test_suggestions_for_group_by_item( # noqa: D103 request: FixtureRequest, mf_test_configuration: MetricFlowTestConfiguration, query_parser: MetricFlowQueryParser ) -> None: From 742b85bed528aca2029353de92d9e099abd81114 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 13:25:18 -0700 Subject: [PATCH 69/80] Update `pyproject.toml`. --- metricflow-semantics/pyproject.toml | 32 +++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/metricflow-semantics/pyproject.toml b/metricflow-semantics/pyproject.toml index bf26d084cb..97c42683c5 100644 --- a/metricflow-semantics/pyproject.toml +++ b/metricflow-semantics/pyproject.toml @@ -23,21 +23,35 @@ classifiers = [ "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", ] + dependencies = [ - "Jinja2>=3.1.3", - "PyYAML>=6.0, <7.0.0", "dbt-semantic-interfaces>=0.5.1, <0.6.0", - "graphviz>=0.18.2, <0.21", - "more-itertools>=8.10.0, <10.2.0", + "tabulate>=0.8.9", "pandas>=1.5.0, <1.6.0", - "pydantic>=1.10.0, <1.11.0", - "python-dateutil>=2.8.2, <2.9.0", "rapidfuzz>=3.0, <4.0", - "ruamel.yaml>=0.17.21, <0.18.0", - "tabulate>=0.8.9", - "typing_extensions>=4.4, <5.0", ] +[project.optional-dependencies] +dev-packages = [ + # Developer tools + "mypy>=1.7.0, <1.8.0", + "pre-commit>=3.2.2, <3.3.0", + "pytest-mock>=3.7.0, <3.8.0", + "pytest-xdist>=3.2.1, <3.3.0", + "pytest>=7.1.1, < 7.2.0", + "types-PyYAML", + "types-python-dateutil", + "types-tabulate", +] + +[tool.hatch.envs.dev-env] +description = "Environment for development. Includes a DuckDB-backed client." + +features = [ + "dev-packages", +] + + [project.urls] "Source Code" = "https://github.com/dbt-labs/metricflow/tree/main/metricflow-semanitcs" From d80bf8ac6ebdbdde53115f382ea18530e7744973 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 13:54:40 -0700 Subject: [PATCH 70/80] Move tests to `metricflow-semantics`. --- .../tests_metricflow_semantics}/__init__.py | 0 .../tests_metricflow_semantics}/collection_helpers/__init__.py | 0 .../tests_metricflow_semantics}/collection_helpers/test_merger.py | 0 .../collection_helpers/test_pretty_print.py | 0 .../tests_metricflow_semantics}/conftest.py | 0 .../tests_metricflow_semantics}/fixtures/__init__.py | 0 .../tests_metricflow_semantics}/fixtures/manifest_fixtures.py | 0 .../tests_metricflow_semantics}/fixtures/setup_fixtures.py | 0 .../tests_metricflow_semantics}/model/__init__.py | 0 .../model/example_project_configuration.py | 0 .../tests_metricflow_semantics}/model/modify/__init__.py | 0 .../model/modify/modify_input_measure_filter.py | 0 .../model/modify/modify_input_metric_filter.py | 0 .../tests_metricflow_semantics}/model/modify/modify_manifest.py | 0 .../model/modify/modify_metric_filter.py | 0 .../tests_metricflow_semantics}/model/semantics/__init__.py | 0 .../model/semantics/test_linkable_element_set.py | 0 .../model/semantics/test_linkable_spec_resolver.py | 0 .../model/semantics/test_semantic_model_join_evaluator.py | 0 .../model/test_semantic_model_container.py | 0 .../tests_metricflow_semantics}/model/test_where_filter_spec.py | 0 .../tests_metricflow_semantics}/naming/__init__.py | 0 .../tests_metricflow_semantics}/naming/conftest.py | 0 .../naming/test_dunder_naming_scheme.py | 0 .../tests_metricflow_semantics}/naming/test_metric_name_scheme.py | 0 .../naming/test_object_builder_naming_scheme.py | 0 .../tests_metricflow_semantics}/query/__init__.py | 0 .../tests_metricflow_semantics}/query/group_by_item/__init__.py | 0 .../query/group_by_item/ambiguous_resolution_query_id.py | 0 .../tests_metricflow_semantics}/query/group_by_item/conftest.py | 0 .../query/group_by_item/filter_spec_resolution/__init__.py | 0 .../group_by_item/filter_spec_resolution/test_spec_lookup.py | 0 .../query/group_by_item/resolution_dag/__init__.py | 0 .../query/group_by_item/resolution_dag/test_resolution_dags.py | 0 .../query/group_by_item/test_available_group_by_items.py | 0 .../query/group_by_item/test_matching_item_for_filters.py | 0 .../query/group_by_item/test_matching_item_for_querying.py | 0 .../query/test_ambiguous_entity_path.py | 0 .../tests_metricflow_semantics}/query/test_query_parser.py | 0 .../tests_metricflow_semantics}/query/test_suggestions.py | 0 .../tests_metricflow_semantics}/specs/__init__.py | 0 .../tests_metricflow_semantics}/specs/conftest.py | 0 .../tests_metricflow_semantics}/specs/patterns/__init__.py | 0 .../specs/patterns/test_entity_link_pattern.py | 0 .../specs/patterns/test_typed_patterns.py | 0 .../tests_metricflow_semantics}/specs/test_time_dimension_spec.py | 0 .../tests_metricflow_semantics}/specs/test_where_filter_entity.py | 0 .../tests_metricflow_semantics}/sql/__init__.py | 0 .../sql/test_bind_parameter_serialization.py | 0 .../tests_metricflow_semantics}/test_specs.py | 0 50 files changed, 0 insertions(+), 0 deletions(-) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/collection_helpers/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/collection_helpers/test_merger.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/collection_helpers/test_pretty_print.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/conftest.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/fixtures/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/fixtures/manifest_fixtures.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/fixtures/setup_fixtures.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/example_project_configuration.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/modify/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/modify/modify_input_measure_filter.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/modify/modify_input_metric_filter.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/modify/modify_manifest.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/modify/modify_metric_filter.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/semantics/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/semantics/test_linkable_element_set.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/semantics/test_linkable_spec_resolver.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/semantics/test_semantic_model_join_evaluator.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/test_semantic_model_container.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/model/test_where_filter_spec.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/naming/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/naming/conftest.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/naming/test_dunder_naming_scheme.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/naming/test_metric_name_scheme.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/naming/test_object_builder_naming_scheme.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/group_by_item/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/group_by_item/ambiguous_resolution_query_id.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/group_by_item/conftest.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/group_by_item/filter_spec_resolution/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/group_by_item/filter_spec_resolution/test_spec_lookup.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/group_by_item/resolution_dag/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/group_by_item/resolution_dag/test_resolution_dags.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/group_by_item/test_available_group_by_items.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/group_by_item/test_matching_item_for_filters.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/group_by_item/test_matching_item_for_querying.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/test_ambiguous_entity_path.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/test_query_parser.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/query/test_suggestions.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/specs/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/specs/conftest.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/specs/patterns/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/specs/patterns/test_entity_link_pattern.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/specs/patterns/test_typed_patterns.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/specs/test_time_dimension_spec.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/specs/test_where_filter_entity.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/sql/__init__.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/sql/test_bind_parameter_serialization.py (100%) rename {tests_metricflow_semantics => metricflow-semantics/tests_metricflow_semantics}/test_specs.py (100%) diff --git a/tests_metricflow_semantics/__init__.py b/metricflow-semantics/tests_metricflow_semantics/__init__.py similarity index 100% rename from tests_metricflow_semantics/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/__init__.py diff --git a/tests_metricflow_semantics/collection_helpers/__init__.py b/metricflow-semantics/tests_metricflow_semantics/collection_helpers/__init__.py similarity index 100% rename from tests_metricflow_semantics/collection_helpers/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/collection_helpers/__init__.py diff --git a/tests_metricflow_semantics/collection_helpers/test_merger.py b/metricflow-semantics/tests_metricflow_semantics/collection_helpers/test_merger.py similarity index 100% rename from tests_metricflow_semantics/collection_helpers/test_merger.py rename to metricflow-semantics/tests_metricflow_semantics/collection_helpers/test_merger.py diff --git a/tests_metricflow_semantics/collection_helpers/test_pretty_print.py b/metricflow-semantics/tests_metricflow_semantics/collection_helpers/test_pretty_print.py similarity index 100% rename from tests_metricflow_semantics/collection_helpers/test_pretty_print.py rename to metricflow-semantics/tests_metricflow_semantics/collection_helpers/test_pretty_print.py diff --git a/tests_metricflow_semantics/conftest.py b/metricflow-semantics/tests_metricflow_semantics/conftest.py similarity index 100% rename from tests_metricflow_semantics/conftest.py rename to metricflow-semantics/tests_metricflow_semantics/conftest.py diff --git a/tests_metricflow_semantics/fixtures/__init__.py b/metricflow-semantics/tests_metricflow_semantics/fixtures/__init__.py similarity index 100% rename from tests_metricflow_semantics/fixtures/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/fixtures/__init__.py diff --git a/tests_metricflow_semantics/fixtures/manifest_fixtures.py b/metricflow-semantics/tests_metricflow_semantics/fixtures/manifest_fixtures.py similarity index 100% rename from tests_metricflow_semantics/fixtures/manifest_fixtures.py rename to metricflow-semantics/tests_metricflow_semantics/fixtures/manifest_fixtures.py diff --git a/tests_metricflow_semantics/fixtures/setup_fixtures.py b/metricflow-semantics/tests_metricflow_semantics/fixtures/setup_fixtures.py similarity index 100% rename from tests_metricflow_semantics/fixtures/setup_fixtures.py rename to metricflow-semantics/tests_metricflow_semantics/fixtures/setup_fixtures.py diff --git a/tests_metricflow_semantics/model/__init__.py b/metricflow-semantics/tests_metricflow_semantics/model/__init__.py similarity index 100% rename from tests_metricflow_semantics/model/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/model/__init__.py diff --git a/tests_metricflow_semantics/model/example_project_configuration.py b/metricflow-semantics/tests_metricflow_semantics/model/example_project_configuration.py similarity index 100% rename from tests_metricflow_semantics/model/example_project_configuration.py rename to metricflow-semantics/tests_metricflow_semantics/model/example_project_configuration.py diff --git a/tests_metricflow_semantics/model/modify/__init__.py b/metricflow-semantics/tests_metricflow_semantics/model/modify/__init__.py similarity index 100% rename from tests_metricflow_semantics/model/modify/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/model/modify/__init__.py diff --git a/tests_metricflow_semantics/model/modify/modify_input_measure_filter.py b/metricflow-semantics/tests_metricflow_semantics/model/modify/modify_input_measure_filter.py similarity index 100% rename from tests_metricflow_semantics/model/modify/modify_input_measure_filter.py rename to metricflow-semantics/tests_metricflow_semantics/model/modify/modify_input_measure_filter.py diff --git a/tests_metricflow_semantics/model/modify/modify_input_metric_filter.py b/metricflow-semantics/tests_metricflow_semantics/model/modify/modify_input_metric_filter.py similarity index 100% rename from tests_metricflow_semantics/model/modify/modify_input_metric_filter.py rename to metricflow-semantics/tests_metricflow_semantics/model/modify/modify_input_metric_filter.py diff --git a/tests_metricflow_semantics/model/modify/modify_manifest.py b/metricflow-semantics/tests_metricflow_semantics/model/modify/modify_manifest.py similarity index 100% rename from tests_metricflow_semantics/model/modify/modify_manifest.py rename to metricflow-semantics/tests_metricflow_semantics/model/modify/modify_manifest.py diff --git a/tests_metricflow_semantics/model/modify/modify_metric_filter.py b/metricflow-semantics/tests_metricflow_semantics/model/modify/modify_metric_filter.py similarity index 100% rename from tests_metricflow_semantics/model/modify/modify_metric_filter.py rename to metricflow-semantics/tests_metricflow_semantics/model/modify/modify_metric_filter.py diff --git a/tests_metricflow_semantics/model/semantics/__init__.py b/metricflow-semantics/tests_metricflow_semantics/model/semantics/__init__.py similarity index 100% rename from tests_metricflow_semantics/model/semantics/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/model/semantics/__init__.py diff --git a/tests_metricflow_semantics/model/semantics/test_linkable_element_set.py b/metricflow-semantics/tests_metricflow_semantics/model/semantics/test_linkable_element_set.py similarity index 100% rename from tests_metricflow_semantics/model/semantics/test_linkable_element_set.py rename to metricflow-semantics/tests_metricflow_semantics/model/semantics/test_linkable_element_set.py diff --git a/tests_metricflow_semantics/model/semantics/test_linkable_spec_resolver.py b/metricflow-semantics/tests_metricflow_semantics/model/semantics/test_linkable_spec_resolver.py similarity index 100% rename from tests_metricflow_semantics/model/semantics/test_linkable_spec_resolver.py rename to metricflow-semantics/tests_metricflow_semantics/model/semantics/test_linkable_spec_resolver.py diff --git a/tests_metricflow_semantics/model/semantics/test_semantic_model_join_evaluator.py b/metricflow-semantics/tests_metricflow_semantics/model/semantics/test_semantic_model_join_evaluator.py similarity index 100% rename from tests_metricflow_semantics/model/semantics/test_semantic_model_join_evaluator.py rename to metricflow-semantics/tests_metricflow_semantics/model/semantics/test_semantic_model_join_evaluator.py diff --git a/tests_metricflow_semantics/model/test_semantic_model_container.py b/metricflow-semantics/tests_metricflow_semantics/model/test_semantic_model_container.py similarity index 100% rename from tests_metricflow_semantics/model/test_semantic_model_container.py rename to metricflow-semantics/tests_metricflow_semantics/model/test_semantic_model_container.py diff --git a/tests_metricflow_semantics/model/test_where_filter_spec.py b/metricflow-semantics/tests_metricflow_semantics/model/test_where_filter_spec.py similarity index 100% rename from tests_metricflow_semantics/model/test_where_filter_spec.py rename to metricflow-semantics/tests_metricflow_semantics/model/test_where_filter_spec.py diff --git a/tests_metricflow_semantics/naming/__init__.py b/metricflow-semantics/tests_metricflow_semantics/naming/__init__.py similarity index 100% rename from tests_metricflow_semantics/naming/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/naming/__init__.py diff --git a/tests_metricflow_semantics/naming/conftest.py b/metricflow-semantics/tests_metricflow_semantics/naming/conftest.py similarity index 100% rename from tests_metricflow_semantics/naming/conftest.py rename to metricflow-semantics/tests_metricflow_semantics/naming/conftest.py diff --git a/tests_metricflow_semantics/naming/test_dunder_naming_scheme.py b/metricflow-semantics/tests_metricflow_semantics/naming/test_dunder_naming_scheme.py similarity index 100% rename from tests_metricflow_semantics/naming/test_dunder_naming_scheme.py rename to metricflow-semantics/tests_metricflow_semantics/naming/test_dunder_naming_scheme.py diff --git a/tests_metricflow_semantics/naming/test_metric_name_scheme.py b/metricflow-semantics/tests_metricflow_semantics/naming/test_metric_name_scheme.py similarity index 100% rename from tests_metricflow_semantics/naming/test_metric_name_scheme.py rename to metricflow-semantics/tests_metricflow_semantics/naming/test_metric_name_scheme.py diff --git a/tests_metricflow_semantics/naming/test_object_builder_naming_scheme.py b/metricflow-semantics/tests_metricflow_semantics/naming/test_object_builder_naming_scheme.py similarity index 100% rename from tests_metricflow_semantics/naming/test_object_builder_naming_scheme.py rename to metricflow-semantics/tests_metricflow_semantics/naming/test_object_builder_naming_scheme.py diff --git a/tests_metricflow_semantics/query/__init__.py b/metricflow-semantics/tests_metricflow_semantics/query/__init__.py similarity index 100% rename from tests_metricflow_semantics/query/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/query/__init__.py diff --git a/tests_metricflow_semantics/query/group_by_item/__init__.py b/metricflow-semantics/tests_metricflow_semantics/query/group_by_item/__init__.py similarity index 100% rename from tests_metricflow_semantics/query/group_by_item/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/query/group_by_item/__init__.py diff --git a/tests_metricflow_semantics/query/group_by_item/ambiguous_resolution_query_id.py b/metricflow-semantics/tests_metricflow_semantics/query/group_by_item/ambiguous_resolution_query_id.py similarity index 100% rename from tests_metricflow_semantics/query/group_by_item/ambiguous_resolution_query_id.py rename to metricflow-semantics/tests_metricflow_semantics/query/group_by_item/ambiguous_resolution_query_id.py diff --git a/tests_metricflow_semantics/query/group_by_item/conftest.py b/metricflow-semantics/tests_metricflow_semantics/query/group_by_item/conftest.py similarity index 100% rename from tests_metricflow_semantics/query/group_by_item/conftest.py rename to metricflow-semantics/tests_metricflow_semantics/query/group_by_item/conftest.py diff --git a/tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/__init__.py b/metricflow-semantics/tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/__init__.py similarity index 100% rename from tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/__init__.py diff --git a/tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py b/metricflow-semantics/tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py similarity index 100% rename from tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py rename to metricflow-semantics/tests_metricflow_semantics/query/group_by_item/filter_spec_resolution/test_spec_lookup.py diff --git a/tests_metricflow_semantics/query/group_by_item/resolution_dag/__init__.py b/metricflow-semantics/tests_metricflow_semantics/query/group_by_item/resolution_dag/__init__.py similarity index 100% rename from tests_metricflow_semantics/query/group_by_item/resolution_dag/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/query/group_by_item/resolution_dag/__init__.py diff --git a/tests_metricflow_semantics/query/group_by_item/resolution_dag/test_resolution_dags.py b/metricflow-semantics/tests_metricflow_semantics/query/group_by_item/resolution_dag/test_resolution_dags.py similarity index 100% rename from tests_metricflow_semantics/query/group_by_item/resolution_dag/test_resolution_dags.py rename to metricflow-semantics/tests_metricflow_semantics/query/group_by_item/resolution_dag/test_resolution_dags.py diff --git a/tests_metricflow_semantics/query/group_by_item/test_available_group_by_items.py b/metricflow-semantics/tests_metricflow_semantics/query/group_by_item/test_available_group_by_items.py similarity index 100% rename from tests_metricflow_semantics/query/group_by_item/test_available_group_by_items.py rename to metricflow-semantics/tests_metricflow_semantics/query/group_by_item/test_available_group_by_items.py diff --git a/tests_metricflow_semantics/query/group_by_item/test_matching_item_for_filters.py b/metricflow-semantics/tests_metricflow_semantics/query/group_by_item/test_matching_item_for_filters.py similarity index 100% rename from tests_metricflow_semantics/query/group_by_item/test_matching_item_for_filters.py rename to metricflow-semantics/tests_metricflow_semantics/query/group_by_item/test_matching_item_for_filters.py diff --git a/tests_metricflow_semantics/query/group_by_item/test_matching_item_for_querying.py b/metricflow-semantics/tests_metricflow_semantics/query/group_by_item/test_matching_item_for_querying.py similarity index 100% rename from tests_metricflow_semantics/query/group_by_item/test_matching_item_for_querying.py rename to metricflow-semantics/tests_metricflow_semantics/query/group_by_item/test_matching_item_for_querying.py diff --git a/tests_metricflow_semantics/query/test_ambiguous_entity_path.py b/metricflow-semantics/tests_metricflow_semantics/query/test_ambiguous_entity_path.py similarity index 100% rename from tests_metricflow_semantics/query/test_ambiguous_entity_path.py rename to metricflow-semantics/tests_metricflow_semantics/query/test_ambiguous_entity_path.py diff --git a/tests_metricflow_semantics/query/test_query_parser.py b/metricflow-semantics/tests_metricflow_semantics/query/test_query_parser.py similarity index 100% rename from tests_metricflow_semantics/query/test_query_parser.py rename to metricflow-semantics/tests_metricflow_semantics/query/test_query_parser.py diff --git a/tests_metricflow_semantics/query/test_suggestions.py b/metricflow-semantics/tests_metricflow_semantics/query/test_suggestions.py similarity index 100% rename from tests_metricflow_semantics/query/test_suggestions.py rename to metricflow-semantics/tests_metricflow_semantics/query/test_suggestions.py diff --git a/tests_metricflow_semantics/specs/__init__.py b/metricflow-semantics/tests_metricflow_semantics/specs/__init__.py similarity index 100% rename from tests_metricflow_semantics/specs/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/specs/__init__.py diff --git a/tests_metricflow_semantics/specs/conftest.py b/metricflow-semantics/tests_metricflow_semantics/specs/conftest.py similarity index 100% rename from tests_metricflow_semantics/specs/conftest.py rename to metricflow-semantics/tests_metricflow_semantics/specs/conftest.py diff --git a/tests_metricflow_semantics/specs/patterns/__init__.py b/metricflow-semantics/tests_metricflow_semantics/specs/patterns/__init__.py similarity index 100% rename from tests_metricflow_semantics/specs/patterns/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/specs/patterns/__init__.py diff --git a/tests_metricflow_semantics/specs/patterns/test_entity_link_pattern.py b/metricflow-semantics/tests_metricflow_semantics/specs/patterns/test_entity_link_pattern.py similarity index 100% rename from tests_metricflow_semantics/specs/patterns/test_entity_link_pattern.py rename to metricflow-semantics/tests_metricflow_semantics/specs/patterns/test_entity_link_pattern.py diff --git a/tests_metricflow_semantics/specs/patterns/test_typed_patterns.py b/metricflow-semantics/tests_metricflow_semantics/specs/patterns/test_typed_patterns.py similarity index 100% rename from tests_metricflow_semantics/specs/patterns/test_typed_patterns.py rename to metricflow-semantics/tests_metricflow_semantics/specs/patterns/test_typed_patterns.py diff --git a/tests_metricflow_semantics/specs/test_time_dimension_spec.py b/metricflow-semantics/tests_metricflow_semantics/specs/test_time_dimension_spec.py similarity index 100% rename from tests_metricflow_semantics/specs/test_time_dimension_spec.py rename to metricflow-semantics/tests_metricflow_semantics/specs/test_time_dimension_spec.py diff --git a/tests_metricflow_semantics/specs/test_where_filter_entity.py b/metricflow-semantics/tests_metricflow_semantics/specs/test_where_filter_entity.py similarity index 100% rename from tests_metricflow_semantics/specs/test_where_filter_entity.py rename to metricflow-semantics/tests_metricflow_semantics/specs/test_where_filter_entity.py diff --git a/tests_metricflow_semantics/sql/__init__.py b/metricflow-semantics/tests_metricflow_semantics/sql/__init__.py similarity index 100% rename from tests_metricflow_semantics/sql/__init__.py rename to metricflow-semantics/tests_metricflow_semantics/sql/__init__.py diff --git a/tests_metricflow_semantics/sql/test_bind_parameter_serialization.py b/metricflow-semantics/tests_metricflow_semantics/sql/test_bind_parameter_serialization.py similarity index 100% rename from tests_metricflow_semantics/sql/test_bind_parameter_serialization.py rename to metricflow-semantics/tests_metricflow_semantics/sql/test_bind_parameter_serialization.py diff --git a/tests_metricflow_semantics/test_specs.py b/metricflow-semantics/tests_metricflow_semantics/test_specs.py similarity index 100% rename from tests_metricflow_semantics/test_specs.py rename to metricflow-semantics/tests_metricflow_semantics/test_specs.py From 1699579934511e8b7a80d3fef3e7105f97e73575 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 13:56:08 -0700 Subject: [PATCH 71/80] Fix pretty_printing for newer Pydantic versions. --- .../metricflow_semantics/mf_logging/pretty_print.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/metricflow-semantics/metricflow_semantics/mf_logging/pretty_print.py b/metricflow-semantics/metricflow_semantics/mf_logging/pretty_print.py index 86d342cf27..330d9e1cca 100644 --- a/metricflow-semantics/metricflow_semantics/mf_logging/pretty_print.py +++ b/metricflow-semantics/metricflow_semantics/mf_logging/pretty_print.py @@ -36,7 +36,8 @@ def __init__( @staticmethod def _is_pydantic_base_model(obj: Any): # type:ignore - return isinstance(obj, BaseModel) + # Checking the attribute as the BaseModel check fails for newer version of Pydantic. + return isinstance(obj, BaseModel) or hasattr(obj, "__config__") def _handle_sequence_obj(self, list_like_obj: Union[list, tuple], remaining_line_width: Optional[int]) -> str: """Pretty prints a sequence object i.e. list or tuple. From dbf35f88144b531c4737922ba4f9efe7feea6b35 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 00:32:38 -0700 Subject: [PATCH 72/80] Update various build-related files. --- Makefile | 23 +++++++++++++---------- metricflow-semantics/pyproject.toml | 5 +++-- pyproject.toml | 14 +++++++++++--- tests_metricflow/generate_snapshots.py | 2 +- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index aecd70458c..6d81e6bc70 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,9 @@ ADDITIONAL_PYTEST_OPTIONS = # Pytest that can populate the persistent source schema USE_PERSISTENT_SOURCE_SCHEMA = --use-persistent-source-schema -POPULATE_PERSISTENT_SOURCE_SCHEMA = tests/source_schema_tools.py::populate_source_schema +TESTS_METRICFLOW = tests_metricflow +TESTS_METRICFLOW_SEMANTICS = tests_metricflow_semantics +POPULATE_PERSISTENT_SOURCE_SCHEMA = $(TESTS_METRICFLOW)/source_schema_tools.py::populate_source_schema # Install Hatch package / project manager .PHONY: install-hatch @@ -19,16 +21,17 @@ install-hatch: # Testing and linting .PHONY: test test: - hatch -v run dev-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) tests/ + cd metricflow-semantics && hatch -v run dev-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) $(TESTS_METRICFLOW_SEMANTICS)/ + hatch -v run dev-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) $(TESTS_METRICFLOW)/ .PHONY: test-postgresql test-postgresql: - hatch -v run postgres-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) tests/ + hatch -v run postgres-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) $(TESTS_METRICFLOW)/ # Engine-specific test environments. .PHONY: test-bigquery test-bigquery: - hatch -v run bigquery-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) tests/ + hatch -v run bigquery-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) $(TESTS_METRICFLOW)/ .PHONY: populate-persistent-source-schema-bigquery populate-persistent-source-schema-bigquery: @@ -36,7 +39,7 @@ populate-persistent-source-schema-bigquery: .PHONY: test-databricks test-databricks: - hatch -v run databricks-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) tests/ + hatch -v run databricks-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) $(TESTS_METRICFLOW)/ .PHONY: populate-persistent-source-schema-databricks populate-persistent-source-schema-databricks: @@ -44,7 +47,7 @@ populate-persistent-source-schema-databricks: .PHONY: test-redshift test-redshift: - hatch -v run redshift-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) tests/ + hatch -v run redshift-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) $(TESTS_METRICFLOW)/ .PHONY: populate-persistent-source-schema-redshift populate-persistent-source-schema-redshift: @@ -53,7 +56,7 @@ populate-persistent-source-schema-redshift: .PHONY: test-snowflake test-snowflake: - hatch -v run snowflake-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) tests/ + hatch -v run snowflake-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) $(TESTS_METRICFLOW)/ .PHONY: populate-persistent-source-schema-snowflake populate-persistent-source-schema-snowflake: @@ -61,7 +64,7 @@ populate-persistent-source-schema-snowflake: .PHONY: test-trino test-trino: - hatch -v run trino-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) tests/ + hatch -v run trino-env:pytest -vv -n $(PARALLELISM) $(ADDITIONAL_PYTEST_OPTIONS) $(TESTS_METRICFLOW)/ .PHONY: lint lint: @@ -79,12 +82,12 @@ trino: # Re-generate test snapshots using all supported SQL engines. .PHONY: regenerate-test-snapshots regenerate-test-snapshots: - hatch -v run dev-env:python tests/generate_snapshots.py + hatch -v run dev-env:python tests_metricflow/generate_snapshots.py # Populate persistent source schemas for all relevant SQL engines. .PHONY: populate-persistent-source-schemas populate-persistent-source-schemas: - hatch -v run dev-env:python tests/populate_persistent_source_schemas.py + hatch -v run dev-env:python $(TESTS_METRICFLOW)/populate_persistent_source_schemas.py # Re-generate snapshots for the default SQL engine. .PHONY: test-snap diff --git a/metricflow-semantics/pyproject.toml b/metricflow-semantics/pyproject.toml index 97c42683c5..a1bf084aec 100644 --- a/metricflow-semantics/pyproject.toml +++ b/metricflow-semantics/pyproject.toml @@ -57,11 +57,12 @@ features = [ [tool.hatch.build.targets.sdist] exclude = [ - "/.github", - "/.changes", + ".github", + ".changes", ".changie.yaml", ".gitignore", ".pre-commit-config.yaml", "CONTRIBUTING.md", "MAKEFILE", + "/tests_metricflow_semantics" ] diff --git a/pyproject.toml b/pyproject.toml index 9e6b915513..17c97ec06c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -87,8 +87,8 @@ trino-sql-client-packages = [ [tool.hatch.build.targets.sdist] exclude = [ - "/.github", - "/.changes", + ".github", + ".changes", ".changie.yaml", ".gitignore", ".pre-commit-config.yaml", @@ -96,6 +96,7 @@ exclude = [ "Makefile", "/dbt-metricflow", "/local-data-warehouses", + "/metricflow-semantics/tests_metricflow_semantics", "/scripts", "/tests", ] @@ -112,7 +113,8 @@ exclude = [ description = "Environment for development. Includes a DuckDB-backed client." pre-install-commands = [ - "pip install -e ./dbt-metricflow[duckdb]" + "pip install -e ./metricflow-semantics", + "pip install -e ./dbt-metricflow[duckdb]", ] features = [ @@ -133,6 +135,7 @@ MF_TEST_ADAPTER_TYPE="postgres" description = "Dev environment for working with Postgres adapter" pre-install-commands = [ + "pip install -e ./metricflow-semantics", "pip install -e ./dbt-metricflow[postgres]" ] @@ -151,6 +154,7 @@ MF_TEST_ADAPTER_TYPE="bigquery" description = "Dev environment for working with the BigQuery adapter" pre-install-commands = [ + "pip install -e ./metricflow-semantics", "pip install -e ./dbt-metricflow[bigquery]" ] @@ -166,6 +170,7 @@ MF_TEST_ADAPTER_TYPE="databricks" description = "Dev environment for working with the Databricks adapter" pre-install-commands = [ + "pip install -e ./metricflow-semantics", "pip install -e ./dbt-metricflow[databricks]" ] @@ -181,6 +186,7 @@ MF_TEST_ADAPTER_TYPE="redshift" description = "Dev environment for working with the Redshift adapter" pre-install-commands = [ + "pip install -e ./metricflow-semantics", "pip install -e ./dbt-metricflow[redshift]" ] @@ -196,6 +202,7 @@ MF_TEST_ADAPTER_TYPE="snowflake" description = "Dev environment for working with Snowflake adapter" pre-install-commands = [ + "pip install -e ./metricflow-semantics", "pip install -e ./dbt-metricflow[snowflake]" ] @@ -213,6 +220,7 @@ DBT_ENV_SECRET_CATALOG="memory" description = "Dev environment for working with the Trino adapter" pre-install-commands = [ + "pip install -e ./metricflow-semantics", "pip install -e ./dbt-metricflow[trino]" ] diff --git a/tests_metricflow/generate_snapshots.py b/tests_metricflow/generate_snapshots.py index 66722f0450..3da97d76f1 100644 --- a/tests_metricflow/generate_snapshots.py +++ b/tests_metricflow/generate_snapshots.py @@ -53,7 +53,7 @@ logger = logging.getLogger(__name__) -TEST_DIRECTORY = "tests" +TEST_DIRECTORY = "tests_metricflow" class MetricFlowTestCredentialSet(FrozenBaseModel): # noqa: D101 From f9d35445df063f113281237c6ec326e946735d73 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 14:34:19 -0700 Subject: [PATCH 73/80] Move ID-related objects to `test_helpers``. --- .../test_helpers/id_helpers.py | 54 +++++++++++++++++++ .../tests_metricflow_semantics/conftest.py | 1 + .../fixtures/id_fixtures.py | 17 ++++++ tests_metricflow/fixtures/id_fixtures.py | 51 +----------------- .../fixtures/manifest_fixtures.py | 2 +- 5 files changed, 74 insertions(+), 51 deletions(-) create mode 100644 metricflow-semantics/metricflow_semantics/test_helpers/id_helpers.py create mode 100644 metricflow-semantics/tests_metricflow_semantics/fixtures/id_fixtures.py diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/id_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers/id_helpers.py new file mode 100644 index 0000000000..083cbb1a1d --- /dev/null +++ b/metricflow-semantics/metricflow_semantics/test_helpers/id_helpers.py @@ -0,0 +1,54 @@ +from __future__ import annotations + +from contextlib import ExitStack, contextmanager +from dataclasses import dataclass +from typing import Generator +from unittest.mock import patch + +from metricflow_semantics.dag.sequential_id import SequentialIdGenerator + + +@contextmanager +def patch_id_generators_helper(start_value: int) -> Generator[None, None, None]: + """Replace ID generators in IdGeneratorRegistry with one that has the given start value. + + TODO: This method will be modified in a later PR. + """ + # Create patch context managers for all ID generators in the registry with introspection magic. + patch_context_managers = [ + patch.object(SequentialIdGenerator, "_prefix_to_next_value", {}), + patch.object(SequentialIdGenerator, "_default_start_value", start_value), + ] + + # Enter the patch context for the patches above. + with ExitStack() as stack: + for patch_context_manager in patch_context_managers: + stack.enter_context(patch_context_manager) # type: ignore + # This will un-patch when done with the test. + yield None + + +@dataclass(frozen=True) +class IdNumberSpace: + """Defines the numbering of IDs when setting up tests and test fixtures.""" + + start_value: int + + @staticmethod + def for_test_start() -> IdNumberSpace: + """Before each test run.""" + return IdNumberSpace(0) + + @staticmethod + def for_block(block_index: int, block_size: int = 2000, first_block_offset: int = 10000) -> IdNumberSpace: + """Used to define fixed-size blocks of ID number spaces. + + This is useful for creating unique / non-overlapping IDs for different groups of objects. + """ + if not block_index >= 0: + raise RuntimeError(f"block_index should be >= 0. Got: {block_index}") + if not block_size > 1: + raise RuntimeError(f"block_size should be > 1. Got: {block_size}") + if not first_block_offset >= 0: + raise RuntimeError(f"first_block_offset should be >= 0. Got: {first_block_offset}") + return IdNumberSpace(first_block_offset + block_size * block_index) diff --git a/metricflow-semantics/tests_metricflow_semantics/conftest.py b/metricflow-semantics/tests_metricflow_semantics/conftest.py index 7d9dc15474..1adfb60cd8 100644 --- a/metricflow-semantics/tests_metricflow_semantics/conftest.py +++ b/metricflow-semantics/tests_metricflow_semantics/conftest.py @@ -1,5 +1,6 @@ # These imports are required to properly set up pytest fixtures. from __future__ import annotations +from tests_metricflow_semantics.fixtures.id_fixtures import * # noqa: F401, F403 from tests_metricflow_semantics.fixtures.manifest_fixtures import * # noqa: F401, F403 from tests_metricflow_semantics.fixtures.setup_fixtures import * # noqa: F401, F403 diff --git a/metricflow-semantics/tests_metricflow_semantics/fixtures/id_fixtures.py b/metricflow-semantics/tests_metricflow_semantics/fixtures/id_fixtures.py new file mode 100644 index 0000000000..cec3c0131a --- /dev/null +++ b/metricflow-semantics/tests_metricflow_semantics/fixtures/id_fixtures.py @@ -0,0 +1,17 @@ +from __future__ import annotations + +from typing import Generator + +import pytest +from metricflow_semantics.test_helpers.id_helpers import IdNumberSpace, patch_id_generators_helper + + +@pytest.fixture(autouse=True, scope="function") +def patch_id_generators() -> Generator[None, None, None]: + """Patch ID generators with a new one to get repeatability in plan outputs before every test. + + Plan outputs contain IDs, so if the IDs are not consistent from run to run, there will be diffs in the actual vs. + expected outputs during a test. + """ + with patch_id_generators_helper(start_value=IdNumberSpace.for_test_start().start_value): + yield None diff --git a/tests_metricflow/fixtures/id_fixtures.py b/tests_metricflow/fixtures/id_fixtures.py index 17622240fb..cec3c0131a 100644 --- a/tests_metricflow/fixtures/id_fixtures.py +++ b/tests_metricflow/fixtures/id_fixtures.py @@ -1,38 +1,9 @@ from __future__ import annotations -from contextlib import ExitStack, contextmanager -from dataclasses import dataclass from typing import Generator -from unittest.mock import patch import pytest -from metricflow_semantics.dag.sequential_id import SequentialIdGenerator - - -@dataclass(frozen=True) -class IdNumberSpace: - """Defines the numbering of IDs when setting up tests and test fixtures.""" - - start_value: int - - @staticmethod - def for_test_start() -> IdNumberSpace: - """Before each test run.""" - return IdNumberSpace(0) - - @staticmethod - def for_block(block_index: int, block_size: int = 2000, first_block_offset: int = 10000) -> IdNumberSpace: - """Used to define fixed-size blocks of ID number spaces. - - This is useful for creating unique / non-overlapping IDs for different groups of objects. - """ - if not block_index >= 0: - raise RuntimeError(f"block_index should be >= 0. Got: {block_index}") - if not block_size > 1: - raise RuntimeError(f"block_size should be > 1. Got: {block_size}") - if not first_block_offset >= 0: - raise RuntimeError(f"first_block_offset should be >= 0. Got: {first_block_offset}") - return IdNumberSpace(first_block_offset + block_size * block_index) +from metricflow_semantics.test_helpers.id_helpers import IdNumberSpace, patch_id_generators_helper @pytest.fixture(autouse=True, scope="function") @@ -44,23 +15,3 @@ def patch_id_generators() -> Generator[None, None, None]: """ with patch_id_generators_helper(start_value=IdNumberSpace.for_test_start().start_value): yield None - - -@contextmanager -def patch_id_generators_helper(start_value: int) -> Generator[None, None, None]: - """Replace ID generators in IdGeneratorRegistry with one that has the given start value. - - TODO: This method will be modified in a later PR. - """ - # Create patch context managers for all ID generators in the registry with introspection magic. - patch_context_managers = [ - patch.object(SequentialIdGenerator, "_prefix_to_next_value", {}), - patch.object(SequentialIdGenerator, "_default_start_value", start_value), - ] - - # Enter the patch context for the patches above. - with ExitStack() as stack: - for patch_context_manager in patch_context_managers: - stack.enter_context(patch_context_manager) # type: ignore - # This will un-patch when done with the test. - yield None diff --git a/tests_metricflow/fixtures/manifest_fixtures.py b/tests_metricflow/fixtures/manifest_fixtures.py index 673b5eef22..20da7ab6e9 100644 --- a/tests_metricflow/fixtures/manifest_fixtures.py +++ b/tests_metricflow/fixtures/manifest_fixtures.py @@ -15,6 +15,7 @@ from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from metricflow_semantics.test_helpers.id_helpers import IdNumberSpace, patch_id_generators_helper from metricflow_semantics.test_helpers.manifest_helpers import load_semantic_manifest from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource @@ -27,7 +28,6 @@ from metricflow.engine.metricflow_engine import MetricFlowEngine from metricflow.plan_conversion.dataflow_to_sql import DataflowToSqlQueryPlanConverter from metricflow.protocols.sql_client import SqlClient -from tests_metricflow.fixtures.id_fixtures import IdNumberSpace, patch_id_generators_helper logger = logging.getLogger(__name__) From b853369c3033113a0ec186e1a7bf7478bdc0ce23 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 14:23:08 -0700 Subject: [PATCH 74/80] Move snapshots. --- ...to_shortest_entity_path_item__result_0.txt | 0 ...lvable_ambiguous_entity_path__result_0.txt | 0 ..._entity_path_due_to_mismatch__result_0.txt | 0 ...path_due_to_multiple_matches__result_0.txt | 0 ..._accumulate_last_2_months_metric__set0.txt | 0 ...ith_different_parent_time_grains__set0.txt | 0 ...ric_with_same_parent_time_grains__set0.txt | 0 ...trics_with_different_time_grains__set0.txt | 0 ...s__metrics_with_same_time_grains__set0.txt | 0 ...lable_group_by_items__no_metrics__set0.txt | 0 ...le_group_by_items__simple_metric__set0.txt | 0 ...linkable_element_set_as_spec_set__set0.txt | 0 .../str/test_all_properties__result0.txt | 0 ...le_element_set_from_join_path__result0.txt | 0 ..._set_from_join_path_multi_hop__result0.txt | 0 .../test_cyclic_join_manifest__result0.txt | 0 ...roperty_for_cumulative_metric__result0.txt | 0 ..._property_for_derived_metrics__result0.txt | 0 .../str/test_one_property__result0.txt | 0 ...ccumulate_last_2_months_metric__result.txt | 0 ...h_different_parent_time_grains__result.txt | 0 ...c_with_same_parent_time_grains__result.txt | 0 ...ics_with_different_time_grains__result.txt | 0 ..._metrics_with_same_time_grains__result.txt | 0 ...me_in_query_filter__no_metrics__result.txt | 0 ...in_query_filter__simple_metric__result.txt | 0 ...test_missing_parent_for_metric__result.txt | 0 .../test_invalid_group_by_item__result.txt | 0 ..._item_in_derived_metric_parent__result.txt | 0 ...ccumulate_last_2_months_metric__gbir_6.xml | 0 ...h_different_parent_time_grains__gbir_5.xml | 0 ...c_with_same_parent_time_grains__gbir_4.xml | 0 ...ics_with_different_time_grains__gbir_3.xml | 0 ..._metrics_with_same_time_grains__gbir_2.xml | 0 .../test_snapshot__no_metrics__gbir_0.xml | 0 .../test_snapshot__simple_metric__gbir_1.xml | 0 .../dict/test_get_names__result0.txt | 0 ...linkable_elements_for_measure__result0.txt | 0 ...linkable_elements_for_metrics__result0.txt | 0 ...imensions_in_different_models__result0.txt | 0 ...elements_for_no_metrics_query__result0.txt | 0 ...al_linked_elements_for_metric__result0.txt | 0 ...cs_with_common_filtered_metric__result.txt | 0 ...tion_for_invalid_metric_filter__result.txt | 0 ...or_invalid_metric_input_filter__result.txt | 0 ...lution_for_valid_metric_filter__result.txt | 0 ..._for_valid_metric_input_filter__result.txt | 0 ...ccumulate_last_2_months_metric__result.txt | 0 ...h_different_parent_time_grains__result.txt | 0 ...c_with_same_parent_time_grains__result.txt | 0 ...ics_with_different_time_grains__result.txt | 0 ..._metrics_with_same_time_grains__result.txt | 0 ...er_spec_resolution__no_metrics__result.txt | 0 ...spec_resolution__simple_metric__result.txt | 0 ...ilters_in_multi_metric_query__result_0.txt | 0 ...ons_for_defined_where_filter__result_0.txt | 0 ...uggestions_for_group_by_item__result_0.txt | 0 .../test_suggestions_for_metric__result_0.txt | 0 ...estions_for_multiple_metrics__result_0.txt | 0 .../test_elements_for_metric__result0.txt | 103 ------------------ 60 files changed, 103 deletions(-) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_ambiguous_entity_path_resolves_to_shortest_entity_path_item__result_0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_resolvable_ambiguous_entity_path__result_0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_mismatch__result_0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_multiple_matches__result_0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__accumulate_last_2_months_metric__set0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_different_parent_time_grains__set0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_same_parent_time_grains__set0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_different_time_grains__set0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_same_time_grains__set0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__simple_metric__set0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_linkable_spec_resolver.py/str/test_cyclic_join_manifest__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_cumulative_metric__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_derived_metrics__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_linkable_spec_resolver.py/str/test_one_property__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__accumulate_last_2_months_metric__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_different_parent_time_grains__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_same_parent_time_grains__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_different_time_grains__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_same_time_grains__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__simple_metric__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_matching_item_for_querying.py/AvailableGroupByItemsResolution/test_missing_parent_for_metric__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_invalid_group_by_item__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_unavailable_group_by_item_in_derived_metric_parent__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__accumulate_last_2_months_metric__gbir_6.xml (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_different_parent_time_grains__gbir_5.xml (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_same_parent_time_grains__gbir_4.xml (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_different_time_grains__gbir_3.xml (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_same_time_grains__gbir_2.xml (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__no_metrics__gbir_0.xml (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__simple_metric__gbir_1.xml (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_semantic_model_container.py/tuple/test_local_linked_elements_for_metric__result0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_derived_metrics_with_common_filtered_metric__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_filter__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_input_filter__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_filter__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_input_filter__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__accumulate_last_2_months_metric__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_different_parent_time_grains__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_same_parent_time_grains__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_different_time_grains__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_same_time_grains__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__no_metrics__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__simple_metric__result.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_suggestions.py/str/test_suggestions_for_group_by_item__result_0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_suggestions.py/str/test_suggestions_for_metric__result_0.txt (100%) rename {tests_metricflow => metricflow-semantics/tests_metricflow_semantics}/snapshots/test_suggestions.py/str/test_suggestions_for_multiple_metrics__result_0.txt (100%) delete mode 100644 tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_elements_for_metric__result0.txt diff --git a/tests_metricflow/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_ambiguous_entity_path_resolves_to_shortest_entity_path_item__result_0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_ambiguous_entity_path_resolves_to_shortest_entity_path_item__result_0.txt similarity index 100% rename from tests_metricflow/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_ambiguous_entity_path_resolves_to_shortest_entity_path_item__result_0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_ambiguous_entity_path_resolves_to_shortest_entity_path_item__result_0.txt diff --git a/tests_metricflow/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_resolvable_ambiguous_entity_path__result_0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_resolvable_ambiguous_entity_path__result_0.txt similarity index 100% rename from tests_metricflow/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_resolvable_ambiguous_entity_path__result_0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_ambiguous_entity_path.py/MetricFlowQuerySpec/test_resolvable_ambiguous_entity_path__result_0.txt diff --git a/tests_metricflow/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_mismatch__result_0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_mismatch__result_0.txt similarity index 100% rename from tests_metricflow/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_mismatch__result_0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_mismatch__result_0.txt diff --git a/tests_metricflow/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_multiple_matches__result_0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_multiple_matches__result_0.txt similarity index 100% rename from tests_metricflow/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_multiple_matches__result_0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_ambiguous_entity_path.py/str/test_non_resolvable_ambiguous_entity_path_due_to_multiple_matches__result_0.txt diff --git a/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__accumulate_last_2_months_metric__set0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__accumulate_last_2_months_metric__set0.txt similarity index 100% rename from tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__accumulate_last_2_months_metric__set0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__accumulate_last_2_months_metric__set0.txt diff --git a/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_different_parent_time_grains__set0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_different_parent_time_grains__set0.txt similarity index 100% rename from tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_different_parent_time_grains__set0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_different_parent_time_grains__set0.txt diff --git a/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_same_parent_time_grains__set0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_same_parent_time_grains__set0.txt similarity index 100% rename from tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_same_parent_time_grains__set0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__derived_metric_with_same_parent_time_grains__set0.txt diff --git a/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_different_time_grains__set0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_different_time_grains__set0.txt similarity index 100% rename from tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_different_time_grains__set0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_different_time_grains__set0.txt diff --git a/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_same_time_grains__set0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_same_time_grains__set0.txt similarity index 100% rename from tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_same_time_grains__set0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__metrics_with_same_time_grains__set0.txt diff --git a/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt similarity index 100% rename from tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt diff --git a/tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__simple_metric__set0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__simple_metric__set0.txt similarity index 100% rename from tests_metricflow/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__simple_metric__set0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__simple_metric__set0.txt diff --git a/tests_metricflow/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt similarity index 100% rename from tests_metricflow/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt diff --git a/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt diff --git a/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt diff --git a/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt diff --git a/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_cyclic_join_manifest__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_cyclic_join_manifest__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_cyclic_join_manifest__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_cyclic_join_manifest__result0.txt diff --git a/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_cumulative_metric__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_cumulative_metric__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_cumulative_metric__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_cumulative_metric__result0.txt diff --git a/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_derived_metrics__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_derived_metrics__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_derived_metrics__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_metric_time_property_for_derived_metrics__result0.txt diff --git a/tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_one_property__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_one_property__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_linkable_spec_resolver.py/str/test_one_property__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_one_property__result0.txt diff --git a/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__accumulate_last_2_months_metric__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__accumulate_last_2_months_metric__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__accumulate_last_2_months_metric__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__accumulate_last_2_months_metric__result.txt diff --git a/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_different_parent_time_grains__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_different_parent_time_grains__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_different_parent_time_grains__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_different_parent_time_grains__result.txt diff --git a/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_same_parent_time_grains__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_same_parent_time_grains__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_same_parent_time_grains__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__derived_metric_with_same_parent_time_grains__result.txt diff --git a/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_different_time_grains__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_different_time_grains__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_different_time_grains__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_different_time_grains__result.txt diff --git a/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_same_time_grains__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_same_time_grains__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_same_time_grains__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__metrics_with_same_time_grains__result.txt diff --git a/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt diff --git a/tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__simple_metric__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__simple_metric__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__simple_metric__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__simple_metric__result.txt diff --git a/tests_metricflow/snapshots/test_matching_item_for_querying.py/AvailableGroupByItemsResolution/test_missing_parent_for_metric__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_querying.py/AvailableGroupByItemsResolution/test_missing_parent_for_metric__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_matching_item_for_querying.py/AvailableGroupByItemsResolution/test_missing_parent_for_metric__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_querying.py/AvailableGroupByItemsResolution/test_missing_parent_for_metric__result.txt diff --git a/tests_metricflow/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_invalid_group_by_item__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_invalid_group_by_item__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_invalid_group_by_item__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_invalid_group_by_item__result.txt diff --git a/tests_metricflow/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_unavailable_group_by_item_in_derived_metric_parent__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_unavailable_group_by_item_in_derived_metric_parent__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_unavailable_group_by_item_in_derived_metric_parent__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_querying.py/GroupByItemResolution/test_unavailable_group_by_item_in_derived_metric_parent__result.txt diff --git a/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__accumulate_last_2_months_metric__gbir_6.xml b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__accumulate_last_2_months_metric__gbir_6.xml similarity index 100% rename from tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__accumulate_last_2_months_metric__gbir_6.xml rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__accumulate_last_2_months_metric__gbir_6.xml diff --git a/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_different_parent_time_grains__gbir_5.xml b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_different_parent_time_grains__gbir_5.xml similarity index 100% rename from tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_different_parent_time_grains__gbir_5.xml rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_different_parent_time_grains__gbir_5.xml diff --git a/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_same_parent_time_grains__gbir_4.xml b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_same_parent_time_grains__gbir_4.xml similarity index 100% rename from tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_same_parent_time_grains__gbir_4.xml rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__derived_metric_with_same_parent_time_grains__gbir_4.xml diff --git a/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_different_time_grains__gbir_3.xml b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_different_time_grains__gbir_3.xml similarity index 100% rename from tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_different_time_grains__gbir_3.xml rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_different_time_grains__gbir_3.xml diff --git a/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_same_time_grains__gbir_2.xml b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_same_time_grains__gbir_2.xml similarity index 100% rename from tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_same_time_grains__gbir_2.xml rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__metrics_with_same_time_grains__gbir_2.xml diff --git a/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__no_metrics__gbir_0.xml b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__no_metrics__gbir_0.xml similarity index 100% rename from tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__no_metrics__gbir_0.xml rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__no_metrics__gbir_0.xml diff --git a/tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__simple_metric__gbir_1.xml b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__simple_metric__gbir_1.xml similarity index 100% rename from tests_metricflow/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__simple_metric__gbir_1.xml rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_resolution_dags.py/GroupByItemResolutionDag/test_snapshot__simple_metric__gbir_1.xml diff --git a/tests_metricflow/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt diff --git a/tests_metricflow/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt diff --git a/tests_metricflow/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt diff --git a/tests_metricflow/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt diff --git a/tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt diff --git a/tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_local_linked_elements_for_metric__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/tuple/test_local_linked_elements_for_metric__result0.txt similarity index 100% rename from tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_local_linked_elements_for_metric__result0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/tuple/test_local_linked_elements_for_metric__result0.txt diff --git a/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_derived_metrics_with_common_filtered_metric__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_derived_metrics_with_common_filtered_metric__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_derived_metrics_with_common_filtered_metric__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_derived_metrics_with_common_filtered_metric__result.txt diff --git a/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_filter__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_filter__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_filter__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_filter__result.txt diff --git a/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_input_filter__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_input_filter__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_input_filter__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_invalid_metric_input_filter__result.txt diff --git a/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_filter__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_filter__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_filter__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_filter__result.txt diff --git a/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_input_filter__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_input_filter__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_input_filter__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_resolution_for_valid_metric_input_filter__result.txt diff --git a/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__accumulate_last_2_months_metric__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__accumulate_last_2_months_metric__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__accumulate_last_2_months_metric__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__accumulate_last_2_months_metric__result.txt diff --git a/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_different_parent_time_grains__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_different_parent_time_grains__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_different_parent_time_grains__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_different_parent_time_grains__result.txt diff --git a/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_same_parent_time_grains__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_same_parent_time_grains__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_same_parent_time_grains__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__derived_metric_with_same_parent_time_grains__result.txt diff --git a/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_different_time_grains__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_different_time_grains__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_different_time_grains__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_different_time_grains__result.txt diff --git a/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_same_time_grains__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_same_time_grains__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_same_time_grains__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__metrics_with_same_time_grains__result.txt diff --git a/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__no_metrics__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__no_metrics__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__no_metrics__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__no_metrics__result.txt diff --git a/tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__simple_metric__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__simple_metric__result.txt similarity index 100% rename from tests_metricflow/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__simple_metric__result.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_spec_lookup.py/str/test_filter_spec_resolution__simple_metric__result.txt diff --git a/tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt similarity index 100% rename from tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt diff --git a/tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt similarity index 100% rename from tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt diff --git a/tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_group_by_item__result_0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_group_by_item__result_0.txt similarity index 100% rename from tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_group_by_item__result_0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_group_by_item__result_0.txt diff --git a/tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_metric__result_0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_metric__result_0.txt similarity index 100% rename from tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_metric__result_0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_metric__result_0.txt diff --git a/tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_multiple_metrics__result_0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_multiple_metrics__result_0.txt similarity index 100% rename from tests_metricflow/snapshots/test_suggestions.py/str/test_suggestions_for_multiple_metrics__result_0.txt rename to metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_multiple_metrics__result_0.txt diff --git a/tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_elements_for_metric__result0.txt b/tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_elements_for_metric__result0.txt deleted file mode 100644 index d71c87b9a5..0000000000 --- a/tests_metricflow/snapshots/test_semantic_model_container.py/tuple/test_elements_for_metric__result0.txt +++ /dev/null @@ -1,103 +0,0 @@ -( - 'listing', - 'listing__capacity_latest', - 'listing__country_latest', - 'listing__created_at__day', - 'listing__created_at__extract_day', - 'listing__created_at__extract_dow', - 'listing__created_at__extract_doy', - 'listing__created_at__extract_month', - 'listing__created_at__extract_quarter', - 'listing__created_at__extract_year', - 'listing__ds__day', - 'listing__ds__extract_day', - 'listing__ds__extract_dow', - 'listing__ds__extract_doy', - 'listing__ds__extract_month', - 'listing__ds__extract_quarter', - 'listing__ds__extract_year', - 'listing__is_lux_latest', - 'listing__lux_listing', - 'listing__user', - 'listing__user__company', - 'listing__user__company_name', - 'listing__user__created_at__day', - 'listing__user__created_at__extract_day', - 'listing__user__created_at__extract_dow', - 'listing__user__created_at__extract_doy', - 'listing__user__created_at__extract_month', - 'listing__user__created_at__extract_quarter', - 'listing__user__created_at__extract_year', - 'listing__user__ds__day', - 'listing__user__ds__extract_day', - 'listing__user__ds__extract_dow', - 'listing__user__ds__extract_doy', - 'listing__user__ds__extract_month', - 'listing__user__ds__extract_quarter', - 'listing__user__ds__extract_year', - 'listing__user__ds_latest__day', - 'listing__user__ds_latest__extract_day', - 'listing__user__ds_latest__extract_dow', - 'listing__user__ds_latest__extract_doy', - 'listing__user__ds_latest__extract_month', - 'listing__user__ds_latest__extract_quarter', - 'listing__user__ds_latest__extract_year', - 'listing__user__ds_partitioned__day', - 'listing__user__ds_partitioned__extract_day', - 'listing__user__ds_partitioned__extract_dow', - 'listing__user__ds_partitioned__extract_doy', - 'listing__user__ds_partitioned__extract_month', - 'listing__user__ds_partitioned__extract_quarter', - 'listing__user__ds_partitioned__extract_year', - 'listing__user__home_state', - 'listing__user__home_state_latest', - 'user', - 'user__company', - 'user__company_name', - 'user__created_at__day', - 'user__created_at__extract_day', - 'user__created_at__extract_dow', - 'user__created_at__extract_doy', - 'user__created_at__extract_month', - 'user__created_at__extract_quarter', - 'user__created_at__extract_year', - 'user__ds__day', - 'user__ds__extract_day', - 'user__ds__extract_dow', - 'user__ds__extract_doy', - 'user__ds__extract_month', - 'user__ds__extract_quarter', - 'user__ds__extract_year', - 'user__ds_latest__day', - 'user__ds_latest__extract_day', - 'user__ds_latest__extract_dow', - 'user__ds_latest__extract_doy', - 'user__ds_latest__extract_month', - 'user__ds_latest__extract_quarter', - 'user__ds_latest__extract_year', - 'user__ds_partitioned__day', - 'user__ds_partitioned__extract_day', - 'user__ds_partitioned__extract_dow', - 'user__ds_partitioned__extract_doy', - 'user__ds_partitioned__extract_month', - 'user__ds_partitioned__extract_quarter', - 'user__ds_partitioned__extract_year', - 'user__home_state', - 'user__home_state_latest', - 'view__ds__day', - 'view__ds__extract_day', - 'view__ds__extract_dow', - 'view__ds__extract_doy', - 'view__ds__extract_month', - 'view__ds__extract_quarter', - 'view__ds__extract_year', - 'view__ds_partitioned__day', - 'view__ds_partitioned__extract_day', - 'view__ds_partitioned__extract_dow', - 'view__ds_partitioned__extract_doy', - 'view__ds_partitioned__extract_month', - 'view__ds_partitioned__extract_quarter', - 'view__ds_partitioned__extract_year', - 'view__listing', - 'view__user', -) From d54a4ad729144b14ccec4064c8cffd1432210387 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 15:00:07 -0700 Subject: [PATCH 75/80] Add change log for #1150. --- .changes/unreleased/Features-20240424-145949.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changes/unreleased/Features-20240424-145949.yaml diff --git a/.changes/unreleased/Features-20240424-145949.yaml b/.changes/unreleased/Features-20240424-145949.yaml new file mode 100644 index 0000000000..9f539b398e --- /dev/null +++ b/.changes/unreleased/Features-20240424-145949.yaml @@ -0,0 +1,6 @@ +kind: Features +body: Create `metricflow-semantics` package. +time: 2024-04-24T14:59:49.8435-07:00 +custom: + Author: plypaul + Issue: "1150" From 4afbd094459e2cb40ba84aab91974028a3ca0c25 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 24 Apr 2024 15:12:00 -0700 Subject: [PATCH 76/80] Lint fixes. --- tests_metricflow/cli/test_cli.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests_metricflow/cli/test_cli.py b/tests_metricflow/cli/test_cli.py index 3aead3e650..4af7d79b6a 100644 --- a/tests_metricflow/cli/test_cli.py +++ b/tests_metricflow/cli/test_cli.py @@ -15,6 +15,9 @@ from dbt_semantic_interfaces.parsing.objects import YamlConfigFile from dbt_semantic_interfaces.test_utils import base_semantic_manifest_file from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration +from tests_metricflow_semantics.model.example_project_configuration import ( + EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE, +) from dbt_metricflow.cli.cli_context import CLIContext from dbt_metricflow.cli.main import ( @@ -30,9 +33,6 @@ from metricflow.protocols.sql_client import SqlClient, SqlEngine from tests_metricflow.fixtures.cli_fixtures import MetricFlowCliRunner from tests_metricflow.snapshot_utils import assert_str_snapshot_equal -from tests_metricflow_semantics.model.example_project_configuration import ( - EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE, -) logger = logging.getLogger(__name__) From f6f64cbab5f0849feac36e28c306532d549dcdb6 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Thu, 25 Apr 2024 02:02:43 -0700 Subject: [PATCH 77/80] Address comments. --- ...ml => Under the Hood-20240425-020137.yaml} | 4 +- metricflow-semantics/README.md | 3 +- .../semantic_model_join_evaluator.py | 39 ------------------- metricflow-semantics/pyproject.toml | 2 +- 4 files changed, 4 insertions(+), 44 deletions(-) rename .changes/unreleased/{Features-20240424-145949.yaml => Under the Hood-20240425-020137.yaml} (59%) diff --git a/.changes/unreleased/Features-20240424-145949.yaml b/.changes/unreleased/Under the Hood-20240425-020137.yaml similarity index 59% rename from .changes/unreleased/Features-20240424-145949.yaml rename to .changes/unreleased/Under the Hood-20240425-020137.yaml index 9f539b398e..9d12957e5b 100644 --- a/.changes/unreleased/Features-20240424-145949.yaml +++ b/.changes/unreleased/Under the Hood-20240425-020137.yaml @@ -1,6 +1,6 @@ -kind: Features +kind: Under the Hood body: Create `metricflow-semantics` package. -time: 2024-04-24T14:59:49.8435-07:00 +time: 2024-04-25T02:01:37.532124-07:00 custom: Author: plypaul Issue: "1150" diff --git a/metricflow-semantics/README.md b/metricflow-semantics/README.md index 89ac3de1ef..c9b31a010e 100644 --- a/metricflow-semantics/README.md +++ b/metricflow-semantics/README.md @@ -10,7 +10,6 @@ # Welcome to metricflow-semantics -This repo encapsulates the modules needed for semantic resolution for MetricFlow queries. - +`metricflow-semantics` encapsulates the modules needed to resolve the semantics of MetricFlow queries. ## Repo use cases - Resolving the dbt model dependencies of a (saved) query in MetricFlow for DAG dependency management. diff --git a/metricflow-semantics/metricflow_semantics/model/semantics/semantic_model_join_evaluator.py b/metricflow-semantics/metricflow_semantics/model/semantics/semantic_model_join_evaluator.py index 9d7550a98f..9ee52f2974 100644 --- a/metricflow-semantics/metricflow_semantics/model/semantics/semantic_model_join_evaluator.py +++ b/metricflow-semantics/metricflow_semantics/model/semantics/semantic_model_join_evaluator.py @@ -10,9 +10,6 @@ SemanticModelReference, ) -from metricflow_semantics.instances import EntityInstance, InstanceSet -from metricflow_semantics.mf_logging.pretty_print import mf_pformat - if TYPE_CHECKING: from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup @@ -219,39 +216,3 @@ def is_valid_semantic_model_join( ) is not None ) - - @staticmethod - def _semantic_model_of_entity_in_instance_set( - instance_set: InstanceSet, - entity_reference: EntityReference, - ) -> SemanticModelReference: - """Return the semantic model where the entity was defined in the instance set.""" - matching_instances: List[EntityInstance] = [] - for entity_instance in instance_set.entity_instances: - assert len(entity_instance.defined_from) == 1 - if len(entity_instance.spec.entity_links) == 0 and entity_instance.spec.reference == entity_reference: - matching_instances.append(entity_instance) - - assert len(matching_instances) == 1, ( - f"Not exactly 1 matching entity instances found: {matching_instances} for {entity_reference} in " - f"{mf_pformat(instance_set)}" - ) - return matching_instances[0].origin_semantic_model_reference.semantic_model_reference - - def is_valid_instance_set_join( - self, - left_instance_set: InstanceSet, - right_instance_set: InstanceSet, - on_entity_reference: EntityReference, - ) -> bool: - """Return true if the instance sets can be joined using the given entity.""" - return self.is_valid_semantic_model_join( - left_semantic_model_reference=SemanticModelJoinEvaluator._semantic_model_of_entity_in_instance_set( - instance_set=left_instance_set, entity_reference=on_entity_reference - ), - right_semantic_model_reference=SemanticModelJoinEvaluator._semantic_model_of_entity_in_instance_set( - instance_set=right_instance_set, - entity_reference=on_entity_reference, - ), - on_entity_reference=on_entity_reference, - ) diff --git a/metricflow-semantics/pyproject.toml b/metricflow-semantics/pyproject.toml index a1bf084aec..51bc10b736 100644 --- a/metricflow-semantics/pyproject.toml +++ b/metricflow-semantics/pyproject.toml @@ -26,7 +26,6 @@ classifiers = [ dependencies = [ "dbt-semantic-interfaces>=0.5.1, <0.6.0", - "tabulate>=0.8.9", "pandas>=1.5.0, <1.6.0", "rapidfuzz>=3.0, <4.0", ] @@ -39,6 +38,7 @@ dev-packages = [ "pytest-mock>=3.7.0, <3.8.0", "pytest-xdist>=3.2.1, <3.3.0", "pytest>=7.1.1, < 7.2.0", + "tabulate>=0.8.9", "types-PyYAML", "types-python-dateutil", "types-tabulate", From 9e2c131c4857c66e85f91b694d2933e28edd53c6 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Thu, 25 Apr 2024 02:16:25 -0700 Subject: [PATCH 78/80] Update `DirectoryPathAnchor` to not require `__file__`. --- .../metricflow_semantics/test_helpers/config_helpers.py | 9 +++++---- .../test_helpers/semantic_manifest_yamls/__init__.py | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/config_helpers.py b/metricflow-semantics/metricflow_semantics/test_helpers/config_helpers.py index e15d7c5bbc..3e2852badb 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers/config_helpers.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers/config_helpers.py @@ -1,6 +1,7 @@ from __future__ import annotations import pathlib +import traceback from dataclasses import dataclass from metricflow_semantics.test_helpers.snapshot_helpers import SnapshotConfiguration @@ -33,13 +34,13 @@ class DirectoryPathAnchor: during refactoring. """ - def __init__(self, path_to_file_in_directory: str) -> None: + def __init__(self) -> None: """Initializer. - Args: - path_to_file_in_directory: To be used with `__file__`. + The directory associated this anchor is where it's initialized. """ - self._directory = pathlib.Path(path_to_file_in_directory).parent + stack = traceback.extract_stack() + self._directory = pathlib.Path(stack[-2].filename).parent @property def directory(self) -> pathlib.Path: # noqa: D102 diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/__init__.py b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/__init__.py index d16f5a283f..6761c31c38 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/__init__.py +++ b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/__init__.py @@ -2,4 +2,4 @@ from metricflow_semantics.test_helpers.config_helpers import DirectoryPathAnchor -SEMANTIC_MANIFEST_YAMLS_PATH_ANCHOR = DirectoryPathAnchor(__file__) +SEMANTIC_MANIFEST_YAMLS_PATH_ANCHOR = DirectoryPathAnchor() From 60773a9ffd0f216d47637311803e7c414c1a7dd6 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Thu, 25 Apr 2024 03:00:52 -0700 Subject: [PATCH 79/80] Update / cleanup build configuration. --- .github/workflows/cd-push-to-pypi.yaml | 2 +- metricflow-semantics/pyproject.toml | 14 ++++---------- pyproject.toml | 20 ++++++-------------- 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/.github/workflows/cd-push-to-pypi.yaml b/.github/workflows/cd-push-to-pypi.yaml index 7468e1efe1..6b32bec67e 100644 --- a/.github/workflows/cd-push-to-pypi.yaml +++ b/.github/workflows/cd-push-to-pypi.yaml @@ -21,7 +21,7 @@ jobs: with: python-version: "${{ env.PYTHON_VERSION }}" - - name: Hatch Publish + - name: Hatch Publish `metricflow` run: hatch build && hatch publish env: HATCH_INDEX_USER: __token__ diff --git a/metricflow-semantics/pyproject.toml b/metricflow-semantics/pyproject.toml index 51bc10b736..88dc2bf5ce 100644 --- a/metricflow-semantics/pyproject.toml +++ b/metricflow-semantics/pyproject.toml @@ -56,13 +56,7 @@ features = [ "Source Code" = "https://github.com/dbt-labs/metricflow/tree/main/metricflow-semanitcs" [tool.hatch.build.targets.sdist] -exclude = [ - ".github", - ".changes", - ".changie.yaml", - ".gitignore", - ".pre-commit-config.yaml", - "CONTRIBUTING.md", - "MAKEFILE", - "/tests_metricflow_semantics" -] +packages = ["metricflow_semantics"] + +[tool.hatch.build.targets.wheel] +packages = ["metricflow_semantics"] diff --git a/pyproject.toml b/pyproject.toml index 17c97ec06c..ae627388f6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -85,21 +85,13 @@ trino-sql-client-packages = [ "trino>=0.327.0, <0.328.0", ] +# There are files that hatch will always include as well (e.g. the LICENSE file). +# See hatch build docs for more details. [tool.hatch.build.targets.sdist] -exclude = [ - ".github", - ".changes", - ".changie.yaml", - ".gitignore", - ".pre-commit-config.yaml", - "CONTRIBUTING.md", - "Makefile", - "/dbt-metricflow", - "/local-data-warehouses", - "/metricflow-semantics/tests_metricflow_semantics", - "/scripts", - "/tests", -] +packages = ["metricflow", "metricflow-semantics/metricflow_semantics"] + +[tool.hatch.build.targets.wheel] +packages = ["metricflow", "metricflow-semantics/metricflow_semantics"] # Environment setup From 47d70574ea14a609d676a2235ebf8a4ae5c48b83 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Thu, 25 Apr 2024 13:18:38 -0700 Subject: [PATCH 80/80] Add package CI tests. --- .../workflows/ci-metricflow-unit-tests.yaml | 23 ++- scripts/ci_tests/metricflow_package_test.py | 180 ++++++++++++++++++ scripts/ci_tests/metricflow_package_test.sh | 39 ++++ .../metricflow_semantics_package_test.py | 89 +++++++++ .../metricflow_semantics_package_test.sh | 39 ++++ 5 files changed, 369 insertions(+), 1 deletion(-) create mode 100644 scripts/ci_tests/metricflow_package_test.py create mode 100644 scripts/ci_tests/metricflow_package_test.sh create mode 100644 scripts/ci_tests/metricflow_semantics_package_test.py create mode 100644 scripts/ci_tests/metricflow_semantics_package_test.sh diff --git a/.github/workflows/ci-metricflow-unit-tests.yaml b/.github/workflows/ci-metricflow-unit-tests.yaml index 34291067f3..9106eaf83a 100644 --- a/.github/workflows/ci-metricflow-unit-tests.yaml +++ b/.github/workflows/ci-metricflow-unit-tests.yaml @@ -16,7 +16,6 @@ jobs: matrix: python-version: ["3.8", "3.11"] steps: - - name: Check-out the repo uses: actions/checkout@v3 @@ -62,3 +61,25 @@ jobs: - name: Check success run: test ${{ needs.metricflow-unit-tests-duckdb.result }} = 'success' -a ${{ needs.metricflow-unit-tests-postgres.result }} = 'success' + + metricflow-package-tests: + name: MetricFlow Packages Tests + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8", "3.11" ] + steps: + + - name: Check-out the repo + uses: actions/checkout@v3 + + - name: Setup Python ${{ inputs.python-version }} Environment + uses: ./.github/actions/setup-python-env + with: + python-version: "${{ matrix.python-version }}" + + - name: Test `metricflow-semantics` Package + run: bash scripts/ci_tests/metricflow_semantics_package_test.sh + + - name: Test `metricflow` Package + run: bash scripts/ci_tests/metricflow_package_test.sh diff --git a/scripts/ci_tests/metricflow_package_test.py b/scripts/ci_tests/metricflow_package_test.py new file mode 100644 index 0000000000..0d85c3f53a --- /dev/null +++ b/scripts/ci_tests/metricflow_package_test.py @@ -0,0 +1,180 @@ +from __future__ import annotations + +import logging +import textwrap +from collections import OrderedDict +from typing import Sequence + +from dbt_semantic_interfaces.implementations.semantic_manifest import PydanticSemanticManifest +from dbt_semantic_interfaces.parsing.dir_to_model import parse_yaml_files_to_validation_ready_semantic_manifest +from dbt_semantic_interfaces.parsing.objects import YamlConfigFile +from dbt_semantic_interfaces.protocols import SemanticManifest, SemanticModel +from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver +from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver +from metricflow_semantics.specs.spec_classes import ( + DimensionSpec, + EntityReference, + MetricFlowQuerySpec, + MetricSpec, +) + +from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder +from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver +from metricflow.dataflow.builder.source_node import SourceNodeBuilder, SourceNodeSet +from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode +from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter +from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet +from metricflow.engine.metricflow_engine import MetricFlowEngine + +logger = logging.getLogger(__name__) + + +def _data_set_to_read_nodes(data_sets: OrderedDict[str, SemanticModelDataSet]) -> OrderedDict[str, ReadSqlSourceNode]: + """Return a mapping from the name of the semantic model to the dataflow plan node that reads from it.""" + # Moved from model_fixtures.py. + return_dict: OrderedDict[str, ReadSqlSourceNode] = OrderedDict() + for semantic_model_name, data_set in data_sets.items(): + return_dict[semantic_model_name] = ReadSqlSourceNode(data_set) + + return return_dict + + +def _data_set_to_source_node_set( + column_association_resolver: ColumnAssociationResolver, + semantic_manifest_lookup: SemanticManifestLookup, + data_sets: OrderedDict[str, SemanticModelDataSet], +) -> SourceNodeSet: + # Moved from model_fixtures.py. + source_node_builder = SourceNodeBuilder(column_association_resolver, semantic_manifest_lookup) + return source_node_builder.create_from_data_sets(list(data_sets.values())) + + +def _create_data_sets( + semantic_manifest_lookup: SemanticManifestLookup, +) -> OrderedDict[str, SemanticModelDataSet]: + """Convert the SemanticModels in the model to SqlDataSets. + + Key is the name of the semantic model, value is the associated data set. + """ + # Moved from model_fixtures.py. + + # Use ordered dict and sort by name to get consistency when running tests. + data_sets = OrderedDict() + semantic_models: Sequence[SemanticModel] = semantic_manifest_lookup.semantic_manifest.semantic_models + semantic_models = sorted(semantic_models, key=lambda x: x.name) + + converter = SemanticModelToDataSetConverter( + column_association_resolver=DunderColumnAssociationResolver(semantic_manifest_lookup) + ) + + for semantic_model in semantic_models: + data_sets[semantic_model.name] = converter.create_sql_source_data_set(semantic_model) + + return data_sets + + +def _semantic_manifest() -> PydanticSemanticManifest: + bookings_yaml_file = YamlConfigFile( + filepath="dummy_path_0", + contents=textwrap.dedent( + """\ + semantic_model: + name: bookings_source + + node_relation: + schema_name: some_schema + alias: bookings_source_table + + defaults: + agg_time_dimension: ds + + measures: + - name: bookings + expr: "1" + agg: sum + create_metric: true + + dimensions: + - name: is_instant + type: categorical + - name: ds + type: time + type_params: + time_granularity: day + + primary_entity: booking + + entities: + - name: listing + type: foreign + expr: listing_id + """ + ), + ) + + project_configuration_yaml_file = YamlConfigFile( + filepath="projection_configuration_yaml_file_path", + contents=textwrap.dedent( + """\ + project_configuration: + time_spine_table_configurations: + - location: example_schema.example_table + column_name: ds + grain: day + """ + ), + ) + + semantic_manifest = parse_yaml_files_to_validation_ready_semantic_manifest( + [bookings_yaml_file, project_configuration_yaml_file], apply_transformations=True + ).semantic_manifest + + SemanticManifestValidator[SemanticManifest]().checked_validations(semantic_manifest) + return semantic_manifest + + +def log_dataflow_plan() -> None: # noqa: D103 + semantic_manifest = _semantic_manifest() + semantic_manifest_lookup = SemanticManifestLookup(semantic_manifest) + data_set_mapping = _create_data_sets(semantic_manifest_lookup) + column_association_resolver = DunderColumnAssociationResolver(semantic_manifest_lookup) + + source_node_builder = SourceNodeBuilder(column_association_resolver, semantic_manifest_lookup) + source_node_set = source_node_builder.create_from_data_sets(list(data_set_mapping.values())) + node_output_resolver = DataflowPlanNodeOutputDataSetResolver( + column_association_resolver=column_association_resolver, + semantic_manifest_lookup=semantic_manifest_lookup, + ) + node_output_resolver.cache_output_data_sets(source_node_set.all_nodes) + + dataflow_plan_builder = DataflowPlanBuilder( + source_node_set=source_node_set, + semantic_manifest_lookup=semantic_manifest_lookup, + node_output_resolver=node_output_resolver, + column_association_resolver=column_association_resolver, + ) + + dataflow_plan = dataflow_plan_builder.build_plan( + MetricFlowQuerySpec( + metric_specs=(MetricSpec(element_name="bookings"),), + dimension_specs=( + DimensionSpec( + element_name="is_instant", + entity_links=(EntityReference("booking"),), + ), + ), + ) + ) + + logger.info(f"Dataflow plan is:\n{dataflow_plan.structure_text()}") + + +def check_engine_import(metricflow_engine: MetricFlowEngine) -> None: + """Doesn't need to run, but having this here means that the import is tested.""" + logger.info(f"Engine is {metricflow_engine}") + + +logging.basicConfig(format="%(asctime)s - %(levelname)s - %(message)s", level=logging.INFO) +log_dataflow_plan() diff --git a/scripts/ci_tests/metricflow_package_test.sh b/scripts/ci_tests/metricflow_package_test.sh new file mode 100644 index 0000000000..54d5fdcdf8 --- /dev/null +++ b/scripts/ci_tests/metricflow_package_test.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Tests that the `metricflow` package works properly. +# TODO: Consolidate the boiler plate. + +# Root directory where `hatch build`, relative to the repo root. +RELATIVE_PACKAGE_DIR="." + +# Show each command and fail the script if any command fails. +set -e +set -x + +# Switch to the repo directory. +SCRIPT_DIR=`dirname "$0"` +echo "SCRIPT_DIR=$SCRIPT_DIR" +REAL_SCRIPT_DIR=`REAL_SCRIPT_DIR=$REAL_SCRIPT_DIR` +REAL_REPO_DIR=`realpath "$SCRIPT_DIR/../.."` +echo "REAL_REPO_DIR=$REAL_REPO_DIR" +cd "$REAL_REPO_DIR" + +# Build the wheels. +PACKAGE_DIR="$REAL_REPO_DIR/$RELATIVE_PACKAGE_DIR" +cd "$PACKAGE_DIR" +hatch clean +hatch build + +# Create a temporary directory and switch to it. +TEMP_DIR=`mktemp -d` +echo "TEMP_DIR=$TEMP_DIR" +cd "$TEMP_DIR" + +# Create a Python virtual env. +python3 -m venv venv +source venv/bin/activate + +# Install the wheel. +pip3 install "$PACKAGE_DIR/dist/"*.whl + +# Run the test +python3 "$REAL_REPO_DIR/scripts/ci_tests/metricflow_package_test.py" diff --git a/scripts/ci_tests/metricflow_semantics_package_test.py b/scripts/ci_tests/metricflow_semantics_package_test.py new file mode 100644 index 0000000000..f2499bfb95 --- /dev/null +++ b/scripts/ci_tests/metricflow_semantics_package_test.py @@ -0,0 +1,89 @@ +from __future__ import annotations + +import logging +import textwrap + +from dbt_semantic_interfaces.implementations.semantic_manifest import PydanticSemanticManifest +from dbt_semantic_interfaces.parsing.dir_to_model import parse_yaml_files_to_validation_ready_semantic_manifest +from dbt_semantic_interfaces.parsing.objects import YamlConfigFile +from dbt_semantic_interfaces.protocols import SemanticManifest +from dbt_semantic_interfaces.validations.semantic_manifest_validator import SemanticManifestValidator +from metricflow_semantics.mf_logging.pretty_print import mf_pformat +from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup +from metricflow_semantics.query.query_parser import MetricFlowQueryParser + +logger = logging.getLogger(__name__) + + +def _semantic_manifest() -> PydanticSemanticManifest: + bookings_yaml_file = YamlConfigFile( + filepath="dummy_path_0", + contents=textwrap.dedent( + """\ + semantic_model: + name: bookings_source + + node_relation: + schema_name: some_schema + alias: bookings_source_table + + defaults: + agg_time_dimension: ds + + measures: + - name: bookings + expr: "1" + agg: sum + create_metric: true + + dimensions: + - name: is_instant + type: categorical + - name: ds + type: time + type_params: + time_granularity: day + + primary_entity: booking + + entities: + - name: listing + type: foreign + expr: listing_id + """ + ), + ) + + project_configuration_yaml_file = YamlConfigFile( + filepath="projection_configuration_yaml_file_path", + contents=textwrap.dedent( + """\ + project_configuration: + time_spine_table_configurations: + - location: example_schema.example_table + column_name: ds + grain: day + """ + ), + ) + + semantic_manifest = parse_yaml_files_to_validation_ready_semantic_manifest( + [bookings_yaml_file, project_configuration_yaml_file], apply_transformations=True + ).semantic_manifest + + SemanticManifestValidator[SemanticManifest]().checked_validations(semantic_manifest) + return semantic_manifest + + +def log_query_spec() -> None: # noqa: D103 + semantic_manifest = _semantic_manifest() + query_parser = MetricFlowQueryParser(SemanticManifestLookup(semantic_manifest)) + query_spec = query_parser.parse_and_validate_query( + metric_names=["bookings"], group_by_names=["booking__is_instant"] + ) + + logger.info(f"{query_spec.__class__.__name__}:\n{mf_pformat(query_spec)}") + + +logging.basicConfig(format="%(asctime)s - %(levelname)s - %(message)s", level=logging.INFO) +log_query_spec() diff --git a/scripts/ci_tests/metricflow_semantics_package_test.sh b/scripts/ci_tests/metricflow_semantics_package_test.sh new file mode 100644 index 0000000000..85cdf8d189 --- /dev/null +++ b/scripts/ci_tests/metricflow_semantics_package_test.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Tests that the `metricflow` package works properly. +# TODO: Consolidate the boiler plate. + +# Root directory where `hatch build`, relative to the repo root. +RELATIVE_PACKAGE_DIR="metricflow-semantics" + +# Show each command and fail the script if any command fails. +set -e +set -x + +# Switch to the repo directory. +SCRIPT_DIR=`dirname "$0"` +echo "SCRIPT_DIR=$SCRIPT_DIR" +REAL_SCRIPT_DIR=`REAL_SCRIPT_DIR=$REAL_SCRIPT_DIR` +REAL_REPO_DIR=`realpath "$SCRIPT_DIR/../.."` +echo "REAL_REPO_DIR=$REAL_REPO_DIR" +cd "$REAL_REPO_DIR" + +# Build the wheels. +PACKAGE_DIR="$REAL_REPO_DIR/$RELATIVE_PACKAGE_DIR" +cd "$PACKAGE_DIR" +hatch clean +hatch build + +# Create a temporary directory and switch to it. +TEMP_DIR=`mktemp -d` +echo "TEMP_DIR=$TEMP_DIR" +cd "$TEMP_DIR" + +# Create a Python virtual env. +python3 -m venv venv +source venv/bin/activate + +# Install the wheel. +pip3 install "$PACKAGE_DIR/dist/"*.whl + +# Run the test +python3 "$REAL_REPO_DIR/scripts/ci_tests/metricflow_semantics_package_test.py"