v0.0.7
What's Changed
Added
EngineConfig— Frozen dataclass for engine-managed mounts. Acceptsurl(simple) orengine_factory(advanced, e.g. custom pool/connect_args viacreate_async_engine_factory). Supportsschema,create_tables, and custom model overrides. Engine is created at mount time and disposed on unmount/close.SessionConfig— Frozen dataclass for app-managed mounts. Wraps an existing session factory; Grover does not dispose the engine. Dialect inferred from the factory's bind or set explicitly.create_async_engine_factory()— Helper that capturescreate_async_engineargs and returns a zero-arg callable for deferred engine creation.- Engine lifecycle on
Mount—Mount.enginefield tracks Grover-owned engines.unmount()andclose()dispose them automatically.
Changed
add_mount()API redesigned —engine=,session_factory=,dialect=,file_model=,file_version_model=,file_chunk_model=,db_schema=parameters replaced byengine_config=andsession_config=.filesystemandmountare now keyword-only.pathremains positional.DatabaseFileSystemconstructor simplified — Config parameters (dialect, schema, model classes) removed. Only provider kwargs remain. New_configure()method applies settings fromEngineConfig/SessionConfigat mount time.LocalFileSystemconstructor simplified — Model and schema parameters removed. Accepts onlyworkspace_dir,data_dir, and provider kwargs.UserScopedFileSystemconstructor simplified — Config parameters removed. Accepts onlyshare_modeland provider kwargs.- deepagents integration —
from_database()andfrom_database_async()now acceptEngineConfiginstead of raw engine/session_factory.
Fixed
- Sync
Groverin Jupyter — Pre-createdAsyncEnginebound to the wrong event loop no longer causes failures.EngineConfigdefers engine creation to mount time, ensuring it runs on the correct loop.
Full Changelog: v0.0.6...v0.0.7