File size: 657 Bytes
06c11b0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | from __future__ import annotations
import sys
from pathlib import Path
def find_repo_root(start_file: str | Path) -> Path:
path = Path(start_file).resolve()
cur = path if path.is_dir() else path.parent
for candidate in (cur, *cur.parents):
if (candidate / "pyproject.toml").exists():
return candidate
raise FileNotFoundError(f"Could not find repo root from {path}")
def ensure_src_on_path(start_file: str | Path) -> Path:
repo_root = find_repo_root(start_file)
src_path = repo_root / "src"
src_str = str(src_path)
if src_str not in sys.path:
sys.path.insert(0, src_str)
return repo_root
|