vendor_fabric.registry

Connector Registry with Entry Points.

This module provides automatic discovery and registration of vendor fabric using Python’s entry points system. This allows:

  1. DRY interface via ConnectorBase ABC

  2. Automatic discovery of all connectors (even from other packages)

  3. Unified factory function for instantiation

  4. Shared registry for CLI and provider dispatch

Usage: from vendor_fabric.registry import get_connector, list_available_connectors, list_connectors

# List catalog connectors or only runtime-ready connectors
catalog = list_connectors()
available = list_available_connectors()
# ExtendedList(["anthropic", "aws", "cursor", ...])

# Get a specific connector instance
connector = get_connector('jules', api_key='...')

# Use it
sources = connector.list_sources()

Entry Points (in pyproject.toml): [project.entry-points.”vendor_fabric.connectors”] jules = “vendor_fabric.google.jules:JulesConnector” cursor = “vendor_fabric.cursor:CursorConnector” github = “vendor_fabric.github:GitHubConnector”

Module Contents

Classes

BuiltinConnectorSpec

Import metadata for a built-in connector.

ConnectorInfo

Registry metadata for a connector.

ConnectorAdapter

Adapter contract for connector availability, metadata, and construction.

BuiltinConnectorAdapter

Adapter for a connector shipped inside this distribution.

RegisteredConnectorAdapter

Adapter for a connector class discovered through entry points.

Functions

list_connectors

List connector catalog names.

list_available_connectors

List connector names whose runtime requirements are installed.

get_connector_class

Get a connector class by name.

get_connector

Factory to instantiate a connector by name.

clear_cache

Clear the connector cache (useful for testing).

get_connector_info

Get registry metadata about a connector.

get_connector_adapter

Get the adapter registry entry for a connector.

list_connector_info

Get registry metadata for known connectors.

list_connector_categories

List connector catalog categories.

list_connector_capabilities

List connector catalog capabilities.

list_connectors_by_category

List connector catalog entries for a category.

list_connectors_by_capability

List connector catalog entries for a capability.

Data

API

class vendor_fabric.registry.BuiltinConnectorSpec

Import metadata for a built-in connector.

module_path: str = None
class_name: str = None
extra: str = None
category: str = 'external'
capabilities: tuple[str, ...] = ()
class vendor_fabric.registry.ConnectorInfo

Registry metadata for a connector.

name: str = None
available: bool = None
source: str = None
extra: str | None = None
category: str = None
capabilities: tuple[str, ...] = None
install: str | None = None
requirements: tuple[str, ...] = None
missing: tuple[str, ...] = None
class_name: str | None = None
module: str | None = None
base_url: str | None = None
description: str | None = None
error: str | None = None
as_dict() extended_data.containers.ExtendedDict

Return extended JSON-friendly connector metadata.

class vendor_fabric.registry.ConnectorAdapter

Bases: abc.ABC

Adapter contract for connector availability, metadata, and construction.

name: str = None
abstractmethod load_class() type[vendor_fabric.base.ConnectorBase]

Return the connector class when the adapter is available.

abstractmethod validate_dependencies() None

Raise a central install error when adapter requirements are missing.

abstractmethod info(error: ImportError | None = None) vendor_fabric.registry.ConnectorInfo

Return registry metadata for this adapter.

create(**kwargs: Any) vendor_fabric.base.ConnectorBase

Instantiate the adapter’s connector class.

as_dict() extended_data.containers.ExtendedDict

Return extended JSON-friendly adapter metadata.

vendor_fabric.registry.BUILTIN_CONNECTORS: dict[str, vendor_fabric.registry.BuiltinConnectorSpec] = None
class vendor_fabric.registry.BuiltinConnectorAdapter

Bases: vendor_fabric.registry.ConnectorAdapter

Adapter for a connector shipped inside this distribution.

name: str = None
spec: vendor_fabric.registry.BuiltinConnectorSpec = None
property extra: str

Return the install extra for this adapter.

property requirements: extended_data.containers.ExtendedList[extended_data.containers.ExtendedString]

Return import names required by this adapter.

property missing: extended_data.containers.ExtendedList[extended_data.containers.ExtendedString]

