# `mopidy.ext` – Extension API

If you want to learn how to make Mopidy extensions, read Extension development.

class mopidy.ext.Extension

  Base class for Mopidy extensions

  classmethod check_attr() → None

    Check if ext_name exist.

  dist_name: str

    The extension’s distribution name, as registered on PyPI

    Example: `Mopidy-Soundspot`

  ext_name: str

    The extension’s short name, as used in setup.py and as config section name

    Example: `soundspot`

  classmethod get_cache_dir(config: Config) → Path

    Get or create cache directory for the extension.

    Use this directory to cache data that can safely be thrown away.

    Parameters:

      config – the Mopidy config object

    Returns:

      pathlib.Path

  get_command() → Command | None

    Command to expose to command line users running `mopidy`.

    Returns:

      Instance of a `Command` class.

  classmethod get_config_dir(config: Config) → Path

    Get or create configuration directory for the extension.

    Parameters:

      config – the Mopidy config object

    Returns:

      pathlib.Path

  get_config_schema() → ConfigSchema

    The extension’s config validation schema

    Returns:

      `ConfigSchema`

  classmethod get_data_dir(config: Config) → Path

    Get or create data directory for the extension.

    Use this directory to store data that should be persistent.

    Parameters:

      config – the Mopidy config object

    Returns:

      pathlib.Path

  get_default_config() → str

    The extension’s default config as a text string.

    Returns:

      str

  setup(registry: Registry) → None

    Register the extension’s components in the extension `Registry`.

    For example, to register a backend:

        def setup(self, registry):
            from .backend import SoundspotBackend
            registry.add('backend', SoundspotBackend)

    See `Registry` for a list of registry keys with a special meaning. Mopidy will instantiate and start any classes registered under the `frontend` and `backend` registry keys.

    This method can also be used for other setup tasks not involving the extension registry.

    Parameters:

      registry (`Registry`) – the extension registry

  validate_environment() → None

    Checks if the extension can run in the current environment.

    Dependencies described by `setup.py` are checked by Mopidy, so you should not check their presence here.

    If a problem is found, raise `ExtensionError` with a message explaining the issue.

    Raises:

      `ExtensionError`

    Returns:

      `None`

  version: str

    The extension’s version

    Should match the `__version__` attribute on the extension’s main Python module and the version registered on PyPI.

class mopidy.ext.ExtensionData(extension, entry_point, config_schema, config_defaults, command)
  command: Command | None

    Alias for field number 4

  config_defaults: Any

    Alias for field number 3

  config_schema: ConfigSchema

    Alias for field number 2

  entry_point: Any

    Alias for field number 1

  extension: 'Extension'

    Alias for field number 0

class mopidy.ext.Registry

  Registry of components provided by Mopidy extensions.

  Passed to the `setup()` method of all extensions. The registry can be used like a dict of string keys and lists.

  Some keys have a special meaning, including, but not limited to:

  - `backend` is used for Mopidy backend classes.

  - `frontend` is used for Mopidy frontend classes.

  Extensions can use the registry for allow other to extend the extension itself. For example the `Mopidy-Local` historically used the `local:library` key to allow other extensions to register library providers for `Mopidy-Local` to use. Extensions should namespace custom keys with the extension’s `ext_name`, e.g. `local:foo` or `http:bar`.

  add(name: str, cls: Type[Any]) → None

    Add a component to the registry.

    Multiple classes can be registered to the same name.

mopidy.ext.load_extensions() → List[ExtensionData]

  Find all installed extensions.

  Returns:

    list of installed extensions

mopidy.ext.validate_extension_data(data: ExtensionData) → bool

  Verify extension’s dependencies and environment.

  Parameters:

    extensions – an extension to check

  Returns:

    if extension should be run