1111from sqlmesh .core .linter .rule import Rule , RuleViolation
1212from sqlmesh .core .console import LinterConsole , get_console
1313
14+ if t .TYPE_CHECKING :
15+ from sqlmesh .core .context import GenericContext
16+
1417
1518def select_rules (all_rules : RuleSet , rule_names : t .Set [str ]) -> RuleSet :
1619 if "all" in rule_names :
@@ -28,15 +31,23 @@ def select_rules(all_rules: RuleSet, rule_names: t.Set[str]) -> RuleSet:
2831
2932class Linter :
3033 def __init__ (
31- self , enabled : bool , all_rules : RuleSet , rules : RuleSet , warn_rules : RuleSet
34+ self ,
35+ context : GenericContext ,
36+ enabled : bool ,
37+ all_rules : RuleSet ,
38+ rules : RuleSet ,
39+ warn_rules : RuleSet ,
3240 ) -> None :
41+ self .context = context
3342 self .enabled = enabled
3443 self .all_rules = all_rules
3544 self .rules = rules
3645 self .warn_rules = warn_rules
3746
3847 @classmethod
39- def from_rules (cls , all_rules : RuleSet , config : LinterConfig ) -> Linter :
48+ def from_rules (
49+ cls , context : GenericContext , all_rules : RuleSet , config : LinterConfig
50+ ) -> Linter :
4051 ignored_rules = select_rules (all_rules , config .ignored_rules )
4152 included_rules = all_rules .difference (ignored_rules )
4253
@@ -49,7 +60,7 @@ def from_rules(cls, all_rules: RuleSet, config: LinterConfig) -> Linter:
4960 f"Rules cannot simultaneously warn and raise an error: [{ overlapping_rules } ]"
5061 )
5162
52- return Linter (config .enabled , all_rules , rules , warn_rules )
63+ return Linter (context , config .enabled , all_rules , rules , warn_rules )
5364
5465 def lint_model (
5566 self , model : Model , console : LinterConsole = get_console ()
0 commit comments