betty.app.extension package¶
Submodules¶
Module contents¶
Provide Betty’s extension API.
- class betty.app.extension.ConfigurableExtension[source]¶
Bases:
Extension
,Generic
[ConfigurationT
],Configurable
[ConfigurationT
]A configurable extension.
- Parameters:
args (
typing.Any
)configuration (
typing.Optional
[typing.TypeVar
(ConfigurationT
, bound=betty.config.Configuration
)])kwargs (
typing.Any
)
- __init__(*args: Any, configuration: betty.config.ConfigurationT | None = None, **kwargs: Any)[source]¶
- Parameters:
args (
typing.Any
)configuration (
typing.Optional
[typing.TypeVar
(ConfigurationT
, bound=betty.config.Configuration
)])kwargs (
typing.Any
)
- classmethod default_configuration() betty.config.ConfigurationT [source]¶
Get this extension’s default configuration.
- Return type:
typing.TypeVar
(ConfigurationT
, bound=betty.config.Configuration
)
- exception betty.app.extension.CyclicDependencyError[source]¶
Bases:
ExtensionError
,RuntimeError
Raised when extensions define a cyclic dependency, e.g. two extensions depend on each other.
- Parameters:
extension_types (
typing.Iterable
[type
[betty.app.extension.Extension
]])
- __init__(extension_types: Iterable[type[betty.app.extension.Extension]])[source]¶
- Parameters:
extension_types (
typing.Iterable
[type
[betty.app.extension.Extension
]])
- class betty.app.extension.Dependencies[source]¶
Bases:
AllRequirements
Check a dependent’s dependency requirements.
- Parameters:
dependent_type (
type
[betty.app.extension.Extension
])
- __init__(dependent_type: type[betty.app.extension.Extension])[source]¶
- Parameters:
dependent_type (
type
[betty.app.extension.Extension
])
- classmethod for_dependent(dependent_type: type[betty.app.extension.Extension]) Self [source]¶
Create a new requirement for the given dependent.
- Parameters:
dependent_type (
type
[betty.app.extension.Extension
])- Return type:
typing.Self
- summary() betty.locale.Str [source]¶
Get the requirement’s human-readable summary.
- Return type:
- class betty.app.extension.Dependents[source]¶
Bases:
Requirement
Check a dependency’s dependent requirements.
- Parameters:
dependency (
betty.app.extension.Extension
)dependents (
typing.Sequence
[betty.app.extension.Extension
])
- __init__(dependency: betty.app.extension.Extension, dependents: Sequence[betty.app.extension.Extension])[source]¶
- Parameters:
dependency (
betty.app.extension.Extension
)dependents (
typing.Sequence
[betty.app.extension.Extension
])
- classmethod for_dependency(dependency: betty.app.extension.Extension) Self [source]¶
Create a new requirement for the given dependency.
- Parameters:
dependency (
betty.app.extension.Extension
)- Return type:
typing.Self
- summary() betty.locale.Str [source]¶
Get the requirement’s human-readable summary.
- Return type:
- class betty.app.extension.Extension[source]¶
Bases:
object
Integrate optional functionality with the Betty app.
- Parameters:
app (
betty.app.App
)args (
typing.Any
)kwargs (
typing.Any
)
- __init__(app: betty.app.App, *args: Any, **kwargs: Any)[source]¶
- Parameters:
app (
betty.app.App
)args (
typing.Any
)kwargs (
typing.Any
)
- classmethod assets_directory_path() pathlib._local.Path | None [source]¶
Return the path on disk where the extension’s assets are located.
This may be anywhere in your Python package.
- Return type:
pathlib._local.Path
|None
- classmethod comes_after() set[type[betty.app.extension.Extension]] [source]¶
The extensions that this one comes after.
The other extensions may or may not be enabled.
- Return type:
- classmethod comes_before() set[type[betty.app.extension.Extension]] [source]¶
The extensions that this one comes before.
The other extensions may or may not be enabled.
- Return type:
- classmethod depends_on() set[type[betty.app.extension.Extension]] [source]¶
The extensions this one depends on, and comes after.
- Return type:
- disable_requirement() betty.requirement.Requirement [source]¶
Define the requirement for this extension to be disabled.
This defaults to the extension’s dependents.
- Return type:
- classmethod enable_requirement() betty.requirement.Requirement [source]¶
Define the requirement for this extension to be enabled.
This defaults to the extension’s dependencies.
- Return type:
- class betty.app.extension.ExtensionDispatcher[source]¶
Bases:
Dispatcher
Dispatch events to extensions.
- Parameters:
extensions (
betty.app.extension.Extensions
)
- __init__(extensions: betty.app.extension.Extensions)[source]¶
- Parameters:
extensions (
betty.app.extension.Extensions
)
- dispatch(target_type: type[Any]) Callable[[...], Awaitable[Sequence[Any]]] [source]¶
Dispatch a single target.
- Parameters:
target_type (
type
[typing.Any
])- Return type:
typing.Callable
[...
,typing.Awaitable
[typing.Sequence
[typing.Any
]]]
- exception betty.app.extension.ExtensionError[source]¶
Bases:
BaseException
A generic extension API error.
- exception betty.app.extension.ExtensionTypeError[source]¶
Bases:
ExtensionError
,ValueError
A generic error regarding an extension type.
- exception betty.app.extension.ExtensionTypeImportError[source]¶
Bases:
ExtensionTypeError
,ImportError
Raised when an alleged extension type cannot be imported.
- Parameters:
extension_type_name (
str
)
- exception betty.app.extension.ExtensionTypeInvalidError[source]¶
Bases:
ExtensionTypeError
,ImportError
Raised for types that are not valid extension types.
- Parameters:
extension_type (
type
)
- class betty.app.extension.Extensions[source]¶
Bases:
object
Manage available extensions.
- flatten() Iterator[betty.app.extension.Extension] [source]¶
Get a sequence of topologically sorted extensions.
- Return type:
- class betty.app.extension.ListExtensions[source]¶
Bases:
Extensions
Manage available extensions, backed by a list.
- Parameters:
extensions (
list
[list
[betty.app.extension.Extension
]])
- __init__(extensions: list[list[betty.app.extension.Extension]])[source]¶
- Parameters:
extensions (
list
[list
[betty.app.extension.Extension
]])
- flatten() Iterator[betty.app.extension.Extension] [source]¶
Get a sequence of topologically sorted extensions.
- Return type:
- class betty.app.extension.Theme[source]¶
Bases:
UserFacingExtension
An extension that is a front-end theme.
- Parameters:
app (
betty.app.App
)args (
typing.Any
)kwargs (
typing.Any
)
- class betty.app.extension.UserFacingExtension[source]¶
Bases:
Extension
A sentinel to mark an extension as being visible to users (e.g. not internal).
- Parameters:
app (
betty.app.App
)args (
typing.Any
)kwargs (
typing.Any
)
- classmethod description() betty.locale.Str [source]¶
Get the human-readable extension description.
- Return type:
- classmethod label() betty.locale.Str [source]¶
Get the human-readable extension label.
- Return type:
- betty.app.extension.build_extension_type_graph(extension_types: Iterable[type[betty.app.extension.Extension]]) dict[type[betty.app.extension.Extension], set[type[betty.app.extension.Extension]]] [source]¶
Build a dependency graph of the given extension types.
- Parameters:
extension_types (
typing.Iterable
[type
[betty.app.extension.Extension
]])- Return type:
dict
[type
[betty.app.extension.Extension
],set
[type
[betty.app.extension.Extension
]]]
- betty.app.extension.discover_extension_types() set[type[betty.app.extension.Extension]] [source]¶
Gather the available extension types.
- Return type:
- betty.app.extension.format_extension_type(extension_type: type[betty.app.extension.Extension]) betty.locale.Str [source]¶
Format an extension type to a human-readable label.
- Parameters:
extension_type (
type
[betty.app.extension.Extension
])- Return type:
- betty.app.extension.get_extension_type(extension_type_definition: str | type[betty.app.extension.Extension] | betty.app.extension.Extension) type[betty.app.extension.Extension] [source]¶
Get the extension type for an extension, extension type, or extension type name.
- Parameters:
extension_type_definition (
str
|type
[betty.app.extension.Extension
] |betty.app.extension.Extension
)- Return type:
- betty.app.extension.get_extension_type_by_extension(extension: betty.app.extension.Extension) type[betty.app.extension.Extension] [source]¶
Get the extension type for an extension.
- Parameters:
extension (
betty.app.extension.Extension
)- Return type:
- betty.app.extension.get_extension_type_by_name(extension_type_name: str) type[betty.app.extension.Extension] [source]¶
Get the extension type for an extension type name.
- Parameters:
extension_type_name (
str
)- Return type: