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, PilgrimAssemblyfrom 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). Assembledinjects 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.

