11from __future__ import annotations
2- import typing as t
3- from sqlmesh .core .config .linter import LinterConfig
4- from sqlmesh .core .model import Model
5- from sqlmesh .utils .errors import raise_config_error
6- from sqlmesh .core .console import LinterConsole , get_console
2+
73import operator as op
4+ import typing as t
85from collections .abc import Iterator , Iterable , Set , Mapping , Callable
96from functools import reduce
10- from sqlmesh . core . model import Model
11- from sqlmesh .core .linter . rule import Rule , RuleViolation , Range , Fix
7+
8+ from sqlmesh .core .config . linter import LinterConfig
129from sqlmesh .core .console import LinterConsole , get_console
10+ from sqlmesh .core .linter .rule import Rule , RuleViolation , Range , Fix
11+ from sqlmesh .core .model import Model
12+ from sqlmesh .utils .errors import raise_config_error
1313
1414if t .TYPE_CHECKING :
1515 from sqlmesh .core .context import GenericContext
@@ -38,6 +38,12 @@ def __init__(
3838 self .rules = rules
3939 self .warn_rules = warn_rules
4040
41+ if overlapping := rules .intersection (warn_rules ):
42+ overlapping_rules = ", " .join (rule for rule in overlapping )
43+ raise_config_error (
44+ f"Rules cannot simultaneously warn and raise an error: [{ overlapping_rules } ]"
45+ )
46+
4147 @classmethod
4248 def from_rules (cls , all_rules : RuleSet , config : LinterConfig ) -> Linter :
4349 ignored_rules = select_rules (all_rules , config .ignored_rules )
@@ -46,12 +52,6 @@ def from_rules(cls, all_rules: RuleSet, config: LinterConfig) -> Linter:
4652 rules = select_rules (included_rules , config .rules )
4753 warn_rules = select_rules (included_rules , config .warn_rules )
4854
49- if overlapping := rules .intersection (warn_rules ):
50- overlapping_rules = ", " .join (rule for rule in overlapping )
51- raise_config_error (
52- f"Rules cannot simultaneously warn and raise an error: [{ overlapping_rules } ]"
53- )
54-
5555 return Linter (config .enabled , all_rules , rules , warn_rules )
5656
5757 def lint_model (
0 commit comments