Entelechy / utils /path_utils.py
qa296
refactor: simplify architecture and rebrand to Entelechy
b8e5043
raw
history blame contribute delete
657 Bytes
"""Path safety utilities."""
from pathlib import Path
def safe_path(base: Path, user_path: str) -> Path:
"""Ensure a path does not escape the base directory.
Args:
base: The base directory that must contain the resolved path.
user_path: The user-provided relative path string.
Returns:
The resolved Path.
Raises:
ValueError: If the resolved path escapes the base directory.
"""
resolved = (base / user_path).resolve()
base_resolved = base.resolve()
if not str(resolved).startswith(str(base_resolved)):
raise ValueError(f"Path escapes workspace: {user_path}")
return resolved