Skip to content

Plugin Registry

API reference for the plugin registry functions in quprep.plugins.


register_encoder

quprep.plugins.register_encoder(name)

Register a custom encoder class under name.

Can be used as a class decorator or called directly:

.. code-block:: python

@register_encoder("my_enc")
class MyEncoder(BaseEncoder): ...

# or:
register_encoder("my_enc")(MyEncoder)

Parameters:

Name Type Description Default
name str

Encoding name used in :func:quprep.prepare and CLI.

required

Returns:

Type Description
Callable

A decorator that registers and returns the class unchanged.

Raises:

Type Description
ValueError

If name is already registered (use :func:unregister_encoder first).

Source code in quprep/plugins.py
def register_encoder(name: str) -> Callable[[type[_T]], type[_T]]:
    """
    Register a custom encoder class under ``name``.

    Can be used as a class decorator or called directly:

    .. code-block:: python

        @register_encoder("my_enc")
        class MyEncoder(BaseEncoder): ...

        # or:
        register_encoder("my_enc")(MyEncoder)

    Parameters
    ----------
    name : str
        Encoding name used in :func:`quprep.prepare` and CLI.

    Returns
    -------
    Callable
        A decorator that registers and returns the class unchanged.

    Raises
    ------
    ValueError
        If ``name`` is already registered (use :func:`unregister_encoder` first).
    """
    def decorator(cls: type[_T]) -> type[_T]:
        if name in _encoder_registry:
            raise ValueError(
                f"Encoder '{name}' is already registered. "
                "Call unregister_encoder('{name}') first."
            )
        _encoder_registry[name] = cls  # type: ignore[assignment]
        return cls

    return decorator

register_exporter

quprep.plugins.register_exporter(name)

Register a custom exporter class under name.

Parameters:

Name Type Description Default
name str

Framework name used in :func:quprep.prepare.

required

Returns:

Type Description
Callable

A decorator that registers and returns the class unchanged.

Raises:

Type Description
ValueError

If name is already registered.

Source code in quprep/plugins.py
def register_exporter(name: str) -> Callable[[type[_T]], type[_T]]:
    """
    Register a custom exporter class under ``name``.

    Parameters
    ----------
    name : str
        Framework name used in :func:`quprep.prepare`.

    Returns
    -------
    Callable
        A decorator that registers and returns the class unchanged.

    Raises
    ------
    ValueError
        If ``name`` is already registered.
    """
    def decorator(cls: type[_T]) -> type[_T]:
        if name in _exporter_registry:
            raise ValueError(
                f"Exporter '{name}' is already registered. "
                "Call unregister_exporter('{name}') first."
            )
        _exporter_registry[name] = cls  # type: ignore[assignment]
        return cls

    return decorator

unregister_encoder

quprep.plugins.unregister_encoder(name)

Remove an encoder from the registry (useful for testing).

Source code in quprep/plugins.py
def unregister_encoder(name: str) -> None:
    """Remove an encoder from the registry (useful for testing)."""
    _encoder_registry.pop(name, None)

unregister_exporter

quprep.plugins.unregister_exporter(name)

Remove an exporter from the registry (useful for testing).

Source code in quprep/plugins.py
def unregister_exporter(name: str) -> None:
    """Remove an exporter from the registry (useful for testing)."""
    _exporter_registry.pop(name, None)

list_encoders

quprep.plugins.list_encoders()

Return names of all registered plugin encoders.

Source code in quprep/plugins.py
def list_encoders() -> list[str]:
    """Return names of all registered plugin encoders."""
    return sorted(_encoder_registry)

list_exporters

quprep.plugins.list_exporters()

Return names of all registered plugin exporters.

Source code in quprep/plugins.py
def list_exporters() -> list[str]:
    """Return names of all registered plugin exporters."""
    return sorted(_exporter_registry)

get_encoder_class

quprep.plugins.get_encoder_class(name)

Return the encoder class registered under name, or None.

Source code in quprep/plugins.py
def get_encoder_class(name: str) -> type | None:
    """Return the encoder class registered under ``name``, or ``None``."""
    return _encoder_registry.get(name)

get_exporter_class

quprep.plugins.get_exporter_class(name)

Return the exporter class registered under name, or None.

Source code in quprep/plugins.py
def get_exporter_class(name: str) -> type | None:
    """Return the exporter class registered under ``name``, or ``None``."""
    return _exporter_registry.get(name)