Skip to content

Model Registry

geoembed.models.registry

Model registry — maps string names to Embedder implementations.

register_model(name, cls)

Register an Embedder implementation under a given name.

Parameters:

Name Type Description Default
name str

Short identifier (e.g., "dofa", "clay").

required
cls type[Embedder]

The Embedder subclass to register.

required

Raises:

Type Description
TypeError

If cls is not a subclass of Embedder.

Source code in src/geoembed/models/registry.py
def register_model(name: str, cls: type[Embedder]) -> None:
    """
    Register an Embedder implementation under a given name.

    Args:
        name: Short identifier (e.g., "dofa", "clay").
        cls: The Embedder subclass to register.

    Raises:
        TypeError: If cls is not a subclass of Embedder.
    """
    if not (isinstance(cls, type) and issubclass(cls, Embedder)):
        msg = f"Expected a subclass of Embedder, got {cls}"
        raise TypeError(msg)
    _REGISTRY[name.lower()] = cls

get_embedder(name, **kwargs)

Instantiate a registered Embedder by name.

Parameters:

Name Type Description Default
name str

Model name (case-insensitive).

required
**kwargs Any

Arguments passed to the Embedder constructor.

{}

Returns:

Type Description
Embedder

An instantiated Embedder.

Raises:

Type Description
KeyError

If name is not registered.

Source code in src/geoembed/models/registry.py
def get_embedder(name: str, **kwargs: Any) -> Embedder:
    """
    Instantiate a registered Embedder by name.

    Args:
        name: Model name (case-insensitive).
        **kwargs: Arguments passed to the Embedder constructor.

    Returns:
        An instantiated Embedder.

    Raises:
        KeyError: If name is not registered.
    """
    key = name.lower()
    if key not in _REGISTRY:
        available = list(_REGISTRY.keys())
        msg = f"Model '{name}' not registered. Available: {available}"
        raise KeyError(msg)
    return _REGISTRY[key](**kwargs)