Adapter registry

Named resolution of codec, exporter, and knowledge-base adapters from in-process registration and Python entry points. The entry-point groups are lairs.codecs, lairs.exporters, and lairs.knowledge_bases.

lairs.integrations.registry

Adapter registry for codecs, exporters, and knowledge bases.

The registry resolves named adapters from two sources: in-process registration and Python entry points (so third parties can ship adapters as their own distributions). Entry-point groups are lairs.codecs, lairs.exporters, and lairs.knowledge_bases.

The registry is generic over the adapter type it holds, so lookups return a precisely typed adapter class rather than a widened type. Three typed default registries, one per family, are exposed through the module-level helpers.

UnknownAdapterError

Bases: KeyError

Raised when a requested adapter name is not registered.

The error message lists the adapters available in the relevant registry so that callers can recover.

Registry

Registry(family: str, group: str | None = None)

A registry of named adapter classes for a single family.

Lookups consult in-process registrations first and fall back to entry-point discovery, which runs at most once per registry.

PARAMETER DESCRIPTION
family

A human-readable family name used in error messages.

TYPE: str

group

The entry-point group to discover adapters from. When None, no entry-point discovery is attempted.

TYPE: str or None DEFAULT: None

register

register(name: str, adapter: type[A]) -> None

Register an adapter class under a name.

PARAMETER DESCRIPTION
name

The adapter name.

TYPE: str

adapter

The adapter class.

TYPE: type

get

get(name: str) -> type[A]

Retrieve an adapter class by name.

If the name is not registered in process, entry points are discovered and consulted once.

PARAMETER DESCRIPTION
name

The adapter name.

TYPE: str

RETURNS DESCRIPTION
type

The registered adapter class.

RAISES DESCRIPTION
UnknownAdapterError

If no adapter is registered under name.

available

available() -> list[str]

List the names available in this registry.

Triggers entry-point discovery if it has not run yet.

RETURNS DESCRIPTION
list of str

The sorted available adapter names.

register_codec

register_codec(name: str, adapter: type[Codec]) -> None

Register a codec class in the default registry.

PARAMETER DESCRIPTION
name

The codec name.

TYPE: str

adapter

The codec class.

TYPE: type

register_exporter

register_exporter(
    name: str, adapter: type[Exporter]
) -> None

Register an exporter class in the default registry.

PARAMETER DESCRIPTION
name

The exporter name.

TYPE: str

adapter

The exporter class.

TYPE: type

register_knowledge_base

register_knowledge_base(
    name: str, adapter: type[KnowledgeBase]
) -> None

Register a knowledge-base class in the default registry.

PARAMETER DESCRIPTION
name

The knowledge-base name.

TYPE: str

adapter

The knowledge-base class.

TYPE: type

get_codec

get_codec(name: str) -> type[Codec]

Retrieve a codec class from the default registry.

PARAMETER DESCRIPTION
name

The codec name.

TYPE: str

RETURNS DESCRIPTION
type

The registered codec class.

RAISES DESCRIPTION
UnknownAdapterError

If no codec is registered under name.

get_exporter

get_exporter(name: str) -> type[Exporter]

Retrieve an exporter class from the default registry.

PARAMETER DESCRIPTION
name

The exporter name.

TYPE: str

RETURNS DESCRIPTION
type

The registered exporter class.

RAISES DESCRIPTION
UnknownAdapterError

If no exporter is registered under name.

get_knowledge_base

get_knowledge_base(name: str) -> type[KnowledgeBase]

Retrieve a knowledge-base class from the default registry.

PARAMETER DESCRIPTION
name

The knowledge-base name.

TYPE: str

RETURNS DESCRIPTION
type

The registered knowledge-base class.

RAISES DESCRIPTION
UnknownAdapterError

If no knowledge base is registered under name.

available

available(family: str) -> list[str]

List the available adapter names in a family of the default registries.

PARAMETER DESCRIPTION
family

The adapter family (codecs, exporters, knowledge_bases).

TYPE: str

RETURNS DESCRIPTION
list of str

The sorted available adapter names.

RAISES DESCRIPTION
KeyError

If family is not a known family.