unilab.base.env_factory

Picklable EnvFactory adapters bridging uni_rl’s injected env contract to the UniLab env registry.

uni_rl runners and collectors never construct environments themselves; the caller injects an EnvFactory (see uni_rl.env_contract). Because collectors run in multiprocessing spawn subprocesses, the factory must be picklable by reference — the adapters below are module-level functions bound with functools.partial (never closures or lambdas).

Functions

make_registry_env(task_name, sim_backend, ...)

EnvFactory implementation backed by the UniLab env registry.

registry_env_factory(task_name, sim_backend)

Bind a registry task/backend pair into a picklable EnvFactory.

unilab.base.env_factory.make_registry_env(task_name, sim_backend, num_envs, env_cfg_override=None)[source]

EnvFactory implementation backed by the UniLab env registry.

Top-level on purpose: functools.partial bindings of this function stay picklable for spawn-based collector subprocesses. ensure_registries runs here because a spawned subprocess is a fresh interpreter that never executed the parent process’s registry bootstrap.

Parameters:
Return type:

EnvProtocol

unilab.base.env_factory.registry_env_factory(task_name, sim_backend)[source]

Bind a registry task/backend pair into a picklable EnvFactory.

Parameters:
  • task_name (str)

  • sim_backend (str)

Return type:

Callable[[int, Mapping[str, Any] | None], EnvProtocol]