get_role#

bamengine.core.registry.get_role(name)[source]#

Retrieve a role class from the registry by name.

Parameters:

name (str) – Name of the role to retrieve (case-sensitive).

Returns:

The registered role class.

Return type:

type[Role]

Raises:

KeyError – If the role name is not found in the registry. Error message includes list of all available roles.

Examples

Retrieve a role class and create instance:

>>> from bamengine.core.registry import get_role
>>> import numpy as np
>>> Producer = get_role("Producer")
>>> prod = Producer(
...     price=np.array([1.0, 1.2]),
...     production=np.array([100.0, 120.0]),
...     inventory=np.array([0.0, 10.0]),
...     labor_productivity=np.array([2.0, 2.0]),
... )

Use in simulation:

>>> import bamengine as bam
>>> sim = bam.Simulation.init(n_firms=100, seed=42)
>>> Producer = get_role("Producer")
>>> assert isinstance(sim.prod, Producer)

Handle missing role:

>>> try:
...     get_role("NonExistent")
... except KeyError as e:
...     print(e)
Role 'NonExistent' not found in registry. Available roles: ...

See also

list_roles()

Get list of all registered role names

get_event()

Retrieve event class from registry