nemo_gym.sandbox.providers.daytona

View as Markdown

Daytona provider package.

Submodules

Package Contents

Classes

NameDescription
DaytonaBatchConfigClient-side batch fanout settings.
DaytonaConnectionConfigDaytona API client connection settings.
DaytonaCreateConfigDaytona sandbox creation settings.
DaytonaCreateErrorRaised when Daytona cannot create a sandbox.
DaytonaCreateTimeoutErrorRaised when Daytona sandbox creation exceeds the client timeout.
DaytonaOperationConfigRetry and timeout settings for Daytona operations after create.
DaytonaProbeConfigPost-create probe settings.
DaytonaProviderProvider backed by the Daytona Python SDK.
DaytonaProviderOptionsRecognized per-sandbox create options read from SandboxSpec.provider_options.

API

class nemo_gym.sandbox.providers.daytona.DaytonaBatchConfig(
concurrency: int = 4
)
Dataclass

Bases: DaytonaConfigBase

Client-side batch fanout settings.

concurrency
int = 4
nemo_gym.sandbox.providers.daytona.DaytonaBatchConfig.__post_init__() -> None
class nemo_gym.sandbox.providers.daytona.DaytonaConnectionConfig(
api_key: str | None = None,
jwt_token: str | None = None,
organization_id: str | None = None,
api_url: str | None = None,
server_url: str | None = None,
target: str | None = None,
connection_pool_maxsize: int | None = None,
otel_enabled: bool | None = None
)
Dataclass

Bases: DaytonaConfigBase

Daytona API client connection settings.

api_key
str | None = None
api_url
str | None = None
connection_pool_maxsize
int | None = None
jwt_token
str | None = None
organization_id
str | None = None
otel_enabled
bool | None = None
server_url
str | None = None
target
str | None = None
nemo_gym.sandbox.providers.daytona.DaytonaConnectionConfig.__post_init__() -> None
class nemo_gym.sandbox.providers.daytona.DaytonaCreateConfig(
timeout_s: float = 60.0,
retries: int = 2,
retry_delay_s: float = 1.0,
retry_max_delay_s: float = 30.0,
language: str | None = None,
os_user: str | None = None,
public: bool | None = None,
auto_stop_interval: int | None = None,
auto_archive_interval: int | None = None,
auto_delete_interval: int | None = None,
ephemeral: bool | None = None,
network_block_all: bool | None = None,
network_allow_list: str | None = None
)
Dataclass

Bases: DaytonaConfigBase

Daytona sandbox creation settings.

auto_archive_interval
int | None = None
auto_delete_interval
int | None = None
auto_stop_interval
int | None = None
ephemeral
bool | None = None
language
str | None = None
network_allow_list
str | None = None
network_block_all
bool | None = None
os_user
str | None = None
public
bool | None = None
retries
int = 2
retry_delay_s
float = 1.0
retry_max_delay_s
float = 30.0
timeout_s
float = 60.0
nemo_gym.sandbox.providers.daytona.DaytonaCreateConfig.__post_init__() -> None
class nemo_gym.sandbox.providers.daytona.DaytonaCreateError()

Bases: SandboxCreateError

Raised when Daytona cannot create a sandbox.

class nemo_gym.sandbox.providers.daytona.DaytonaCreateTimeoutError()

Bases: DaytonaCreateError

Raised when Daytona sandbox creation exceeds the client timeout.

class nemo_gym.sandbox.providers.daytona.DaytonaOperationConfig(
retries: int = 3,
retry_delay_s: float = 1.0,
retry_max_delay_s: float = 15.0,
command_retries: int = 0,
command_timeout_margin_s: float = 60.0,
file_timeout_s: int | None = 30 * 60,
close_timeout_s: float | None = 60.0
)
Dataclass

Bases: DaytonaConfigBase

Retry and timeout settings for Daytona operations after create.

close_timeout_s
float | None = 60.0
command_retries
int = 0
command_timeout_margin_s
float = 60.0
file_timeout_s
int | None = 30 * 60
retries
int = 3
retry_delay_s
float = 1.0
retry_max_delay_s
float = 15.0
nemo_gym.sandbox.providers.daytona.DaytonaOperationConfig.__post_init__() -> None
class nemo_gym.sandbox.providers.daytona.DaytonaProbeConfig(
command: str | None = 'printf nemo-rl-sandbox-ready',
expected_stdout: str | None = 'nemo-rl-sandbox-ready',
timeout_s: int = 30,
deadline_s: float | None = None
)
Dataclass

