| """Helpers for importing agent-redact modules in unit tests.""" |
|
|
| from __future__ import annotations |
|
|
| import importlib |
| import sys |
| from pathlib import Path |
| from types import ModuleType |
|
|
|
|
| def agent_redact_paths() -> list[Path]: |
| """Return sys.path entries for the agent-redact layout.""" |
| root = Path(__file__).resolve().parents[1] |
| ar = root / "agent-redact" |
| return [root, ar, ar / "shared", ar / "pi", ar / "agentcore"] |
|
|
|
|
| def ensure_agent_redact_paths() -> None: |
| """Insert agent-redact import roots if absent.""" |
| for path in agent_redact_paths(): |
| text = str(path) |
| if text not in sys.path: |
| sys.path.insert(0, text) |
|
|
|
|
| def ensure_gradio_importable() -> None: |
| """Prefer the installed gradio package; only inject a minimal stub when absent. |
| |
| Do not register a fake ``gradio`` in ``sys.modules`` when the real package is |
| installed — pytest imports all test modules in one process, and an early stub |
| breaks collection for tests that need ``from gradio import Progress``. |
| """ |
| existing = sys.modules.get("gradio") |
| if existing is not None and getattr(existing, "__file__", None): |
| return |
| try: |
| importlib.import_module("gradio") |
| return |
| except (ImportError, ModuleNotFoundError, SystemError, OSError): |
| pass |
| if existing is not None: |
| return |
| stub = ModuleType("gradio") |
| stub.FileExplorer = lambda **kwargs: kwargs |
| stub.Request = type("Request", (), {}) |
| sys.modules["gradio"] = stub |
|
|