graphrag/packages/graphrag-cache/graphrag_cache/cache.py
Derek Worthen 3201f28bea
Some checks are pending
Python Build and Type Check / python-ci (ubuntu-latest, 3.11) (push) Waiting to run
Python Build and Type Check / python-ci (ubuntu-latest, 3.13) (push) Waiting to run
Python Build and Type Check / python-ci (windows-latest, 3.11) (push) Waiting to run
Python Build and Type Check / python-ci (windows-latest, 3.13) (push) Waiting to run
Python Integration Tests / python-ci (ubuntu-latest, 3.13) (push) Waiting to run
Python Integration Tests / python-ci (windows-latest, 3.13) (push) Waiting to run
Python Notebook Tests / python-ci (ubuntu-latest, 3.13) (push) Waiting to run
Python Notebook Tests / python-ci (windows-latest, 3.13) (push) Waiting to run
Python Smoke Tests / python-ci (ubuntu-latest, 3.13) (push) Waiting to run
Python Smoke Tests / python-ci (windows-latest, 3.13) (push) Waiting to run
Python Unit Tests / python-ci (ubuntu-latest, 3.13) (push) Waiting to run
Python Unit Tests / python-ci (windows-latest, 3.13) (push) Waiting to run
Add GraphRAG Cache package. (#2153)
* Add GraphRAG Cache package.
2025-12-16 06:37:28 -08:00

72 lines
1.7 KiB
Python

# Copyright (c) 2024 Microsoft Corporation.
# Licensed under the MIT License
"""Abstract base class for cache."""
from __future__ import annotations
from abc import ABC, abstractmethod
from typing import Any
class Cache(ABC):
"""Provide a cache interface for the pipeline."""
@abstractmethod
def __init__(self, **kwargs: Any) -> None:
"""Create a cache instance."""
@abstractmethod
async def get(self, key: str) -> Any:
"""Get the value for the given key.
Args:
- key - The key to get the value for.
- as_bytes - Whether or not to return the value as bytes.
Returns
-------
- output - The value for the given key.
"""
@abstractmethod
async def set(self, key: str, value: Any, debug_data: dict | None = None) -> None:
"""Set the value for the given key.
Args:
- key - The key to set the value for.
- value - The value to set.
"""
@abstractmethod
async def has(self, key: str) -> bool:
"""Return True if the given key exists in the cache.
Args:
- key - The key to check for.
Returns
-------
- output - True if the key exists in the cache, False otherwise.
"""
@abstractmethod
async def delete(self, key: str) -> None:
"""Delete the given key from the cache.
Args:
- key - The key to delete.
"""
@abstractmethod
async def clear(self) -> None:
"""Clear the cache."""
@abstractmethod
def child(self, name: str) -> Cache:
"""Create a child cache with the given name.
Args:
- name - The name to create the sub cache with.
"""