Skip to main content

A framework for caching data locally. It features explicit caching with priority support for type hints.

Project description

typed-cache

typed-cache is a lightweight framework designed for caching data locally, supporting explicit caching with a focus on Python's type hints. It simplifies the process of persisting data to disk by allowing easy integration into custom data classes, with automatic loading and manual saving of data.

Features

  • Type Hinting: Enhances code clarity and safety through the use of Python's type hints.
  • Automatic Caching: Automatically loads cached data on initialization if the file exists.
  • Manual Data Saving: Allows for explicit control over when data is saved via the save() method.
  • File Integrity Checks: Ensures that cache files use the correct .pickle extension and manages errors properly.
  • Python 3.6+ Compatibility: Works with Python 3.6 and above, making it accessible for most environments.

Requirements

  • Python 3.6+
  • Standard libraries: pickle, pathlib

Installation

To install typed-cache, you can use either pip or poetry:

Using pip:

pip install typed-cache

Using poetry:

poetry add typed-cache

Simply choose your preferred package manager to install the library.

Usage

Here's a simple script demonstrating how to use typed-cache to persist and retrieve data in a custom class:

from dataclasses import dataclass
from pathlib import Path

from typed_cache import TypedCache


@dataclass
class Settings(TypedCache):
    volume: int = 50
    brightness: float = 0.8
    username: str = "user"


# Specify cache file path
cache_path = Path.home() / 'settings_cache.pickle'

# Initialize settings, modify, and save
settings = Settings(path=cache_path)
settings.volume = 70
settings.save()  # Saves the modified settings to 'settings_cache.pickle'

# On subsequent runs, the previous settings will be automatically loaded
loaded_settings = Settings(path=cache_path)
print(f"Loaded volume: {loaded_settings.volume}")  # Output: Loaded volume: 70

Key Functions:

  1. Initialization: When you instantiate your class with a cache file path, typed-cache will automatically attempt to load data from that file.
  2. Saving: Call save() on your object to persist the current state to the cache file.
  3. Loading: Upon reinitialization with the same cache path, previously saved data will be loaded automatically.

Exception Handling

  • ValueError: Raised if the cache file does not have a .pickle extension.
  • FileNotFoundError: Raised if trying to load a cache file that does not exist.

Contributing

Contributions are welcome! Feel free to fork the repository, make improvements, and submit a pull request.

License

This project is licensed under the MIT License.

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

typed_cache-0.2.4.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

typed_cache-0.2.4-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file typed_cache-0.2.4.tar.gz.

File metadata

  • Download URL: typed_cache-0.2.4.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.10.11 Windows/10

File hashes

Hashes for typed_cache-0.2.4.tar.gz
Algorithm Hash digest
SHA256 3ed522fe57d1c881d388584b9619b82197bb25a5610d6cd098c0d9de0f01a581
MD5 a3dbc37b7c64f6faaa580dee1a41c9d0
BLAKE2b-256 9d24de1e3db00d963bcb817629f087b19ef927992d0e587c379140da2b843f93

See more details on using hashes here.

File details

Details for the file typed_cache-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: typed_cache-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.10.11 Windows/10

File hashes

Hashes for typed_cache-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 2a37c9e58b6e3a647527c0d8757e1bf57e6e7e9096e6293f89600119a85ef6de
MD5 f7ff0897cdde69e78b81609506ded8f8
BLAKE2b-256 7a92b9cfdc979def56f56bbb437ecf91b1589cc657a26112a70c1dc16f41bee7

See more details on using hashes here.

Supported by

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