nemo_gym.sandbox.adapters.docker_compose

View as Markdown

Run Compose services through the sandbox API.

Input YAML is resolved upstream; unsupported runtime semantics are rejected before provisioning services.

Module Contents

Classes

NameDescription
AsyncSandboxComposeStart services from a Compose YAML file and own their sandbox lifecycle.

Functions

NameDescription
_seconds-

API

class nemo_gym.sandbox.adapters.docker_compose.AsyncSandboxCompose(
provider,
compose_file: str | pathlib.Path | None,
service_specs: collections.abc.Mapping[str, nemo_gym.sandbox.providers.SandboxSpec] | None = None,
timeout_s: float = 1200,
poll_interval_s: float = 0.5,
volume_init_image: str = 'alpine:3.22',
volume_sources: collections.abc.Mapping[str, str] | None = None
)

Start services from a Compose YAML file and own their sandbox lifecycle.

Deployment settings stay in the provider and optional service_specs. Compose fields override the corresponding spec fields.

_plans
dict[str, dict[str, Any]] = {}
_processes
dict[str, Task] = {}
_runtime_metadata
dict[str, dict[str, str]] = {}
_seeds
list[AsyncSandbox] = []
_stop_task
Task | None = None
_volume_helper
AsyncSandbox | None = None
compose_file
document
dict[str, Any] = {}
project
= 'compose-' + uuid.uuid4().hex
provider
service_specs
= dict(service_specs or {})
services
dict[str, AsyncSandbox] = {}
volume_sources
= dict(volume_sources or {})
nemo_gym.sandbox.adapters.docker_compose.AsyncSandboxCompose.__aenter__()
async
nemo_gym.sandbox.adapters.docker_compose.AsyncSandboxCompose.__aexit__(
exc = ()
)
async
nemo_gym.sandbox.adapters.docker_compose.AsyncSandboxCompose._load()
nemo_gym.sandbox.adapters.docker_compose.AsyncSandboxCompose._prepare()
async
nemo_gym.sandbox.adapters.docker_compose.AsyncSandboxCompose._prepare_volumes()
async
nemo_gym.sandbox.adapters.docker_compose.AsyncSandboxCompose._stop()
async
nemo_gym.sandbox.adapters.docker_compose.AsyncSandboxCompose._validate() -> list[str]
nemo_gym.sandbox.adapters.docker_compose.AsyncSandboxCompose._wait(
name,
condition
)
async
asyncclassmethod

Connect to all members without provisioning or restarting services.

Like AsyncSandbox.connect, stop() closes the connected sandboxes using provider semantics. The creator retains ownership of managed-volume cleanup and running service/forwarding tasks and must also call stop().

nemo_gym.sandbox.adapters.docker_compose.AsyncSandboxCompose.serialize(
scope: str | None = None
) -> dict[str, typing.Any]
async

Describe a running collection using provider connection descriptors.

The creating process must keep the collection alive: it owns service and forwarding tasks and managed-volume cleanup. Provider configuration and YAML are not included.

nemo_gym.sandbox.adapters.docker_compose.AsyncSandboxCompose.start()
async
nemo_gym.sandbox.adapters.docker_compose.AsyncSandboxCompose.stop()
async
nemo_gym.sandbox.adapters.docker_compose._seconds(
value: str | int | float
) -> float