pleiades.sammy.factory module

Auto setup sammy runner with factory

class pleiades.sammy.factory.BackendType(value)[source]

Bases: Enum

Supported SAMMY backend types.

LOCAL = 'local'
DOCKER = 'docker'
NOVA = 'nova'
exception pleiades.sammy.factory.FactoryError[source]

Bases: Exception

Base exception for factory errors.

exception pleiades.sammy.factory.BackendNotAvailableError[source]

Bases: FactoryError

Requested backend not available.

exception pleiades.sammy.factory.ConfigurationError[source]

Bases: FactoryError

Configuration error.

class pleiades.sammy.factory.SammyFactory[source]

Bases: object

Factory 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:
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:
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:

Examples

>>> runner = SammyFactory.auto_select(
...     working_dir="/path/to/work",
...     preferred_backend="docker",
...     image_name="custom/sammy:1.2.3"
... )