Skip to content

Commit

Permalink
Merge pull request #515 from dbt-labs/qmalcolm--dbt-si-move-validations
Browse files Browse the repository at this point in the history
Move model validator and rules to dbt_semantic_interfaces
  • Loading branch information
QMalcolm authored May 11, 2023
2 parents e062a42 + 113396b commit e00609e
Show file tree
Hide file tree
Showing 44 changed files with 102 additions and 78 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,30 @@
from typing import List, Sequence

from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from metricflow.model.validations.agg_time_dimension import AggregationTimeDimensionRule
from metricflow.model.validations.semantic_models import (
from dbt_semantic_interfaces.validations.agg_time_dimension import AggregationTimeDimensionRule
from dbt_semantic_interfaces.validations.semantic_models import (
SemanticModelTimeDimensionWarningsRule,
SemanticModelValidityWindowRule,
)
from metricflow.model.validations.dimension_const import DimensionConsistencyRule
from metricflow.model.validations.element_const import ElementConsistencyRule
from metricflow.model.validations.entities import (
from dbt_semantic_interfaces.validations.dimension_const import DimensionConsistencyRule
from dbt_semantic_interfaces.validations.element_const import ElementConsistencyRule
from dbt_semantic_interfaces.validations.entities import (
NaturalEntityConfigurationRule,
OnePrimaryEntityPerSemanticModelRule,
)
from metricflow.model.validations.measures import (
from dbt_semantic_interfaces.validations.measures import (
PercentileAggregationRule,
CountAggregationExprRule,
SemanticModelMeasuresUniqueRule,
MeasureConstraintAliasesRule,
MetricMeasuresRule,
MeasuresNonAdditiveDimensionRule,
)
from metricflow.model.validations.metrics import CumulativeMetricRule, DerivedMetricRule
from metricflow.model.validations.non_empty import NonEmptyRule
from metricflow.model.validations.reserved_keywords import ReservedKeywordsRule
from metricflow.model.validations.unique_valid_name import UniqueAndValidNameRule
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.metrics import CumulativeMetricRule, DerivedMetricRule
from dbt_semantic_interfaces.validations.non_empty import NonEmptyRule
from dbt_semantic_interfaces.validations.reserved_keywords import ReservedKeywordsRule
from dbt_semantic_interfaces.validations.unique_valid_name import UniqueAndValidNameRule
from dbt_semantic_interfaces.validations.validator_helpers import (
ModelValidationResults,
ModelValidationRule,
ModelValidationException,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import jinja2

from dbt_semantic_interfaces.references import DimensionReference, EntityReference
from metricflow.time.time_granularity import TimeGranularity
from dbt_semantic_interfaces.objects.time_granularity import TimeGranularity


@dataclass(frozen=True)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
YamlConfigLoader,
PARSING_CONTEXT_KEY,
)
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.validator_helpers import (
FileContext,
ModelValidationException,
ModelValidationResults,
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from dbt_semantic_interfaces.objects.elements.dimension import DimensionType
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from dbt_semantic_interfaces.references import SemanticModelElementReference, TimeDimensionReference
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.validator_helpers import (
SemanticModelElementContext,
SemanticModelElementType,
FileContext,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from dbt_semantic_interfaces.objects.elements.entity import Entity
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from dbt_semantic_interfaces.references import SemanticModelElementReference, EntityReference
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.validator_helpers import (
SemanticModelElementContext,
SemanticModelElementType,
FileContext,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from dbt_semantic_interfaces.objects.semantic_model import SemanticModel
from dbt_semantic_interfaces.objects.elements.dimension import Dimension, DimensionType
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.validator_helpers import (
SemanticModelElementContext,
SemanticModelElementType,
FileContext,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from dbt_semantic_interfaces.references import SemanticModelReference
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.validator_helpers import (
SemanticModelContext,
SemanticModelElementType,
FileContext,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
from dbt_semantic_interfaces.objects.elements.entity import EntityType
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from dbt_semantic_interfaces.references import SemanticModelReference
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.validator_helpers import (
SemanticModelContext,
FileContext,
ModelValidationRule,
ValidationIssue,
ValidationError,
validate_safely,
)
from metricflow.model.validations.validator_helpers import ValidationFutureError
from dbt_semantic_interfaces.validations.validator_helpers import ValidationFutureError

logger = logging.getLogger(__name__)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
from dbt_semantic_interfaces.objects.metric import Metric
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from dbt_semantic_interfaces.references import MetricModelReference, MeasureReference
from metricflow.model.validations.unique_valid_name import UniqueAndValidNameRule
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.unique_valid_name import UniqueAndValidNameRule
from dbt_semantic_interfaces.validations.validator_helpers import (
SemanticModelElementContext,
SemanticModelElementReference,
SemanticModelElementType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
from dbt_semantic_interfaces.objects.metric import Metric, MetricType, MetricTimeWindow
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from dbt_semantic_interfaces.references import MetricModelReference
from metricflow.model.validations.unique_valid_name import UniqueAndValidNameRule
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.unique_valid_name import UniqueAndValidNameRule
from dbt_semantic_interfaces.validations.validator_helpers import (
FileContext,
MetricContext,
ModelValidationRule,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import List

from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.validator_helpers import (
ModelValidationRule,
ValidationError,
ValidationIssue,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from dbt_semantic_interfaces.objects.semantic_model import SemanticModel
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.validator_helpers import (
SemanticModelContext,
SemanticModelElementContext,
SemanticModelElementType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from dbt_semantic_interfaces.objects.elements.entity import EntityType
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from dbt_semantic_interfaces.references import SemanticModelReference
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.validator_helpers import (
SemanticModelContext,
FileContext,
ModelValidationRule,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
)
from dbt_semantic_interfaces.references import ElementReference
from dbt_semantic_interfaces.enum_extension import assert_values_exhausted
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.validator_helpers import (
SemanticModelContext,
SemanticModelElementContext,
SemanticModelElementType,
Expand Down
4 changes: 2 additions & 2 deletions metricflow/api/metricflow_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
)
from metricflow.engine.models import Dimension, Metric
from metricflow.engine.utils import build_semantic_manifest_from_config, convert_to_datetime
from metricflow.model.model_validator import ModelValidator
from dbt_semantic_interfaces.model_validator import ModelValidator
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup
from metricflow.model.validations.validator_helpers import ModelValidationResults
from dbt_semantic_interfaces.validations.validator_helpers import ModelValidationResults
from metricflow.protocols.async_sql_client import AsyncSqlClient
from metricflow.sql.optimizer.optimization_levels import SqlQueryOptimizationLevel
from metricflow.sql_clients.common_client import not_empty
Expand Down
4 changes: 2 additions & 2 deletions metricflow/cli/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@
from metricflow.inference.solver.weighted_tree import WeightedTypeTreeInferenceSolver
from metricflow.inference.runner import InferenceProgressReporter, InferenceRunner
from metricflow.model.data_warehouse_model_validator import DataWarehouseModelValidator
from metricflow.model.model_validator import ModelValidator
from dbt_semantic_interfaces.model_validator import ModelValidator
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from metricflow.protocols.sql_client import SqlEngine
from metricflow.engine.utils import model_build_result_from_config
from metricflow.model.validations.validator_helpers import ModelValidationResults
from dbt_semantic_interfaces.validations.validator_helpers import ModelValidationResults
from metricflow.sql_clients.common_client import SqlDialect
from metricflow.telemetry.models import TelemetryLevel
from metricflow.telemetry.reporter import TelemetryReporter, log_call
Expand Down
2 changes: 1 addition & 1 deletion metricflow/dataset/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from dbt_semantic_interfaces.references import TimeDimensionReference
from metricflow.instances import InstanceSet, TimeDimensionInstance
from metricflow.model.validations.unique_valid_name import MetricFlowReservedKeywords
from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords
from metricflow.specs import TimeDimensionSpec
from dbt_semantic_interfaces.objects.time_granularity import TimeGranularity

Expand Down
2 changes: 1 addition & 1 deletion metricflow/model/data_warehouse_model_validator.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
from dbt_semantic_interfaces.objects.metric import Metric
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.validations.validator_helpers import (
SemanticModelContext,
SemanticModelElementContext,
SemanticModelElementType,
Expand Down
6 changes: 5 additions & 1 deletion metricflow/model/dbt_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,11 @@
from dbt_semantic_interfaces.objects.metric import Metric
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from dbt_semantic_interfaces.parsing.dir_to_model import ModelBuildResult
from metricflow.model.validations.validator_helpers import ModelValidationResults, ValidationError, ValidationIssue
from dbt_semantic_interfaces.validations.validator_helpers import (
ModelValidationResults,
ValidationError,
ValidationIssue,
)

logger = logging.getLogger(__name__)

Expand Down
2 changes: 1 addition & 1 deletion metricflow/model/dbt_mapping_rules/dbt_mapping_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from dbt_metadata_client.dbt_metadata_api_schema import MetricNode, ModelNode
from dbt_semantic_interfaces.objects.metric import MetricType
from metricflow.model.validations.validator_helpers import ModelValidationResults
from dbt_semantic_interfaces.validations.validator_helpers import ModelValidationResults


TransformedObjectsValueType: TypeAlias = Any # type: ignore[misc]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@
MappedObjects,
assert_metric_model_name,
)
from metricflow.model.validations.validator_helpers import ModelValidationResults, ValidationIssue, ValidationError
from dbt_semantic_interfaces.validations.validator_helpers import (
ModelValidationResults,
ValidationIssue,
ValidationError,
)


class DbtMapToSemanticModelName(DbtMappingRule):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@
MappedObjects,
assert_metric_model_name,
)
from metricflow.model.validations.validator_helpers import ModelValidationResults, ValidationIssue, ValidationError
from dbt_semantic_interfaces.validations.validator_helpers import (
ModelValidationResults,
ValidationIssue,
ValidationError,
)

DBT_COLUMN_TYPES_TO_DIMENSION_TYPES: Dict[str, DimensionType] = {
"DATE": DimensionType.TIME,
Expand Down
6 changes: 5 additions & 1 deletion metricflow/model/dbt_mapping_rules/dbt_metric_to_measure.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@
get_and_assert_calc_method_mapping,
)
from dbt_semantic_interfaces.objects.metric import MetricType
from metricflow.model.validations.validator_helpers import ModelValidationResults, ValidationIssue, ValidationError
from dbt_semantic_interfaces.validations.validator_helpers import (
ModelValidationResults,
ValidationIssue,
ValidationError,
)

CALC_METHOD_TO_MEASURE_TYPE: Dict[str, AggregationType] = {
"count": AggregationType.COUNT,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,11 @@
get_and_assert_calc_method_mapping,
)
from dbt_semantic_interfaces.objects.metric import MetricInputMeasure, MetricInput, MetricType, MetricTypeParams
from metricflow.model.validations.validator_helpers import ModelValidationResults, ValidationIssue, ValidationError
from dbt_semantic_interfaces.validations.validator_helpers import (
ModelValidationResults,
ValidationIssue,
ValidationError,
)


class DbtToMetricName(DbtMappingRule):
Expand Down
6 changes: 5 additions & 1 deletion metricflow/model/transformations/dbt_to_metricflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@
from dbt_semantic_interfaces.objects.time_granularity import TimeGranularity
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from dbt_semantic_interfaces.parsing.dir_to_model import ModelBuildResult
from metricflow.model.validations.validator_helpers import ModelValidationResults, ValidationError, ValidationIssue
from dbt_semantic_interfaces.validations.validator_helpers import (
ModelValidationResults,
ValidationError,
ValidationIssue,
)


@dataclass
Expand Down
2 changes: 1 addition & 1 deletion metricflow/test/api/test_metricflow_client.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from metricflow.api.metricflow_client import MetricFlowClient
from metricflow.dataflow.sql_table import SqlTable
from metricflow.engine.models import Dimension, Metric
from metricflow.model.validations.validator_helpers import ModelValidationResults
from dbt_semantic_interfaces.validations.validator_helpers import ModelValidationResults
from metricflow.random_id import random_id


Expand Down
4 changes: 2 additions & 2 deletions metricflow/test/cli/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
validate_configs,
version,
)
from metricflow.model.model_validator import ModelValidator
from metricflow.model.validations.validator_helpers import (
from dbt_semantic_interfaces.model_validator import ModelValidator
from dbt_semantic_interfaces.validations.validator_helpers import (
ModelValidationResults,
ValidationError,
ValidationFutureError,
Expand Down
2 changes: 1 addition & 1 deletion metricflow/test/fixtures/model_fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from metricflow.dataflow.dataflow_plan import ReadSqlSourceNode, BaseOutput
from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter
from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet
from metricflow.model.model_validator import ModelValidator
from dbt_semantic_interfaces.model_validator import ModelValidator
from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup
from metricflow.plan_conversion.column_resolver import DefaultColumnAssociationResolver
from metricflow.plan_conversion.time_spine import TimeSpineSource
Expand Down
2 changes: 1 addition & 1 deletion metricflow/test/model/parsing/test_metric_parsing.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from dbt_semantic_interfaces.objects.time_granularity import TimeGranularity
from dbt_semantic_interfaces.parsing.dir_to_model import parse_yaml_files_to_model
from dbt_semantic_interfaces.parsing.objects import YamlConfigFile
from metricflow.model.validations.validator_helpers import ModelValidationException
from dbt_semantic_interfaces.validations.validator_helpers import ModelValidationException


def test_legacy_measure_metric_parsing() -> None:
Expand Down
6 changes: 3 additions & 3 deletions metricflow/test/model/validations/test_agg_time_dimension.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import pytest

from metricflow.model.model_validator import ModelValidator
from dbt_semantic_interfaces.model_validator import ModelValidator
from dbt_semantic_interfaces.objects.elements.dimension import DimensionType
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from metricflow.model.validations.agg_time_dimension import AggregationTimeDimensionRule
from metricflow.model.validations.validator_helpers import ModelValidationException
from dbt_semantic_interfaces.validations.agg_time_dimension import AggregationTimeDimensionRule
from dbt_semantic_interfaces.validations.validator_helpers import ModelValidationException
from metricflow.test.model.validations.test_unique_valid_name import copied_model
from metricflow.test.test_utils import find_semantic_model_with

Expand Down
4 changes: 2 additions & 2 deletions metricflow/test/model/validations/test_common_entities.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
import re
from typing import Callable

from metricflow.model.model_validator import ModelValidator
from dbt_semantic_interfaces.model_validator import ModelValidator
from dbt_semantic_interfaces.objects.semantic_model import SemanticModel
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from metricflow.model.validations.common_entities import CommonEntitysRule
from dbt_semantic_interfaces.validations.common_entities import CommonEntitysRule
from metricflow.specs import EntitySpec
from metricflow.test.test_utils import find_semantic_model_with

Expand Down
4 changes: 2 additions & 2 deletions metricflow/test/model/validations/test_configurable_rules.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import pytest
import copy

from metricflow.model.model_validator import ModelValidator
from dbt_semantic_interfaces.model_validator import ModelValidator
from dbt_semantic_interfaces.objects.semantic_manifest import SemanticManifest
from dbt_semantic_interfaces.objects.metric import MetricTypeParams, MetricInput, MetricType
from metricflow.model.validations.metrics import DerivedMetricRule
from dbt_semantic_interfaces.validations.metrics import DerivedMetricRule
from metricflow.test.model.validations.helpers import metric_with_guaranteed_meta


Expand Down
Loading

0 comments on commit e00609e

Please sign in to comment.