betty.project package

Subpackages

Submodules

Module contents

Provide the project API.

Projects are how people use Betty. A project is a workspace, starting out with the user’s configuration, and combining it with the resulting ancestry, allowing the user to perform tasks, such as generating a site from the entire project.

final class betty.project.Project[source]

Bases: Configurable[ProjectConfiguration], DependentFactory[Any], CoreComponent

Define a Betty project.

A project combines project configuration and the resulting ancestry.

__init__(app: App, configuration: ProjectConfiguration, *, ancestry: Ancestry | None = None)[source]
property ancestry: Ancestry

The project’s ancestry.

property app: App

The application this project is run within.

property assets: AssetRepository

The assets file system.

async bootstrap() None[source]

Bootstrap the component.

property event_dispatcher: EventDispatcher

The event dispatcher.

property event_types: PluginRepository[EventType]

The event types available to this project.

property extensions: ProjectExtensions

The enabled extensions.

property jinja2_environment: Environment

The Jinja2 environment.

property localizers: LocalizerRepository

The available localizers.

The path to the logo file.

property name: str

The project name.

If no project name was configured, this defaults to the hash of the configuration file path.

async new(cls: type[Any]) Any[source]

Create a new instance.

Raises:

FactoryError – raised when the class could not be instantiated.

classmethod new_temporary(app: App, *, ancestry: Ancestry | None = None) AsyncIterator[Self][source]

Creat a new, temporary, isolated project.

The project will not leave any traces on the system, except when it uses global Betty functionality such as caches.

property renderer: Renderer

The (file) content renderer.

property static_url_generator: StaticUrlGenerator

The static URL generator.

property url_generator: LocalizedUrlGenerator

The (localized) URL generator.

class betty.project.ProjectContext[source]

Bases: Context

A job context for a project.

__init__(project: Project)[source]
property project: Project

The Betty project this job context is run within.

class betty.project.ProjectEvent[source]

Bases: Event

An event that is dispatched within the context of a betty.project.Project.

__init__(job_context: ProjectContext)[source]
property job_context: ProjectContext

The site generation job context.

property project: Project

The betty.project.Project this event is dispatched within.

final class betty.project.ProjectExtensions[source]

Bases: object

Manage the extensions running within the betty.project.Project.

This is internal. It MAY be used anywhere in Betty’s source code, but MUST NOT be used by third-party code.

__init__(project_extensions: Sequence[Sequence[Extension]])[source]
flatten() Iterator[Extension][source]

Get a sequence of topologically sorted extensions.

final class betty.project.ProjectSchema[source]

Bases: Schema

A JSON Schema for a project.

classmethod def_url(project: Project, def_name: str) str[source]

Get the URL to a project’s JSON Schema definition.

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

Create a new schema for the given project.

classmethod url(project: Project) str[source]

Get the URL to a project’s JSON Schema.

classmethod www_path(project: Project) Path[source]

Get the path to the schema file in a site’s public WWW directory.