Skip to content

Commit 5ad301f

Browse files
authored
Respect audit skip flag (#700)
1 parent b2d4a14 commit 5ad301f

3 files changed

Lines changed: 18 additions & 6 deletions

File tree

sqlmesh/core/audit/definition.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,12 @@ def _create_query_renderer(self, model: Model) -> QueryRenderer:
222222
class AuditResult(PydanticModel):
223223
audit: Audit
224224
"""The audit this result is for."""
225-
count: int
226-
"""The number of records returned by the audit query."""
227-
query: exp.Expression
228-
"""The rendered query used by the audit."""
225+
count: t.Optional[int]
226+
"""The number of records returned by the audit query. This could be None if the audit was skipped."""
227+
query: t.Optional[exp.Expression]
228+
"""The rendered query used by the audit. This could be None if the audit was skipped."""
229+
skipped: bool = False
230+
"""Whether this audit was skipped or not."""
229231

230232

231233
def _raise_config_error(msg: str, path: pathlib.Path) -> None:

sqlmesh/core/context.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,7 @@ def audit(
786786
num_audits = sum(len(snapshot.model.audits) for snapshot in snapshots)
787787
self.console.log_status_update(f"Found {num_audits} audit(s).")
788788
errors = []
789+
skipped_count = 0
789790
for snapshot in snapshots:
790791
for audit_result in self.snapshot_evaluator.audit(
791792
snapshot=snapshot,
@@ -794,13 +795,19 @@ def audit(
794795
snapshots=self.snapshots,
795796
raise_exception=False,
796797
):
797-
if audit_result.count:
798+
if audit_result.skipped:
799+
self.console.log_status_update(f"{audit_result.audit.name} SKIPPED.")
800+
skipped_count += 1
801+
elif audit_result.count:
798802
errors.append(audit_result)
799803
self.console.log_status_update(f"{audit_result.audit.name} FAIL.")
800804
else:
801805
self.console.log_status_update(f"{audit_result.audit.name} PASS.")
802806

803-
self.console.log_status_update(f"\nFinished with {len(errors)} audit error(s).")
807+
self.console.log_status_update(
808+
f"\nFinished with {len(errors)} audit error{'' if len(errors) == 1 else 's'} "
809+
f"and {skipped_count} audit{'' if skipped_count == 1 else 's'} skipped."
810+
)
804811
for error in errors:
805812
self.console.log_status_update(
806813
f"\nFailure in audit {error.audit.name} ({error.audit._path})."

sqlmesh/core/snapshot/evaluator.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,9 @@ def audit(
314314
results = []
315315
for audit_name, audit_args in snapshot.model.audits:
316316
audit = audits_by_name[audit_name]
317+
if audit.skip:
318+
results.append(AuditResult(audit=audit, skipped=True))
319+
continue
317320
query = audit.render_query(
318321
snapshot,
319322
start=start,

0 commit comments

Comments
 (0)