Skip to main content

A Python library for the Semcache API

Project description

Semcache Python SDK

A Python client library for Semcache

Installation

pip install semcache

Quick Start

from semcache import Semcache

# Initialize the client
client = Semcache(base_url="http://localhost:8080")

# Store a key-data pair
client.put("What is the capital of France?", "Paris")

# Retrieve data by semantic similarity
response = client.get("What's the capital city of France?")
print(response)  # "Paris"

The above snippet requires a running Semcache server. You can start one using Docker:

docker run -p 8080:8080 ghcr.io/sensoris/semcache:latest

Configuration

client = Semcache(
    base_url="http://localhost:8080",  # Semcache server URL
    timeout=30,                         # Request timeout in seconds
)

Usage Examples

Basic Usage

from semcache import Semcache

# Create a client instance
client = Semcache()

# Store some key-data pairs
client.put("What is Python?", "Python is a high-level programming language")
client.put("What is machine learning?", "Machine learning is a subset of AI that enables systems to learn from data")

# Retrieve data - exact match not required
response = client.get("Tell me about Python")
print(response)  # "Python is a high-level programming language"

Error Handling

from semcache import Semcache, SemcacheConnectionError, SemcacheTimeoutError

client = Semcache(base_url="http://localhost:8080", timeout=5)

try:
    client.put("test query", "test response")
except SemcacheConnectionError:
    print("Failed to connect to Semcache server")
except SemcacheTimeoutError:
    print("Request timed out")

API Reference

Semcache(base_url="http://localhost:8080", timeout=30)

Initialize a new Semcache client.

Parameters:

  • base_url (str): The base URL of the Semcache server
  • timeout (int): Request timeout in seconds

put(key: str, data: str) -> None

Store a key-data pair in the cache.

Parameters:

  • key (str): The key/query to cache
  • data (str): The data/response to cache

Raises:

  • SemcacheError: If the request fails

get(key: str) -> Optional[str]

Retrieve cached data for a key using semantic similarity.

Parameters:

  • key (str): The key/query to look up

Returns:

  • Optional[str]: The cached data if found, None otherwise

Raises:

  • SemcacheError: If the request fails

Exceptions

  • SemcacheError: Base exception for all Semcache errors
  • SemcacheConnectionError: Raised when unable to connect to the server
  • SemcacheTimeoutError: Raised when a request times out
  • SemcacheAPIError: Raised when the API returns an error response

Development

Setup Development Environment

# Create a virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install development dependencies
pip install -e ".[dev]"

Run Tests

pytest

Format Code

black src tests

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a pull request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

semcache-0.1.0.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

semcache-0.1.0-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file semcache-0.1.0.tar.gz.

File metadata

  • Download URL: semcache-0.1.0.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.2

File hashes

Hashes for semcache-0.1.0.tar.gz
Algorithm Hash digest
SHA256 15ce98e173892b41cb65f1ab0cb6e7c6ba0b60f2c047e565c0eb658f718c11df
MD5 4f233e3e069c967a0b0d87383fc744f3
BLAKE2b-256 7ba9eaa41d1c24c1837c9ed1c616d7b1d6c1317a1df977e5b7eda4cad2ca2881

See more details on using hashes here.

File details

Details for the file semcache-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: semcache-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.2

File hashes

Hashes for semcache-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d753f16705a1552728635c64c668f86941a7c80299dab30d515bdb6c70a2a674
MD5 f5a45d3d871f9086ccccce13040f1ee5
BLAKE2b-256 a25b100d8dacf1dcc85de645d0970681c6c252979a4990dc788bd2a200934f26

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page