SourceMirror - Base source mirror class

The SourceMirror plugin allows one to customize how Source.translate_url() will behave when looking up mirrors, allowing some additional flexibility in the implementation of source mirrors.

Abstract Methods

For loading and configuration purposes, SourceMirrors may optionally implement the Plugin base class Plugin.configure() method in order to load any custom configuration in the config dictionary.

The remaining Plugin base class abstract methods are not relevant to the SourceMirror plugin object and need not be implemented.

SourceMirrors expose the following abstract methods. Unless explicitly mentioned, these methods are mandatory to implement.

  • SourceMirror.translate_url()

    Produce an appropriate URL for the given URL and alias.

Class Reference

exception SourceMirrorError(message: str, *, detail: str | None = None, reason: str | None = None, temporary: bool = False)

Bases: BstError

This exception should be raised by SourceMirror implementations to report errors to the user.

  • message – The breif error description to report to the user

  • detail – A possibly multiline, more detailed error message

  • reason – An optional machine readable reason string, used for test cases

Since: 2.2

class SourceMirror

Bases: Plugin

Base SourceMirror class.

All SourceMirror plugins derive from this class, this interface defines how the core will be interacting with SourceMirror plugins.

Since: 2.2

BST_MIN_VERSION: str | None = '2.2'

The minimum required version of BuildStream required by this plugin.

The version must be expressed as the string “<major>.<minor>”, where the major version number is the API version and the minor version number is the revision of the same BuildStream API where new symbols might have been added to the API.


The following statement means that this plugin works with BuildStream 2.X, only if X >= 2:

class Foo(Source):

    # Our plugin requires 2.2
    BST_MIN_VERSION = "2.2"


This version works exactly the same was as the min-version which must be specified in the project.conf file.

set_supported_aliases(aliases: List[str])

Set the aliases for which self can translate urls.


aliases – The list of aliases supported by this plugin

translate_url(*, alias: str, alias_url: str, source_url: str, extra_data: Dict[str, Any] | None) str

Produce an alternative url for url for the given alias.

This method implements the behavior of Source.translate_url().

  • alias – The alias to translate for

  • alias_url – The default URL configured for this alias in the originating project

  • source_url – The URL as specified by original source YAML, excluding the alias

  • extra_data – An optional extra dictionary to return additional data