pleiades.sammy.factory module
Auto setup sammy runner with factory
- class pleiades.sammy.factory.BackendType(value)[source]
Bases:
EnumSupported SAMMY backend types.
- LOCAL = 'local'
- DOCKER = 'docker'
- NOVA = 'nova'
- exception pleiades.sammy.factory.FactoryError[source]
Bases:
ExceptionBase exception for factory errors.
- exception pleiades.sammy.factory.BackendNotAvailableError[source]
Bases:
FactoryErrorRequested backend not available.
- exception pleiades.sammy.factory.ConfigurationError[source]
Bases:
FactoryErrorConfiguration error.
- class pleiades.sammy.factory.SammyFactory[source]
Bases:
objectFactory for creating and managing SAMMY runners.
- static list_available_backends() Dict[BackendType, bool][source]
Check which backends are available in the current environment.
- Returns:
Dict mapping backend types to their availability status
Example
>>> SammyFactory.list_available_backends() { BackendType.LOCAL: True, BackendType.DOCKER: True, BackendType.NOVA: False }
- classmethod create_runner(backend_type: str, working_dir: Path, output_dir: Path | None = None, **kwargs) SammyRunner[source]
Create a SAMMY runner with the specified backend and configuration.
- Parameters:
backend_type – Type of backend (“local”, “docker”, or “nova”)
working_dir – Working directory for SAMMY execution
output_dir – Output directory for SAMMY results (defaults to working_dir/output)
**kwargs –
Backend-specific configuration options: Local backend:
sammy_executable: Path to SAMMY executable shell_path: Path to shell
- Docker backend:
- image_name: Docker image name pinned by digest
(repo/image@sha256:…) or explicit non-mutable version tag (repo/image:1.2.3)
container_working_dir: Working directory in container container_data_dir: Data directory in container
- NOVA backend:
url: NOVA service URL api_key: NOVA API key tool_id: SAMMY tool ID timeout: Request timeout in seconds
- Returns:
Configured SammyRunner instance
- Raises:
BackendNotAvailableError – If requested backend is not available
ConfigurationError – If configuration is invalid
- classmethod from_config(config_path: str | Path) SammyRunner[source]
Create a SAMMY runner from a configuration file.
- Parameters:
config_path – Path to YAML configuration file
- Returns:
Configured SammyRunner instance
- Raises:
ConfigurationError – If configuration file is invalid or missing
BackendNotAvailableError – If requested backend is not available
- Example config file:
backend: local working_dir: /path/to/work output_dir: /path/to/output
- local:
sammy_executable: /path/to/sammy shell_path: /bin/bash
- docker:
image_name: kedokudo/sammy-docker:1.0.0 container_working_dir: /sammy/work container_data_dir: /sammy/data
- nova:
url: ${NOVA_URL} api_key: ${NOVA_API_KEY} tool_id: neutrons_imaging_sammy timeout: 3600
- classmethod auto_select(working_dir: Path, output_dir: Path | None = None, preferred_backend: str | None = None, **kwargs) SammyRunner[source]
Auto-select and configure the best available SAMMY backend.
The selection priority (unless overridden by preferred_backend): 1. Local installation (fastest, simplest) 2. Docker container (portable, isolated) 3. NOVA web service (no local installation needed)
- Parameters:
working_dir – Working directory for SAMMY execution
output_dir – Optional output directory (defaults to working_dir/output)
preferred_backend – Optional preferred backend type (“local”, “docker”, “nova”)
**kwargs – Backend-specific configuration options
- Returns:
Configured SammyRunner instance
- Raises:
BackendNotAvailableError – If no suitable backend is available
ConfigurationError – If configuration is invalid
Examples
>>> runner = SammyFactory.auto_select( ... working_dir="/path/to/work", ... preferred_backend="docker", ... image_name="custom/sammy:1.2.3" ... )