refactor: move bot_bottle_root/host_db_path to paths; kill the monkeypatch (#352)
Create bot_bottle/paths.py as the canonical home for the app-root path helpers (bot_bottle_root, host_db_path, HOST_DB_FILENAME) — foundational, not supervise- or db-specific. `bot_bottle_root()` now honours a BOT_BOTTLE_ROOT env override. Repoint every consumer (supervise, supervise_types, db_store, queue_store, audit_store, store_manager, bottle_state, cli/supervise, docker/cleanup, orchestrator/registry) at paths; remove the definitions (and supervise's duplicate host_db_path) and the now-dead `import sys`. Add paths.py to the sidecar bundle (Dockerfile.sidecars) for the flat-import copies. Tests: replace ~12 files' monkeypatching of supervise.bot_bottle_root (and the flat/pkg/supervise_types triple-patch dance) with a single `use_bottle_root()` helper that sets BOT_BOTTLE_ROOT — every module and flat/package copy reads the same env var, so one override covers them all. Net -97 lines. Behaviour-preserving: full unit suite unchanged (only the pre-existing /bin/sleep sidecar-init errors remain). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WBMWTEtQdJ4W5UrWuLHCck
This commit is contained in:
+1
-25
@@ -11,30 +11,6 @@ except ImportError:
|
||||
from migrations import TableMigrations # type: ignore[import-not-found] # pylint: disable=import-error,no-name-in-module
|
||||
|
||||
|
||||
# The single shared host state DB. All bot-bottle SQLite stores (supervise
|
||||
# queue, audit, the orchestrator registry) co-tenant this one file — the
|
||||
# TableMigrations schema_key namespaces each store's tables.
|
||||
HOST_DB_FILENAME = "bot-bottle.db"
|
||||
|
||||
|
||||
def host_db_path() -> Path:
|
||||
"""Path to the shared host state DB, `<bot_bottle_root>/db/bot-bottle.db`.
|
||||
|
||||
Kept in its own `db/` subdirectory (not directly under the root) so a
|
||||
backend that can only bind-mount *directories* can share this one file
|
||||
with a sidecar without exposing the root's other contents (git-gate
|
||||
keys, per-bottle state, ...).
|
||||
|
||||
Resolves `bot_bottle_root` from `supervise_types` at call time (a lazy
|
||||
import — avoids a load-time cycle, and lets a monkey-patch of
|
||||
`supervise_types.bot_bottle_root` propagate here)."""
|
||||
try:
|
||||
from . import supervise_types as _st
|
||||
except ImportError: # flat imports inside the sidecar bundle
|
||||
import supervise_types as _st # type: ignore[import-not-found,no-redef] # pylint: disable=import-error,no-name-in-module
|
||||
return _st.bot_bottle_root() / "db" / HOST_DB_FILENAME
|
||||
|
||||
|
||||
class DbVersionError(Exception):
|
||||
"""Raised when the on-disk schema is behind the current migration list."""
|
||||
|
||||
@@ -80,4 +56,4 @@ class DbStore:
|
||||
pass
|
||||
|
||||
|
||||
__all__ = ["DbStore", "DbVersionError", "HOST_DB_FILENAME", "host_db_path"]
|
||||
__all__ = ["DbStore", "DbVersionError"]
|
||||
|
||||
Reference in New Issue
Block a user