File indexing completed on 2026-04-28 07:12:52
0001 """ePIC environment configuration utilities."""
0002
0003 from typing import Optional
0004 from pydantic import BaseModel
0005 from pathlib import Path
0006 import os
0007
0008
0009 class EpicConfiguration(BaseModel):
0010 """ePIC-specific environment configuration.
0011
0012 Manages ePIC detector environment variables including singularity image,
0013 installation paths, and EIC reconstruction settings.
0014
0015 Attributes:
0016 singularity_image: Path to the EIC shell singularity image
0017 epic_install: Optional path to ePIC installation directory
0018 eic_recon_install: Optional path to EIC reconstruction installation
0019 eic_shell: Optional override for singularity shell environment variable
0020 eic_recon: Optional override for EIC reconstruction command
0021 """
0022 singularity_image: str
0023 epic_install: Optional[str] = None
0024 eic_recon_install: Optional[str] = None
0025 eic_shell: Optional[str] = None
0026 eic_recon: Optional[str] = None
0027
0028 def activate(self) -> None:
0029 """Activate ePIC environment variables and print a summary."""
0030 if self.epic_install:
0031 os.environ["EPIC_INSTALL"] = self.epic_install
0032 if not self.eic_recon_install:
0033 self.eic_recon_install = str(Path(self.epic_install) / "local")
0034 if self.eic_recon_install:
0035 os.environ["EIC_RECON_INSTALL"] = self.eic_recon_install
0036 if self.singularity_image:
0037 os.environ["EIC_SHELL"] = self.singularity_image
0038 if self.eic_recon:
0039 os.environ["EIC_RECON"] = self.eic_recon
0040
0041 print("[INFO] ePIC environment variables set:")
0042 for var in ["EPIC_INSTALL", "EIC_RECON_INSTALL", "EIC_SHELL", "EIC_RECON"]:
0043 if var in os.environ:
0044 print(f" {var} = {os.environ[var]}")