Bases: DaytonaConfigBase

Post-create probe settings.

command
str | None = 'printf nemo-rl-sandbox-ready'
deadline_s
float | None = None
expected_stdout
str | None = 'nemo-rl-sandbox-ready'
timeout_s
int = 30
nemo_gym.sandbox.providers.daytona.DaytonaProbeConfig.__post_init__() -> None
class nemo_gym.sandbox.providers.daytona.DaytonaProvider(
connection: nemo_gym.sandbox.providers.daytona.provider.DaytonaConnectionConfig | collections.abc.Mapping[str, typing.Any] | None = None,
create: nemo_gym.sandbox.providers.daytona.provider.DaytonaCreateConfig | collections.abc.Mapping[str, typing.Any] | None = None,
probe: nemo_gym.sandbox.providers.daytona.provider.DaytonaProbeConfig | collections.abc.Mapping[str, typing.Any] | None = None,
operations: nemo_gym.sandbox.providers.daytona.provider.DaytonaOperationConfig | collections.abc.Mapping[str, typing.Any] | None = None,
batch: nemo_gym.sandbox.providers.daytona.provider.DaytonaBatchConfig | collections.abc.Mapping[str, typing.Any] | None = None
)

Provider backed by the Daytona Python SDK.

_batch
= DaytonaBatchConfig.from_mapping(batch)
_connection
= DaytonaConnectionConfig.from_mapping(connection)
_connection_supplied_keys
_create
= DaytonaCreateConfig.from_mapping(create)
_daytona
Any | None = None
_operations
= DaytonaOperationConfig.from_mapping(operations)
_probe
= DaytonaProbeConfig.from_mapping(probe)
name
= 'daytona'
nemo_gym.sandbox.providers.daytona.DaytonaProvider._await_operation(
operation_factory: typing.Callable[[], typing.Awaitable[typing.Any]],
operation: str,
sandbox_id: str,
timeout_s: float | None,
retries: int | None = None
) -> typing.Any
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider._base_create_kwargs(
) -> dict[str, typing.Any]
nemo_gym.sandbox.providers.daytona.DaytonaProvider._client() -> typing.Any
nemo_gym.sandbox.providers.daytona.DaytonaProvider._command_retry_count() -> int
nemo_gym.sandbox.providers.daytona.DaytonaProvider._create_once(
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider._create_with_retries(
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider._effective_command(
command: str,
user: str | int | None
) -> str
staticmethod
nemo_gym.sandbox.providers.daytona.DaytonaProvider._exec(
command: str,
cwd: str | None = None,
env: dict[str, str] | None = None,
timeout_s: int | None = None,
user: str | int | None = None,
retries: int | None = None
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider._to_create_params(
) -> typing.Any | None
nemo_gym.sandbox.providers.daytona.DaytonaProvider._verify_created_handle(
) -> None
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider._with_generated_sandbox_id(
nemo_gym.sandbox.providers.daytona.DaytonaProvider.aclose() -> None
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider.close(
delete: bool = True
) -> None
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider.connect(
sandbox_id: str
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider.create(
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider.create_batch(
count: int,
allow_partial: bool = False
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider.download_file(
source_path: str,
target_path: pathlib.Path
) -> None
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider.exec(
command: str,
cwd: str | None = None,
env: dict[str, str] | None = None,
timeout_s: int | None = None,
user: str | int | None = None
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider.read_file(
source_path: str
) -> bytes
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider.status(
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider.upload_file(
source_path: pathlib.Path,
target_path: str
) -> None
async
nemo_gym.sandbox.providers.daytona.DaytonaProvider.write_file(
target_path: str,
data: str | bytes
) -> None
async
class nemo_gym.sandbox.providers.daytona.DaytonaProviderOptions(
extensions: collections.abc.Mapping[str, str] = dict(),
snapshot_id: str | None = None,
volumes: tuple[collections.abc.Mapping[str, typing.Any], ...] = ()
)
Dataclass

Recognized per-sandbox create options read from SandboxSpec.provider_options.

extensions
Mapping[str, str] = field(default_factory=dict)
snapshot_id
str | None = None
volumes
tuple[Mapping[str, Any], ...] = ()
nemo_gym.sandbox.providers.daytona.DaytonaProviderOptions.from_mapping(
options: collections.abc.Mapping[str, typing.Any] | None
classmethod