nemo_gym.sandbox.providers.registry

View as Markdown

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_opensandbox_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.
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_opensandbox_provider() -> nemo_gym.sandbox.providers.registry.ProviderClass
nemo_gym.sandbox.providers.registry.create_provider(
config: collections.abc.Mapping[str, typing.Any]
) -> nemo_gym.sandbox.providers.base.SandboxProvider

Instantiate a provider from a single-key provider config.

nemo_gym.sandbox.providers.registry.get_provider_class(
name: str
) -> nemo_gym.sandbox.providers.registry.ProviderClass

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

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

List available provider names from all sources.

nemo_gym.sandbox.providers.registry.register_provider(
name: str,
provider_class: nemo_gym.sandbox.providers.registry.ProviderClass,
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] = {}