Skip to navigation

nemo_gym.sandbox.providers.registry

View as MarkdownOpen in Claude

Provider registration utilities.

Providers can be made available three ways, in lookup precedence order:

  1. register_provider(name, cls) — explicit in-process registration.

  2. Built-in loaders shipped with NeMo Gym (e.g. opensandbox).

  3. Python entry points in the nemo_gym.sandbox_providers group, so a separate package can publish a provider that becomes available on install. Declare one in that package’s pyproject.toml:

    [project.entry-points."nemo_gym.sandbox_providers"]
    my_provider = "my_pkg.provider:MyProvider"

On name collisions: two entry points sharing a name raise (selection would be nondeterministic); an entry point shadowed by a higher-precedence built-in or registered provider is warned and ignored.

Module Contents

Functions

NameDescription
_entry_point_dist_name-
_entry_point_loadersDiscover provider loaders from installed entry points (cached).
_load_apptainer_provider-
_load_daytona_provider-
_load_docker_provider-
_load_e2b_provider-
_load_ecs_fargate_provider-
_load_enroot_provider-
_load_local_provider-
_load_opensandbox_provider-
_load_openshell_provider-
create_providerInstantiate a provider from a single-key provider config.
get_provider_classReturn a provider class by name (explicit > built-in > entry point).
list_providersList available provider names from all sources.
plugin_distributionsNames of the installed distributions that publish providers as entry points.
provider_service_option_fieldsThe Compose service options (tmpfs, ulimits, sysctls, security_opt) provider name can apply.
register_providerRegister a sandbox provider class.

Data

ENTRY_POINT_GROUP

LOGGER

ProviderClass

ProviderLoader

_BUILTIN_PROVIDER_LOADERS

_ENTRY_POINT_LOADERS

_PROVIDER_REGISTRY

API

nemo_gym.sandbox.providers.registry._entry_point_dist_name(
ep: importlib.metadata.EntryPoint
) -> str
nemo_gym.sandbox.providers.registry._entry_point_loaders() -> dict[str, nemo_gym.sandbox.providers.registry.ProviderLoader]

Discover provider loaders from installed entry points (cached).

Raises if two distributions publish the same provider name, since lookup would otherwise pick one nondeterministically. Warns when an entry point is shadowed by a built-in or explicitly registered provider of the same name.

nemo_gym.sandbox.providers.registry._load_apptainer_provider() -> nemo_gym.sandbox.providers.registry.ProviderClass
nemo_gym.sandbox.providers.registry._load_daytona_provider() -> nemo_gym.sandbox.providers.registry.ProviderClass
nemo_gym.sandbox.providers.registry._load_docker_provider() -> nemo_gym.sandbox.providers.registry.ProviderClass
nemo_gym.sandbox.providers.registry._load_e2b_provider() -> nemo_gym.sandbox.providers.registry.ProviderClass
nemo_gym.sandbox.providers.registry._load_ecs_fargate_provider() -> nemo_gym.sandbox.providers.registry.ProviderClass
nemo_gym.sandbox.providers.registry._load_enroot_provider() -> nemo_gym.sandbox.providers.registry.ProviderClass
nemo_gym.sandbox.providers.registry._load_local_provider() -> nemo_gym.sandbox.providers.registry.ProviderClass
nemo_gym.sandbox.providers.registry._load_opensandbox_provider() -> nemo_gym.sandbox.providers.registry.ProviderClass
nemo_gym.sandbox.providers.registry._load_openshell_provider() -> nemo_gym.sandbox.providers.registry.ProviderClass
nemo_gym.sandbox.providers.create_provider(
config: collections.abc.Mapping[str, typing.Any]

Instantiate a provider from a single-key provider config.

nemo_gym.sandbox.providers.get_provider_class(
name: str

Return a provider class by name (explicit > built-in > entry point).

nemo_gym.sandbox.providers.list_providers() -> list[str]

List available provider names from all sources.

nemo_gym.sandbox.providers.registry.plugin_distributions() -> list[str]

Names of the installed distributions that publish providers as entry points.

nemo_gym.sandbox.providers.provider_service_option_fields(
name: str
) -> frozenset[str]

The Compose service options (tmpfs, ulimits, sysctls, security_opt) provider name can apply.

Read from the provider class’s SERVICE_OPTION_FIELDS (see SupportsSandboxServiceOptions), so prepare can check a task against the deployment’s provider without instantiating it. A provider without the attribute applies none of them.

nemo_gym.sandbox.providers.register_provider(
name: str,
override: bool = False
) -> None

Register a sandbox provider class.

nemo_gym.sandbox.providers.registry.ENTRY_POINT_GROUP = 'nemo_gym.sandbox_providers'
nemo_gym.sandbox.providers.registry.LOGGER = logging.getLogger(__name__)
nemo_gym.sandbox.providers.registry.ProviderClass: TypeAlias = type[SandboxProvider]
nemo_gym.sandbox.providers.registry.ProviderLoader: TypeAlias = Callable[[], ProviderClass]
nemo_gym.sandbox.providers.registry._BUILTIN_PROVIDER_LOADERS: dict[str, ProviderLoader] = {}
nemo_gym.sandbox.providers.registry._ENTRY_POINT_LOADERS: dict[str, ProviderLoader] | None = None
nemo_gym.sandbox.providers.registry._PROVIDER_REGISTRY: dict[str, ProviderClass] = {}