Skip to content

Extensions

Optional features ship as separate packages that install into the patera namespace. Each one is a service: you subclass it, configure it through a config field named after your subclass, and register it in App.app_extensions (or inject it).

@app(__name__, configs=Config)
class App(Patera[Config]):
    app_extensions = [Databases, PublicCache, Jobs]

Official packages

Package Import Entry point Configuration Install
SQL databases patera.database.sql SqlDatabase, SqlDatabaseManager SqlDatabaseConfig patera[database]
Migrations patera.migrate Migrate MigrateConfig patera[migrate]
Authentication patera.auth Authentication AuthConfig patera[auth]
Caching patera.caching Caching CachingConfig patera[caching]
Task manager patera.taskmanager TaskManager TaskManagerConfig patera[taskmanager]
E-mail patera.email EmailClient EmailConfig patera[email]
External APIs patera.apiinterface ApiInterface class/method decorators patera[apiinterface]
JoltUI patera.joltui PateraJoltui JoltuiConfig patera[joltui]
Admin dashboard patera.admin AdminInterface AdminConfig patera[admin]
AI interface patera.aiinterface AiService AiServiceConfig patera[aiinterface]
Desktop patera.desktop Desktop DesktopConfig patera[desktop]
Desktop UI patera.desktop.ui DesktopUI DesktopUIConfig patera[desktop-ui]

Experimental: not yet ready for production use; the API may change in any release.

patera[all] installs the server extensions: admin, API interface, authentication, caching, SQL, migrations, e-mail, task manager and JoltUI. It does not install the experimental packages or optional backends such as caching-redis and caching-sqlite.

Each extension package requires Python 3.13 or newer and a compatible patera core (>=0.121).

Writing your own

See Custom extensions.