Files
basicmachines-co-basic-memory/src/basic_memory/config.py
T
2025-01-16 14:27:22 -06:00

48 lines
1.2 KiB
Python

"""Configuration management for basic-memory."""
from pathlib import Path
from pydantic import Field, field_validator
from pydantic_settings import BaseSettings, SettingsConfigDict
DATABASE_NAME = "memory.db"
DATA_DIR_NAME = ".basic-memory"
class ProjectConfig(BaseSettings):
"""Configuration for a specific basic-memory project."""
# Default to ~/basic-memory but allow override with env var: BASIC_MEMORY_HOME
home: Path = Field(
default_factory=lambda: Path.home() / "basic-memory",
description="Base path for basic-memory files",
)
# Name of the project
project: str = Field(default="default", description="Project name")
model_config = SettingsConfigDict(
env_prefix="BASIC_MEMORY_",
extra="ignore",
env_file=".env",
env_file_encoding="utf-8",
)
@property
def database_path(self) -> Path:
"""Get SQLite database path."""
return self.home / DATA_DIR_NAME / DATABASE_NAME
@field_validator("home")
@classmethod
def ensure_path_exists(cls, v: Path) -> Path:
"""Ensure project path exists."""
if not v.exists():
v.mkdir(parents=True)
return v
# Load project config
config = ProjectConfig()