Skip to content

With pi-pilgrim

DrivineAssembly is a pi-pilgrim assembly holding the registry and the managers, for your own assembly to use. It needs pip install "drivine[pilgrim]":

from pipilgrim import AssemblyHolder, PilgrimAssembly
from drivine.drivine_assembly import DrivineAssembly # drivine.sync.drivine_assembly for the sync API
class AppAssembly(PilgrimAssembly):
def __init__(self):
self.drivine = AssemblyHolder.shared(DrivineAssembly)
super().__init__()
def route_repository(self) -> RouteRepository:
return self.shared(lambda: RouteRepository(self.drivine.persistence_manager()))
def report_repository(self) -> ReportRepository:
return self.shared(lambda: ReportRepository(self.drivine.persistence_manager("analytics")))
  • It registers the database the environment describes. To register yours in code, subclass it and override register_databases(registry).
  • Assembled injects a manager into a class something else makes: pm: PersistenceManager = Assembled(assembly=DrivineAssembly).
  • Call await assembly.drivine.close() when the application stops, in FastAPI’s lifespan, say.

Nothing else needs pi-pilgrim: import drivine doesn’t load it, and the managers are plain classes.