Skip to content

Commit bfe9ef7

Browse files
committed
feat: add context to linter rules
1 parent 6365efb commit bfe9ef7

2 files changed

Lines changed: 15 additions & 4 deletions

File tree

sqlmesh/core/context.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,7 @@ def load(self, update_schemas: bool = True) -> GenericContext[C]:
614614

615615
config = loader.config
616616
self._linters[config.project] = Linter.from_rules(
617-
BUILTIN_RULES.union(project.user_rules), config.linter
617+
self, BUILTIN_RULES.union(project.user_rules), config.linter
618618
)
619619

620620
uncached = set()

sqlmesh/core/linter/definition.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
from sqlmesh.core.linter.rule import Rule, RuleViolation
1212
from sqlmesh.core.console import LinterConsole, get_console
1313

14+
if t.TYPE_CHECKING:
15+
from sqlmesh.core.context import GenericContext
16+
1417

1518
def 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

2932
class 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

Comments
 (0)