Skip to main content

No project description provided

Project description

disklru

pip install disklru

Creates a disk based lru (least recently used) cache, backed by sqlite, that you can use in your apps.

Zero dependency package. Only relies on the python standard lib. Cross platform tests.

Linting

MacOS_Tests Ubuntu_Tests Win_Tests

Usage

from disklru import DiskLRUCache

LRU_CACHE_FILE = "cache.db"
MAX_ENTRIES = 4
cache = DiskLRUCache(LRU_CACHE_FILE, MAX_ENTRIES)
cache.put("key", "value")
assert cache.get("key1") == "val"
cache.clear()

API

class DiskLRUCache:
    """Disk-based LRU cache using SQLite."""

    def get(self, key: str) -> str | None:
        """Returns the value associated with the given key, or None if the key is not in the cache."""

    def get_bytes(self, key: str) -> bytes | None:
        """Returns the bytes values associated with the given key"""

    def get_json(self, key: str) -> Any:
        """Returns the value associated with the given key, or None if the key is not in the cache."""

    def put(self, key: str, value: str) -> None:
        """Sets the value associated with the given key."""

    def put_bytes(self, key: str, value: bytes) ->: None:
        """Sets the byte value associated with the given key."""

    def put_json(self, key: str, val: Any) -> None:
        """Sets the value associated with the given key."""

    def delete(self, key) -> None:
        """Deletes the given key from the cache."""

    def purge(self, timestamp) -> None:
        """Purges all elements less than the timestamp."""

    def clear(self) -> None:
        """Clears the cache."""

    def __del__(self) -> None:
        """Destructor."""
        self.close()

    def close(self) -> None:
        """Closes the connection to the database."""

Development

First install development dependencies:

pip install -e ".[dev]"

Windows

This environment requires you to use git-bash.

Linting

Run ./lint.sh to find linting errors using pylint, flake8, mypy and other tools.

Releases

  • 2.0.2 - contains operator is now defined so that you can do "key" in disklur
  • 2.0.1 - max_size is now max_entries
  • 2.0.0 - Overhaul - now allows multithreaded access, connection pool, get/put bytes. purge() now takes in a timestamp aware value for purging.

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

disklru-2.0.2.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

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

disklru-2.0.2-py2.py3-none-any.whl (5.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file disklru-2.0.2.tar.gz.

File metadata

  • Download URL: disklru-2.0.2.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.5

File hashes

Hashes for disklru-2.0.2.tar.gz
Algorithm Hash digest
SHA256 bcf076a268c8db61a497d28571adb1c793af82b30c67d8a5d2bf0e89786908ae
MD5 b0d4e6159857bb1fc0fba3884dd5c281
BLAKE2b-256 a5072744aa1660c2d5edf9f39b6009d2fd9d04515915f30aca6dd3486b1e66df

See more details on using hashes here.

File details

Details for the file disklru-2.0.2-py2.py3-none-any.whl.

File metadata

  • Download URL: disklru-2.0.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.5

File hashes

Hashes for disklru-2.0.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e35ce61358386848b80cb2210e5ae23b85885c1de027b58c74068d83a34d8ea4
MD5 37d77c2362915de7e7ef14b5d33fdd6d
BLAKE2b-256 0c1ce66f3abfab3178806a469f81aa2386586164b1bcba8fcac966db8e98669c

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