Coverage for src / domain / validation / __init__.py: 100%
9 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-04 04:43 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-04 04:43 +0000
1"""Validation package for mala post-commit validation.
3This package provides validation runners for clean-room validation
4in temporary git worktrees:
6- SpecValidationRunner: Modern API using ValidationSpec + ValidationContext (RECOMMENDED)
8For new code, use SpecValidationRunner with ValidationSpec and injected dependencies:
10 from src.domain.validation import SpecValidationRunner, build_validation_spec
12 runner = SpecValidationRunner(
13 repo_path,
14 env_config=env_config,
15 command_runner=command_runner,
16 lock_manager=lock_manager,
17 )
18 spec = build_validation_spec(repo_path, scope=ValidationScope.PER_ISSUE, ...)
19 result = await runner.run_spec(spec, context)
20"""
22from .coverage import (
23 CoverageResult,
24 CoverageStatus,
25 check_coverage_threshold,
26 parse_and_check_coverage,
27 parse_coverage_xml,
28)
29from .e2e import (
30 E2EConfig as E2ERunnerConfig,
31 E2EPrereqResult,
32 E2EResult,
33 E2ERunner,
34 E2EStatus,
35 check_e2e_prereqs,
36)
37from .helpers import (
38 annotate_issue,
39 decode_timeout_output,
40 format_step_output,
41 get_ready_issue_id,
42 init_fixture_repo,
43 tail,
44 write_fixture_repo,
45)
46from .result import ValidationResult, ValidationStepResult
47from .runner import (
48 SpecValidationRunner,
49)
50from .spec import (
51 CommandKind,
52 CoverageConfig,
53 E2EConfig,
54 IssueResolution,
55 ResolutionOutcome,
56 ValidationArtifacts,
57 ValidationCommand,
58 ValidationContext,
59 ValidationScope,
60 ValidationSpec,
61 build_validation_spec,
62 classify_change,
63)
64from .validation_gating import (
65 get_config_files_changed,
66 get_matching_code_files,
67 get_setup_files_changed,
68 should_invalidate_lint_cache,
69 should_invalidate_setup_cache,
70 should_trigger_validation,
71)
72from .worktree import (
73 WorktreeConfig,
74 WorktreeContext,
75 WorktreeResult,
76 WorktreeState,
77 cleanup_stale_worktrees,
78 create_worktree,
79 remove_worktree,
80)
82__all__ = [
83 # Spec types
84 "CommandKind",
85 "CoverageConfig",
86 # Coverage
87 "CoverageResult",
88 "CoverageStatus",
89 # E2E
90 "E2EConfig",
91 "E2EPrereqResult",
92 "E2EResult",
93 "E2ERunner",
94 "E2ERunnerConfig",
95 "E2EStatus",
96 "IssueResolution",
97 "ResolutionOutcome",
98 # Runners
99 "SpecValidationRunner",
100 "ValidationArtifacts",
101 "ValidationCommand",
102 "ValidationContext",
103 # Result types
104 "ValidationResult",
105 "ValidationScope",
106 "ValidationSpec",
107 "ValidationStepResult",
108 # Worktree
109 "WorktreeConfig",
110 "WorktreeContext",
111 "WorktreeResult",
112 "WorktreeState",
113 # Helpers (public)
114 "annotate_issue",
115 "build_validation_spec",
116 "check_coverage_threshold",
117 "check_e2e_prereqs",
118 "classify_change",
119 "cleanup_stale_worktrees",
120 "create_worktree",
121 "decode_timeout_output",
122 "format_step_output",
123 # Validation gating
124 "get_config_files_changed",
125 "get_matching_code_files",
126 "get_ready_issue_id",
127 "get_setup_files_changed",
128 "init_fixture_repo",
129 "parse_and_check_coverage",
130 "parse_coverage_xml",
131 "remove_worktree",
132 "should_invalidate_lint_cache",
133 "should_invalidate_setup_cache",
134 "should_trigger_validation",
135 "tail",
136 "write_fixture_repo",
137]