Spaces:
Sleeping
Sleeping
| """Assemble the same import roots used by the deployed Hermes overlay. | |
| The Space copies this repository's ``trading`` and ``tools`` modules into a | |
| full Hermes checkout at ``/opt/hermes``. Local tests must point | |
| ``HERMES_SOURCE_DIR`` at an actual Hermes checkout so imports such as | |
| ``tools.registry`` come from their real owner rather than from a stub. | |
| """ | |
| from __future__ import annotations | |
| import os | |
| import sys | |
| from pathlib import Path | |
| OVERLAY_ROOT = Path(__file__).resolve().parents[1] | |
| PROJECT_ROOT = OVERLAY_ROOT.parent | |
| if str(PROJECT_ROOT) not in sys.path: | |
| sys.path.insert(0, str(PROJECT_ROOT)) | |
| HERMES_SOURCE = Path(os.environ.get("HERMES_SOURCE_DIR", "/opt/hermes")) | |
| if HERMES_SOURCE.is_dir(): | |
| sys.path.insert(0, str(HERMES_SOURCE)) | |
| sys.path.insert(1, str(OVERLAY_ROOT)) | |
| import tools | |
| overlay_tools = str(OVERLAY_ROOT / "tools") | |
| if overlay_tools not in tools.__path__: | |
| tools.__path__.insert(0, overlay_tools) | |
| else: | |
| # The deploy overlays these files into a full Hermes checkout. For a | |
| # standalone source-package test run, provide only the tiny registry surface | |
| # needed at import time; production never sees this test-only module. | |
| import types | |
| sys.path.insert(0, str(OVERLAY_ROOT)) | |
| class _TestRegistry: | |
| def __init__(self): | |
| self.registrations = [] | |
| def register(self, **kwargs): | |
| self.registrations.append(kwargs) | |
| registry_module = types.ModuleType("tools.registry") | |
| registry_module.registry = _TestRegistry() | |
| sys.modules.setdefault("tools.registry", registry_module) | |