plugins

class litestar.plugins.CLIPlugin

Bases: object

Plugin protocol to extend the CLI Server Lifespan.

on_cli_init(cli: Group) None

Called when the CLI is initialized.

This can be used to extend or override existing commands.

Parameters:

cli – The root click.Group of the Litestar CLI

Examples

from litestar import Litestar
from litestar.plugins import CLIPlugin
from click import Group


class CLIPlugin(CLIPlugin):
    def on_cli_init(self, cli: Group) -> None:
        @cli.command()
        def is_debug_mode(app: Litestar):
            print(app.debug)


app = Litestar(plugins=[CLIPlugin()])
class litestar.plugins.DIPlugin

Bases: ABC

Extend dependency injection

abstract has_typed_init(type_: Any) bool

Return True if type_ has type information available for its __init__() method that cannot be extracted from this method’s type annotations (e.g. a Pydantic BaseModel subclass), and DIPlugin.get_typed_init() supports extraction of these annotations.

abstract get_typed_init(type_: Any) tuple[Signature, dict[str, Any]]

Return signature and type information about the type_s __init__() method.

class litestar.plugins.InitPlugin

Bases: InitPluginProtocol

Protocol used to define plugins that affect the application’s init process.

on_app_init(app_config: AppConfig) AppConfig

Receive the AppConfig instance after on_app_init hooks have been called.

Examples

from litestar import Litestar, get
from litestar.di import Provide
from litestar.plugins import InitPluginProtocol


def get_name() -> str:
    return "world"


@get("/my-path")
def my_route_handler(name: str) -> dict[str, str]:
    return {"hello": name}


class MyPlugin(InitPluginProtocol):
    def on_app_init(self, app_config: AppConfig) -> AppConfig:
        app_config.dependencies["name"] = Provide(get_name)
        app_config.route_handlers.append(my_route_handler)
        return app_config


app = Litestar(plugins=[MyPlugin()])
Parameters:

app_config – The AppConfig instance.

Returns:

The app config object.

class litestar.plugins.InitPluginProtocol

Bases: Protocol

Protocol used to define plugins that affect the application’s init process.

Deprecated since version 2.15: Use ‘InitPlugin’ instead

on_app_init(app_config: AppConfig) AppConfig

Receive the AppConfig instance after on_app_init hooks have been called.

Examples

from litestar import Litestar, get
from litestar.di import Provide
from litestar.plugins import InitPluginProtocol


def get_name() -> str:
    return "world"


@get("/my-path")
def my_route_handler(name: str) -> dict[str, str]:
    return {"hello": name}


class MyPlugin(InitPluginProtocol):
    def on_app_init(self, app_config: AppConfig) -> AppConfig:
        app_config.dependencies["name"] = Provide(get_name)
        app_config.route_handlers.append(my_route_handler)
        return app_config


app = Litestar(plugins=[MyPlugin()])
Parameters:

app_config – The AppConfig instance.

Returns:

The app config object.

__init__(*args, **kwargs)
class litestar.plugins.OpenAPISchemaPlugin

Bases: ABC

Plugin to extend the support of OpenAPI schema generation for non-library types.

static is_plugin_supported_type(value: Any) bool

Given a value of indeterminate type, determine if this value is supported by the plugin.

This is called by the default implementation of is_plugin_supported_field() for backwards compatibility. User’s should prefer to override that method instead.

Parameters:

value – An arbitrary value.

Returns:

A bool indicating whether the value is supported by the plugin.

abstract to_openapi_schema(field_definition: FieldDefinition, schema_creator: SchemaCreator) Schema

Given a type annotation, transform it into an OpenAPI schema class.

Parameters:
  • field_definition – An OpenAPI instance.

  • schema_creator – An instance of the openapi SchemaCreator.

Returns:

An OpenAPI instance.

is_plugin_supported_field(field_definition: FieldDefinition) bool

Given a FieldDefinition that represents an indeterminate type, determine if this value is supported by the plugin

Parameters:

field_definition – A parsed type.

Returns:

Whether the type is supported by the plugin.

static is_undefined_sentinel(value: Any) bool

Return True if value should be treated as an undefined field

static is_constrained_field(field_definition: FieldDefinition) bool

Return True if the field should be treated as constrained. If returning True, constraints should be defined in the field’s extras

class litestar.plugins.SerializationPlugin

Bases: ABC

Abstract base class for plugins that extend DTO functionality

abstract supports_type(field_definition: FieldDefinition) bool

Given a value of indeterminate type, determine if this value is supported by the plugin.

Parameters:

field_definition – A parsed type.

Returns:

Whether the type is supported by the plugin.

abstract create_dto_for_type(field_definition: FieldDefinition) type[AbstractDTO]

Given a parsed type, create a DTO class.

Parameters:

field_definition – A parsed type.

Returns:

A DTO class.