Source code for poulet_py.hardware.triggers.base

try:
    from abc import ABC, abstractmethod

    from pydantic import BaseModel, Field
except ImportError as e:
    msg = """
Missing 'triggers' module. Install options:
- Dedicated:    pip install poulet_py[triggers]
- Module:       pip install poulet_py[hardware]
- Full:         pip install poulet_py[all]
"""
    raise ImportError(msg) from e


[docs] class BaseTrigger(BaseModel, ABC): """Abstract base class for trigger devices.""" name: str = Field("", description="Name of the trigger device") timeout: float | None = Field(None, description="Timeout in seconds for waiting")
[docs] @abstractmethod def wait(self) -> bool: """Wait for trigger event.""" pass
[docs] @abstractmethod def cleanup(self) -> None: """Cleanup trigger resources.""" pass
def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): self.cleanup()