| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- from __future__ import annotations
- import platform
- import sys
- from dataclasses import dataclass
- from pathlib import Path
- from .deferred_init import DeferredInitResult, run_deferred_init
- from .prefetch import PrefetchResult, start_keychain_prefetch, start_mdm_raw_read, start_project_scan
- @dataclass(frozen=True)
- class WorkspaceSetup:
- python_version: str
- implementation: str
- platform_name: str
- test_command: str = 'python3 -m unittest discover -s tests -v'
- def startup_steps(self) -> tuple[str, ...]:
- return (
- 'start top-level prefetch side effects',
- 'build workspace context',
- 'load mirrored command snapshot',
- 'load mirrored tool snapshot',
- 'prepare parity audit hooks',
- 'apply trust-gated deferred init',
- )
- @dataclass(frozen=True)
- class SetupReport:
- setup: WorkspaceSetup
- prefetches: tuple[PrefetchResult, ...]
- deferred_init: DeferredInitResult
- trusted: bool
- cwd: Path
- def as_markdown(self) -> str:
- lines = [
- '# Setup Report',
- '',
- f'- Python: {self.setup.python_version} ({self.setup.implementation})',
- f'- Platform: {self.setup.platform_name}',
- f'- Trusted mode: {self.trusted}',
- f'- CWD: {self.cwd}',
- '',
- 'Prefetches:',
- *(f'- {prefetch.name}: {prefetch.detail}' for prefetch in self.prefetches),
- '',
- 'Deferred init:',
- *self.deferred_init.as_lines(),
- ]
- return '\n'.join(lines)
- def build_workspace_setup() -> WorkspaceSetup:
- return WorkspaceSetup(
- python_version='.'.join(str(part) for part in sys.version_info[:3]),
- implementation=platform.python_implementation(),
- platform_name=platform.platform(),
- )
- def run_setup(cwd: Path | None = None, trusted: bool = True) -> SetupReport:
- root = cwd or Path(__file__).resolve().parent.parent
- prefetches = [
- start_mdm_raw_read(),
- start_keychain_prefetch(),
- start_project_scan(root),
- ]
- return SetupReport(
- setup=build_workspace_setup(),
- prefetches=tuple(prefetches),
- deferred_init=run_deferred_init(trusted=trusted),
- trusted=trusted,
- cwd=root,
- )
|