factory.py file-level

at sha256:a · View file ↗ · Intel ↗

History
1 files
1 commits
0 hotspots
0 🧊 dead
0 💥 blast risk
sha256:6 fix(ISR): default require_independent_second_reviewer to require Opera… · aaronrene · Sep 2, 2026
1 """Factory for regime-specific VCS adapters."""
2
3 from __future__ import annotations
4
5 from pathlib import Path
6
7 from adapters.base import VcsAdapter
8 from adapters.config import OverseerConfig
9 from adapters.errors import ConfigError
10 from adapters.runner import CommandRunner
11
12
13 def create_adapter(
14 config: OverseerConfig,
15 repo_root: Path,
16 runner: CommandRunner | None = None,
17 ) -> VcsAdapter:
18 """Instantiate the adapter for ``config.vcs.regime``."""
19 regime = config.vcs.regime
20 if regime == "git-only":
21 from adapters.git_only.adapter import GitOnlyAdapter
22
23 return GitOnlyAdapter(config, repo_root, runner=runner)
24 if regime == "muse-only":
25 from adapters.muse_only.adapter import MuseOnlyAdapter
26
27 return MuseOnlyAdapter(config, repo_root, runner=runner)
28 if regime == "muse+git-mirror":
29 from adapters.muse_git_mirror.adapter import MuseGitMirrorAdapter
30
31 return MuseGitMirrorAdapter(config, repo_root, runner=runner)
32 raise ConfigError(f"unsupported vcs.regime {regime!r}")