Skip to main content
Glama
base.py2.53 kB
"""Base import service for Basic Memory.""" import logging from abc import abstractmethod from pathlib import Path from typing import Any, Optional, TypeVar from basic_memory.markdown.markdown_processor import MarkdownProcessor from basic_memory.markdown.schemas import EntityMarkdown from basic_memory.schemas.importer import ImportResult logger = logging.getLogger(__name__) T = TypeVar("T", bound=ImportResult) class Importer[T: ImportResult]: """Base class for all import services.""" def __init__(self, base_path: Path, markdown_processor: MarkdownProcessor): """Initialize the import service. Args: markdown_processor: MarkdownProcessor instance for writing markdown files. """ self.base_path = base_path.resolve() # Get absolute path self.markdown_processor = markdown_processor @abstractmethod async def import_data(self, source_data, destination_folder: str, **kwargs: Any) -> T: """Import data from source file to destination folder. Args: source_path: Path to the source file. destination_folder: Destination folder within the project. **kwargs: Additional keyword arguments for specific import types. Returns: ImportResult containing statistics and status of the import. """ pass # pragma: no cover async def write_entity(self, entity: EntityMarkdown, file_path: Path) -> None: """Write entity to file using markdown processor. Args: entity: EntityMarkdown instance to write. file_path: Path to write the entity to. """ await self.markdown_processor.write_file(file_path, entity) def ensure_folder_exists(self, folder: str) -> Path: """Ensure folder exists, create if it doesn't. Args: base_path: Base path of the project. folder: Folder name or path within the project. Returns: Path to the folder. """ folder_path = self.base_path / folder folder_path.mkdir(parents=True, exist_ok=True) return folder_path @abstractmethod def handle_error( self, message: str, error: Optional[Exception] = None ) -> T: # pragma: no cover """Handle errors during import. Args: message: Error message. error: Optional exception that caused the error. Returns: ImportResult with error information. """ pass

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/basicmachines-co/basic-memory'

If you have feedback or need assistance with the MCP directory API, please join our Discord server