Skip to content

pixano_inference.models.registry

Model class registry for inference deployments.

ModelClassRegistry

Registry mapping model class names to their implementations.

This registry allows users to register custom model classes via the @register_model decorator and look them up by name at deployment time.

ensure_registered(model_cls, name=None) classmethod

Register a model class if absent, or verify an existing registration.

Parameters:

Name Type Description Default
model_cls type[InferenceModel]

Model class to register.

required
name str | None

Optional registered name. Defaults to model_cls.__name__.

None

Returns:

Type Description
str

The registered name.

Raises:

Type Description
ValueError

If the name is already registered to a different class.

Source code in pixano_inference/models/registry.py
@classmethod
def ensure_registered(cls, model_cls: type[InferenceModel], name: str | None = None) -> str:
    """Register a model class if absent, or verify an existing registration.

    Args:
        model_cls: Model class to register.
        name: Optional registered name. Defaults to ``model_cls.__name__``.

    Returns:
        The registered name.

    Raises:
        ValueError: If the name is already registered to a different class.
    """
    reg_name = name or model_cls.__name__
    existing = cls._registry.get(reg_name)
    if existing is None:
        cls._registry[reg_name] = model_cls
    elif existing is not model_cls:
        raise ValueError(f"Model class '{reg_name}' already registered to a different class.")
    return reg_name

get(name) classmethod

Get a registered model class by name.

Parameters:

Name Type Description Default
name str

Registered name of the model class.

required

Returns:

Type Description
type[InferenceModel]

The model class.

Raises:

Type Description
KeyError

If the name is not registered.

Source code in pixano_inference/models/registry.py
@classmethod
def get(cls, name: str) -> type[InferenceModel]:
    """Get a registered model class by name.

    Args:
        name: Registered name of the model class.

    Returns:
        The model class.

    Raises:
        KeyError: If the name is not registered.
    """
    if name not in cls._registry:
        raise KeyError(f"Model class '{name}' not found. Available: {list(cls._registry.keys())}")
    return cls._registry[name]

has(name) classmethod

Check if a model class is registered.

Parameters:

Name Type Description Default
name str

Name to check.

required

Returns:

Type Description
bool

True if registered.

Source code in pixano_inference/models/registry.py
@classmethod
def has(cls, name: str) -> bool:
    """Check if a model class is registered.

    Args:
        name: Name to check.

    Returns:
        True if registered.
    """
    return name in cls._registry

list_all() classmethod

List all registered model classes.

Returns:

Type Description
dict[str, type[InferenceModel]]

Dictionary of name to model class.

Source code in pixano_inference/models/registry.py
@classmethod
def list_all(cls) -> dict[str, type[InferenceModel]]:
    """List all registered model classes.

    Returns:
        Dictionary of name to model class.
    """
    return cls._registry.copy()

register(name=None) classmethod

Decorator to register a model class.

Parameters:

Name Type Description Default
name str | None

Name to register the class under. If None, uses the class name.

None

Returns:

Type Description
Callable[[type[InferenceModel]], type[InferenceModel]]

The decorator function.

Source code in pixano_inference/models/registry.py
@classmethod
def register(cls, name: str | None = None) -> Callable[[type[InferenceModel]], type[InferenceModel]]:
    """Decorator to register a model class.

    Args:
        name: Name to register the class under. If None, uses the class name.

    Returns:
        The decorator function.
    """

    def decorator(model_cls: type[InferenceModel]) -> type[InferenceModel]:
        reg_name = name or model_cls.__name__
        if reg_name in cls._registry:
            raise ValueError(f"Model class '{reg_name}' already registered.")
        cls._registry[reg_name] = model_cls
        return model_cls

    return decorator

register_model(name=None)

Convenience decorator for registering model classes.

Parameters:

Name Type Description Default
name str | None

Name to register under. If None, uses the class name.

None

Returns:

Type Description
Callable[[type[InferenceModel]], type[InferenceModel]]

The decorator function.

Source code in pixano_inference/models/registry.py
def register_model(name: str | None = None) -> Callable[[type[InferenceModel]], type[InferenceModel]]:
    """Convenience decorator for registering model classes.

    Args:
        name: Name to register under. If None, uses the class name.

    Returns:
        The decorator function.
    """
    return ModelClassRegistry.register(name)