betty.project.extension package

Subpackages

Submodules

Module contents

Provide Betty’s extension API.

class betty.project.extension.ConfigurableExtension[source]

Bases: Extension, Generic[_ConfigurationT], Configurable[_ConfigurationT]

A configurable extension.

__init__(project: Project)[source]
abstract classmethod default_configuration() _ConfigurationT[source]

Get this extension’s default configuration.

exception betty.project.extension.CyclicDependencyError[source]

Bases: ExtensionError, RuntimeError

Raised when extensions define a cyclic dependency, e.g. two extensions depend on each other.

__init__(extension_types: Iterable[type[Extension]])[source]
betty.project.extension.EXTENSION_REPOSITORY: PluginRepository[Extension] = <betty.plugin.entry_point.EntryPointPluginRepository object>

The project extension plugin repository.

Read more about Extension plugins.

class betty.project.extension.Extension[source]

Bases: Plugin, CoreComponent, ProjectDependentFactory

Integrate optional functionality with Betty :py:class:`betty.project.Project`s.

Read more about Extension plugins.

To test your own subclasses, use betty.test_utils.project.extension.ExtensionTestBase.

__init__(project: Project)[source]
classmethod assets_directory_path() Path | None[source]

Return the path on disk where the extension’s assets are located.

This may be anywhere in your Python package.

classmethod comes_after() set[type[Extension] | str][source]

The extensions that this one comes after.

The other extensions may or may not be enabled.

classmethod comes_before() set[type[Extension] | str][source]

The extensions that this one comes before.

The other extensions may or may not be enabled.

classmethod depends_on() set[type[Extension] | str][source]

The extensions this one depends on, and comes after.

disable_requirement() Requirement[source]

Define the requirement for this extension to be disabled.

This defaults to the extension’s dependents.

classmethod enable_requirement() Requirement[source]

Define the requirement for this extension to be enabled.

This defaults to the extension’s dependencies.

async classmethod new_for_project(project: Project) Self[source]

Create a new instance using the given project.

property project: Project

The project this extension runs within.

register_event_handlers(registry: EventHandlerRegistry) None[source]

Register event handlers with the project.

exception betty.project.extension.ExtensionError[source]

Bases: BaseException

A generic extension API error.

class betty.project.extension.Theme[source]

Bases: Extension

An extension that is a front-end theme.

async betty.project.extension.build_extension_type_graph(extension_types: Iterable[type[Extension]]) MutableMapping[type[Extension], set[type[Extension]]][source]

Build a dependency graph of the given extension types.