Return missing import names for this adapter.

property install: str

Return the pip install command for this adapter.

property available: bool

Return whether optional runtime requirements are installed.

unavailable_error(error: ImportError | None = None) ImportError

Build the central unavailable-adapter import error.

validate_dependencies() None

Ensure this adapter’s optional runtime requirements are installed.

load_class() type[vendor_fabric.base.ConnectorBase]

Load the connector class after dependency validation.

info(error: ImportError | None = None) vendor_fabric.registry.ConnectorInfo

Return metadata without requiring caller-side import juggling.

create(**kwargs: Any) vendor_fabric.base.ConnectorBase
as_dict() extended_data.containers.ExtendedDict
class vendor_fabric.registry.RegisteredConnectorAdapter

Bases: vendor_fabric.registry.ConnectorAdapter

Adapter for a connector class discovered through entry points.

name: str = None
connector_class: type[vendor_fabric.base.ConnectorBase] = None
load_class() type[vendor_fabric.base.ConnectorBase]

Return the already discovered connector class.

validate_dependencies() None

Entry-point connectors are considered available after successful load.

info(error: ImportError | None = None) vendor_fabric.registry.ConnectorInfo

Return metadata for a loaded entry-point connector.

create(**kwargs: Any) vendor_fabric.base.ConnectorBase
as_dict() extended_data.containers.ExtendedDict
vendor_fabric.registry.BUILTIN_CONNECTOR_ADAPTERS: dict[str, vendor_fabric.registry.BuiltinConnectorAdapter] = None
vendor_fabric.registry.list_connectors(*, include_unavailable: bool = True) extended_data.containers.ExtendedList[extended_data.containers.ExtendedString]

List connector catalog names.

Returns: ExtendedList of known connector registry names.

vendor_fabric.registry.list_available_connectors() extended_data.containers.ExtendedList[extended_data.containers.ExtendedString]

List connector names whose runtime requirements are installed.

vendor_fabric.registry.get_connector_class(name: str) type[vendor_fabric.base.ConnectorBase]

Get a connector class by name.

Args: name: Connector name (e.g., ‘jules’, ‘cursor’, ‘github’)

Returns: The connector class.

Raises: ValueError: If connector not found.

vendor_fabric.registry.get_connector(name: str, **kwargs: Any) vendor_fabric.base.ConnectorBase

Factory to instantiate a connector by name.

Args: name: Connector name (e.g., ‘jules’, ‘cursor’, ‘github’) **kwargs: Arguments passed to connector constructor

Returns: Instantiated connector.

Raises: ValueError: If connector not found.

Example: >>> connector = get_connector(‘jules’, api_key=’…’) >>> connector.list_sources()

vendor_fabric.registry.clear_cache() None

Clear the connector cache (useful for testing).

vendor_fabric.registry.get_connector_info(name: str, *, include_unavailable: bool = True) extended_data.containers.ExtendedDict

Get registry metadata about a connector.

vendor_fabric.registry.get_connector_adapter(name: str, *, include_unavailable: bool = True) vendor_fabric.registry.ConnectorAdapter

Get the adapter registry entry for a connector.

vendor_fabric.registry.list_connector_info(*, include_unavailable: bool = True) extended_data.containers.ExtendedList[extended_data.containers.ExtendedDict]

Get registry metadata for known connectors.

vendor_fabric.registry.list_connector_categories(*, include_unavailable: bool = True) extended_data.containers.ExtendedList[extended_data.containers.ExtendedString]

List connector catalog categories.

vendor_fabric.registry.list_connector_capabilities(*, include_unavailable: bool = True) extended_data.containers.ExtendedList[extended_data.containers.ExtendedString]

List connector catalog capabilities.

vendor_fabric.registry.list_connectors_by_category(category: str, *, include_unavailable: bool = True) extended_data.containers.ExtendedList[extended_data.containers.ExtendedDict]

List connector catalog entries for a category.

vendor_fabric.registry.list_connectors_by_capability(capability: str, *, include_unavailable: bool = True) extended_data.containers.ExtendedList[extended_data.containers.ExtendedDict]

List connector catalog entries for a capability.