"""Definition of JsonRepositoryInterface abstract base class.""" from collections.abc import Iterator from abc import ABC, abstractmethod from typing import Any class JsonRepositoryInterface(ABC): """Interface that defines JSON document CRUD methods.""" @abstractmethod def get(self, key: str) -> dict[str, Any] | None: """Get a JSON object by key.""" ... @abstractmethod def set(self, key: str, data: dict[str, Any]) -> None: """Set a JSON object by key.""" ... @abstractmethod def delete(self, key: str) -> None: """Delete a JSON object by key.""" ... @abstractmethod def list_keys(self, pattern: str) -> list[str]: """List keys matching a glob pattern.""" ... def scan_keys( self, pattern: str, *, count: int | None = None, ) -> Iterator[str]: """Yield keys matching a glob pattern incrementally.""" del count yield from self.list_keys(pattern)