cachebox


Namecachebox JSON
Version 5.0.4 PyPI version JSON
download
home_pagehttps://github.com/awolverp/cachebox
SummaryThe fastest memoizing and caching Python library written in Rust
upload_time2025-10-20 11:45:48
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT
keywords caching cached cachebox cache in-memory-caching memoizing
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">

# Cachebox

*The fastest caching Python library written in Rust*

[**Releases**](https://github.com/awolverp/cachebox/releases) | 
[**Benchmarks**](https://github.com/awolverp/cachebox-benchmark) | 
[**Issues**](https://github.com/awolverp/cachebox/issues/new)

[![License](https://img.shields.io/github/license/awolverp/cachebox.svg?style=flat-square)](https://github.com/awolverp/cachebox/blob/main/LICENSE)
[![Release](https://img.shields.io/github/v/release/awolverp/cachebox.svg?style=flat-square)](https://github.com/awolverp/cachebox/releases)
[![Python Versions](https://img.shields.io/pypi/pyversions/cachebox.svg?style=flat-square)](https://pypi.org/project/cachebox/)
[![Downloads](https://img.shields.io/pypi/dm/cachebox?style=flat-square&color=%23314bb5)](https://pepy.tech/projects/cachebox)

</div>

-------

### What does it do?
You can easily and powerfully perform caching operations in Python as fast as possible.
This can make your application very faster and it's a good choice in big applications.
**Ideal for optimizing large-scale applications** with efficient, low-overhead caching.

**Key Features:**
- ๐Ÿš€ Extremely fast (10-50x faster than other caching libraries -- [*benchmarks*](https://github.com/awolverp/cachebox-benchmark))
- ๐Ÿ“Š Minimal memory footprint (50% of standard dictionary memory usage)
- ๐Ÿ”ฅ Full-featured and user-friendly
- ๐Ÿงถ Completely thread-safe
- ๐Ÿ”ง Tested and correct
- **\[R\]** written in Rust for maximum performance
- ๐Ÿค Compatible with Python 3.9+ (PyPy and CPython)
- ๐Ÿ“ฆ Supports 7 advanced caching algorithms

### Page Contents
- โ“ [**When i need caching and cachebox**](#when-i-need-caching-and-cachebox)
- ๐ŸŒŸ [**Why `cachebox`**](#why-cachebox)
- ๐Ÿ”ง [**Installation**](#installation)
- ๐Ÿ’ก [**Preview**](#examples)
- ๐ŸŽ“ [**Getting started**](#getting-started)
- โœ๏ธ [**Incompatible changes**](#%EF%B8%8F-incompatible-changes)
- ๐Ÿ“Œ [**Tips & Notes**](#tips-and-notes)

### When i need caching and cachebox
- ๐Ÿ“ˆ **Frequently Data Access** \
  If you need to access the same data multiple times, caching can help reduce the number of database queries or API calls, improving performance.

- ๐Ÿ’Ž **Expensive Operations** \
  If you have operations that are computationally expensive, caching can help reduce the number of times these operations need to be performed.

- ๐Ÿš— **High Traffic Scenarios** \
  If your application has high user traffic, caching can help reduce the load on your server by reducing the number of requests that need to be processed.

- #๏ธโƒฃ **Web Page Rendring** \
  If you are rendering web pages, caching can help reduce the time it takes to generate the page by caching the results of expensive operations. Caching HTML pages can speed up the delivery of static content.

- ๐Ÿšง **Rate Limiting** \
  If you have a rate limiting system in place, caching can help reduce the number of requests that need to be processed by the rate limiter. Also, caching can help you to manage rate limits imposed by third-party APIs by reducing the number of requests sent.

- ๐Ÿค– **Machine Learning Models** \
  If your application frequently makes predictions using the same input data, caching the results can save computation time.

### Why cachebox?
- **โšก Rust** \
It uses *Rust* language to has high-performance.

- **๐Ÿงฎ SwissTable** \
It uses Google's high-performance SwissTable hash map. thanks to [hashbrown](https://github.com/rust-lang/hashbrown).

- **โœจ Low memory usage** \
It has very low memory usage.

- **โญ Zero Dependency** \
As we said, `cachebox` written in Rust so you don't have to install any other dependecies.

- **๐Ÿงถ Thread safe** \
It's completely thread-safe and uses locks to prevent problems.

- **๐Ÿ‘Œ Easy To Use** \
You only need to import it and choice your implementation to use and behave with it like a dictionary.

- **๐Ÿšซ Avoids Cache Stampede** \
It avoids [cache stampede](https://en.wikipedia.org/wiki/Cache_stampede) by using a distributed lock system.


## Installation
cachebox is installable by `pip`:
```bash
pip3 install -U cachebox
```

> [!WARNING]\
> The new version v5 has some incompatible with v4, for more info please see [Incompatible changes](#incompatible-changes)

## Examples
The simplest example of **cachebox** could look like this:
```python
import cachebox

# Like functools.lru_cache, If maxsize is set to 0, the cache can grow without bound and limit.
@cachebox.cached(cachebox.FIFOCache(maxsize=128))
def factorial(number: int) -> int:
    fact = 1
    for num in range(2, number + 1):
        fact *= num
    return fact

assert factorial(5) == 125
assert len(factorial.cache) == 1

# Async are also supported
@cachebox.cached(cachebox.LRUCache(maxsize=128))
async def make_request(method: str, url: str) -> dict:
    response = await client.request(method, url)
    return response.json()
```

Also, unlike functools.lru_cache and other caching libraries, cachebox can copy `dict`, `list`, and `set` objects.
```python
@cachebox.cached(cachebox.LRUCache(maxsize=128))
def make_dict(name: str, age: int) -> dict:
   return {"name": name, "age": age}
>
d = make_dict("cachebox", 10)
assert d == {"name": "cachebox", "age": 10}
d["new-key"] = "new-value"

d2 = make_dict("cachebox", 10)
# `d2` will be `{"name": "cachebox", "age": 10, "new-key": "new-value"}` if you use other libraries
assert d2 == {"name": "cachebox", "age": 10}
```

You can use cache alghoritms without `cached` decorator -- just import what cache alghoritms you want and use it like a dictionary.
```python
from cachebox import FIFOCache

cache = FIFOCache(maxsize=128)
cache["key"] = "value"
assert cache["key"] == "value"

# You can also use `cache.get(key, default)`
assert cache.get("key") == "value"
```

## Getting started
There are 3 useful functions:
- [**cached**](#cached--decorator): a decorator that helps you to cache your functions and calculations with a lot of options.
- [**cachedmethod**](#cachedmethod--decorator): this is excatly works like `cached()`, but ignores `self` parameters in hashing and key making.
- [**is_cached**](#is_cached--function): check if a function/method cached by cachebox or not

And 9 classes:
- [**BaseCacheImpl**](#basecacheimpl-๏ธ-class): base-class for all classes.
- [**Cache**](#cache-๏ธ-class): A simple cache that has no algorithm; this is only a hashmap.
- [**FIFOCache**](#fifocache-๏ธ-class): the FIFO cache will remove the element that has been in the cache the longest.
- [**RRCache**](#rrcache-๏ธ-class): the RR cache will choice randomly element to remove it to make space when necessary.
- [**LRUCache**](#lrucache-๏ธ-class): the LRU cache will remove the element in the cache that has not been accessed in the longest time.
- [**LFUCache**](#lfucache-๏ธ-class): the LFU cache will remove the element in the cache that has been accessed the least, regardless of time.
- [**TTLCache**](#ttlcache-๏ธ-class): the TTL cache will automatically remove the element in the cache that has expired.
- [**VTTLCache**](#vttlcache-๏ธ-class): the TTL cache will automatically remove the element in the cache that has expired when need.
- [**Frozen**](#frozen-๏ธ-class): you can use this class for freezing your caches.

You only need to import the class which you want, and behave with it like a dictionary (except for [VTTLCache](#vttlcache-๏ธ-class), this have some differences)

There are some examples for you with different methods for introducing those.
**All the methods you will see in the examples are common across all classes (except for a few of them).**

* * *

### `cached` (๐ŸŽ€ decorator)
Decorator to wrap a function with a memoizing callable that saves results in a cache.

**Parameters:**
- `cache`: Specifies a cache that handles and stores the results. if `None` or `dict`, `FIFOCache` will be used.

- `key_maker`: Specifies a function that will be called with the same positional and keyword
               arguments as the wrapped function itself, and which has to return a suitable
               cache key (must be hashable).

- `clear_reuse`: The wrapped function has a function named `clear_cache` that uses `cache.clear`
                 method to clear the cache. This parameter will be passed to cache's `clear` method.

- `callback`: Every time the `cache` is used, callback is also called.
              The callback arguments are: event number (see `EVENT_MISS` or `EVENT_HIT` variables), key, and then result.

- `copy_level`: The wrapped function always copies the result of your function and then returns it.
                This parameter specifies that the wrapped function has to copy which type of results.
                `0` means "never copy", `1` means "only copy `dict`, `list`, and `set` results" and
                `2` means "always copy the results".

<details>
<summary><b>Examples</b></summary>


A simple example:
```python
import cachebox

@cachebox.cached(cachebox.LRUCache(128))
def sum_as_string(a, b):
    return str(a+b)

assert sum_as_string(1, 2) == "3"

assert len(sum_as_string.cache) == 1
sum_as_string.cache_clear()
assert len(sum_as_string.cache) == 0
```

A key_maker example:
```python
import cachebox

def simple_key_maker(args: tuple, kwds: dict):
    return args[0].path

# Async methods are supported
@cachebox.cached(cachebox.LRUCache(128), key_maker=simple_key_maker)
async def request_handler(request: Request):
    return Response("hello man")
```

A typed key_maker example:
```python
import cachebox

@cachebox.cached(cachebox.LRUCache(128), key_maker=cachebox.make_typed_key)
def sum_as_string(a, b):
    return str(a+b)

sum_as_string(1.0, 1)
sum_as_string(1, 1)
print(len(sum_as_string.cache)) # 2
```

You have also manage functions' caches with `.cache` attribute as you saw in examples.
Also there're more attributes and methods you can use:
```python
import cachebox

@cachebox.cached(cachebox.LRUCache(0))
def sum_as_string(a, b):
    return str(a+b)

print(sum_as_string.cache)
# LRUCache(0 / 9223372036854775807, capacity=0)

print(sum_as_string.cache_info())
# CacheInfo(hits=0, misses=0, maxsize=9223372036854775807, length=0, memory=8)

# `.cache_clear()` clears the cache
sum_as_string.cache_clear()
```

callback example: *(Added in v4.2.0)*
```python
import cachebox

def callback_func(event: int, key, value):
    if event == cachebox.EVENT_MISS:
        print("callback_func: miss event", key, value)
    elif event == cachebox.EVENT_HIT:
        print("callback_func: hit event", key, value)
    else:
        # unreachable code
        raise NotImplementedError

@cachebox.cached(cachebox.LRUCache(0), callback=callback_func)
def func(a, b):
    return a + b

assert func(1, 2) == 3
# callback_func: miss event (1, 2) 3

assert func(1, 2) == 3 # hit
# callback_func: hit event (1, 2) 3

assert func(1, 2) == 3 # hit again
# callback_func: hit event (1, 2) 3

assert func(5, 4) == 9
# callback_func: miss event (5, 4) 9
```

</details>


> [!NOTE]\
> Recommended use `cached` method for **@staticmethod**s and use [`cachedmethod`](#function-cachedmethod) for **@classmethod**s;
> And set `copy_level` parameter to `2` on **@classmethod**s.
> ```python
> class MyClass:
>   def __init__(self, num: int) -> None:
>       self.num = num
>
>   @classmethod
>   @cachedmethod({}, copy_level=2)
>   def class_func(cls, num: int):
>       return cls(num)
>
>   @staticmethod
>   @cached({})
>   def static_func(num: int):
>       return num * 5
> ```

> [!TIP]\
> There's a new feature **since `v4.1.0`** that you can tell to a cached function that don't use cache for a call:
> ```python
> # with `cachebox__ignore=True` parameter, cachebox does not use cache and only calls the function and returns its result.
> sum_as_string(10, 20, cachebox__ignore=True)
> ```

* * *

### `cachedmethod` (๐ŸŽ€ decorator)
this is excatly works like `cached()`, but ignores `self` parameters in hashing and key making.

<details>
<summary><b>Example</b></summary>

```python
import cachebox

class MyClass:
    @cachebox.cachedmethod(cachebox.TTLCache(0, ttl=10))
    def my_method(self, name: str):
        return "Hello, " + name + "!"

c = MyClass()
c.my_method()
```

</details>

* * *

### `is_cached` (๐Ÿ“ฆ function)
Checks that a function/method is cached by cachebox or not.

**Parameters:**
- `func`: The function/method to check.

<details>
<summary><b>Example</b></summary>

```python
import cachebox

@cachebox.cached(cachebox.FIFOCache(0))
def func():
    pass

assert cachebox.is_cached(func)
```

</details>

* * *

### `BaseCacheImpl` (๐Ÿ—๏ธ class)
Base implementation for cache classes in the cachebox library.

This abstract base class defines the generic structure for cache implementations,
supporting different key and value types through generic type parameters.
Serves as a foundation for specific cache variants like Cache and FIFOCache.

<details>
<summary><b>Example</b></summary>

```python
import cachebox

# subclass
class ClassName(cachebox.BaseCacheImpl):
    ...

# type-hint
def func(cache: BaseCacheImpl):
    ...

# isinstance
cache = cachebox.LFUCache(0)
assert isinstance(cache, cachebox.BaseCacheImpl)
```

</details>

* * *

### `Cache` (๐Ÿ—๏ธ class)
A thread-safe, memory-efficient hashmap-like cache with configurable maximum size.

Provides a flexible key-value storage mechanism with:
- Configurable maximum size (zero means unlimited)
- Lower memory usage compared to standard dict
- Thread-safe operations
- Useful memory management methods

Supports initialization with optional initial data and capacity,
and provides dictionary-like access with additional cache-specific operations.

> [!TIP]\
> Differs from standard `dict` by:
> - it is thread-safe and unordered, while dict isn't thread-safe and ordered (Python 3.6+).
> - it uses very lower memory than dict.
> - it supports useful and new methods for managing memory, while dict does not.
> - it does not support popitem, while dict does.
> - You can limit the size of Cache, but you cannot for dict.

|              | get   | insert  | delete | popitem |
| ------------ | ----- | ------- | ------ | ------- |
| Worse-case   | O(1)  | O(1)    | O(1)   | N/A     |

<details>
<summary><b>Example</b></summary>

```python
from cachebox import Cache

# These parameters are common in classes:
# By `maxsize` param, you can specify the limit size of the cache ( zero means infinity ); this is unchangable.
# By `iterable` param, you can create cache from a dict or an iterable.
# If `capacity` param is given, cache attempts to allocate a new hash table with at
# least enough capacity for inserting the given number of elements without reallocating.
cache = Cache(maxsize=100, iterable=None, capacity=100)

# you can behave with it like a dictionary
cache["key"] = "value"
# or you can use `.insert(key, value)` instead of that (recommended)
cache.insert("key", "value")

print(cache["key"]) # value

del cache["key"]
cache["key"] # KeyError: key

# cachebox.Cache does not have any policy, so will raise OverflowError if reached the bound.
cache.update({i:i for i in range(200)})
# OverflowError: The cache has reached the bound.
```

</details>

* * *

### `FIFOCache` (๐Ÿ—๏ธ class)
A First-In-First-Out (FIFO) cache implementation with configurable maximum size and optional initial capacity.

This cache provides a fixed-size container that automatically removes the oldest items when the maximum size is reached.

**Key features**:
- Deterministic item eviction order (oldest items removed first)
- Efficient key-value storage and retrieval
- Supports dictionary-like operations
- Allows optional initial data population

|              | get   | insert  | delete       | popitem |
| ------------ | ----- | ------- | ------------- | ------- |
| Worse-case   | O(1)  | O(1) | O(min(i, n-i)) | O(1)  |

<details>
<summary><b>Example</b></summary>

```python
from cachebox import FIFOCache

cache = FIFOCache(5, {i:i*2 for i in range(5)})

print(len(cache)) # 5
cache["new-key"] = "new-value"
print(len(cache)) # 5

print(cache.get(3, "default-val")) # 6
print(cache.get(6, "default-val")) # default-val

print(cache.popitem()) # (1, 2)

# insert method returns a value:
# - If the cache did not have this key present, None is returned.
# - If the cache did have this key present, the value is updated, and the old value is returned.
print(cache.insert(3, "val")) # 6
print(cache.insert("new-key", "val")) # None

# Returns the first key in cache; this is the one which will be removed by `popitem()`.
print(cache.first())
```

</details>

* * *

### `RRCache` (๐Ÿ—๏ธ class)
A thread-safe cache implementation with Random Replacement (RR) policy.

This cache randomly selects and removes elements when the cache reaches its maximum size,
ensuring a simple and efficient caching mechanism with configurable capacity.

Supports operations like insertion, retrieval, deletion, and iteration with O(1) complexity.

|              | get   | insert  | delete | popitem |
| ------------ | ----- | ------- | ------ | ------- |
| Worse-case   | O(1)  | O(1)    | O(1)   | O(1)    |

<details>
<summary><b>Example</b></summary>

```python
from cachebox import RRCache

cache = RRCache(10, {i:i for i in range(10)})
print(cache.is_full()) # True
print(cache.is_empty()) # False

# Returns the number of elements the map can hold without reallocating.
print(cache.capacity()) # 28

# Shrinks the cache to fit len(self) elements.
cache.shrink_to_fit()
print(cache.capacity()) # 10

# Returns a random key
print(cache.random_key()) # 4
```

</details>

* * *

### `LRUCache` (๐Ÿ—๏ธ class)
Thread-safe Least Recently Used (LRU) cache implementation.

Provides a cache that automatically removes the least recently used items when
the cache reaches its maximum size. Supports various operations like insertion,
retrieval, and management of cached items with configurable maximum size and
initial capacity.

|              | get   | insert  | delete(i) | popitem |
| ------------ | ----- | ------- | --------- | ------- |
| Worse-case   | O(1)~ | O(1)~   | O(1)~ | O(1)~ |

<details>
<summary><b>Example</b></summary>

```python
from cachebox import LRUCache

cache = LRUCache(0, {i:i*2 for i in range(10)})

# access `1`
print(cache[0]) # 0
print(cache.least_recently_used()) # 1
print(cache.popitem()) # (1, 2)

# .peek() searches for a key-value in the cache and returns it without moving the key to recently used.
print(cache.peek(2)) # 4
print(cache.popitem()) # (3, 6)

# Does the `popitem()` `n` times and returns count of removed items.
print(cache.drain(5)) # 5
```

</details>

* * *

### `LFUCache` (๐Ÿ—๏ธ class)
A thread-safe Least Frequently Used (LFU) cache implementation.

This cache removes elements that have been accessed the least number of times,
regardless of their access time. It provides methods for inserting, retrieving,
and managing cache entries with configurable maximum size and initial capacity.

|              | get   | insert  | delete(i) | popitem |
| ------------ | ----- | ------- | --------- | ------- |
| Worse-case   | O(1)~ | O(1)~   | O(min(i, n-i)) | O(1)~ |

<details>
<summary><b>Example</b></summary>

```python
from cachebox import LFUCache

cache = cachebox.LFUCache(5)
cache.insert('first', 'A')
cache.insert('second', 'B')

# access 'first' twice
cache['first']
cache['first']

# access 'second' once
cache['second']

assert cache.least_frequently_used() == 'second'
assert cache.least_frequently_used(2) is None # 2 is out of range

for item in cache.items_with_frequency():
    print(item)
# ('second', 'B', 1)
# ('first', 'A', 2)
```

</details>

* * *

### `TTLCache` (๐Ÿ—๏ธ class)
A thread-safe Time-To-Live (TTL) cache implementation with configurable maximum size and expiration.

This cache automatically removes elements that have expired based on their time-to-live setting.
Supports various operations like insertion, retrieval, and iteration.

|              | get   | insert  | delete(i) | popitem |
| ------------ | ----- | ------- | --------- | ------- |
| Worse-case   | O(1)~ | O(1)~   | O(min(i, n-i)) | O(n) |

<details>
<summary><b>Example</b></summary>

```python
from cachebox import TTLCache
import time

# The `ttl` param specifies the time-to-live value for each element in cache (in seconds); cannot be zero or negative.
cache = TTLCache(0, ttl=2)
cache.update({i:str(i) for i in range(10)})

print(cache.get_with_expire(2)) # ('2', 1.99)

# Returns the oldest key in cache; this is the one which will be removed by `popitem()` 
print(cache.first()) # 0

cache["mykey"] = "value"
time.sleep(2)
cache["mykey"] # KeyError
```

</details>

* * *

### `VTTLCache` (๐Ÿ—๏ธ class)
A thread-safe, time-to-live (TTL) cache implementation with per-key expiration policy.

This cache allows storing key-value pairs with optional expiration times. When an item expires,
it is automatically removed from the cache. The cache supports a maximum size and provides
various methods for inserting, retrieving, and managing cached items.

Key features:
- Per-key time-to-live (TTL) support
- Configurable maximum cache size
- Thread-safe operations
- Automatic expiration of items

Supports dictionary-like operations such as get, insert, update, and iteration.

|              | get   | insert  | delete(i) | popitem |
| ------------ | ----- | ------- | --------- | ------- |
| Worse-case   | O(1)~ | O(1)~   | O(min(i, n-i)) | O(1)~ |

> [!TIP]\
> `VTTLCache` vs `TTLCache`:
> - In `VTTLCache` each item has its own unique time-to-live, unlike `TTLCache`.
> - `VTTLCache` is generally slower than `TTLCache`.

<details>
<summary><b>Example</b></summary>

```python
from cachebox import VTTLCache
import time

# The `ttl` param specifies the time-to-live value for `iterable` (in seconds); cannot be zero or negative.
cache = VTTLCache(100, iterable={i:i for i in range(4)}, ttl=3)
print(len(cache)) # 4
time.sleep(3)
print(len(cache)) # 0

# The "key1" is exists for 5 seconds
cache.insert("key1", "value", ttl=5)
# The "key2" is exists for 2 seconds
cache.insert("key2", "value", ttl=2)

time.sleep(2)
# "key1" is exists for 3 seconds
print(cache.get("key1")) # value

# "key2" has expired
print(cache.get("key2")) # None
```

</details>

* * *

### `Frozen` (๐Ÿ—๏ธ class)
**This is not a cache**; This is a wrapper class that prevents modifications to an underlying cache implementation.

This class provides a read-only view of a cache, optionally allowing silent
suppression of modification attempts instead of raising exceptions.

<details>
<summary><b>Example</b></summary>

```python
from cachebox import Frozen, FIFOCache

cache = FIFOCache(10, {1:1, 2:2, 3:3})

# parameters:
#   cls: your cache
#   ignore: If False, will raise TypeError if anyone try to change cache. will do nothing otherwise.
frozen = Frozen(cache, ignore=True)
print(frozen[1]) # 1
print(len(frozen)) # 3

# Frozen ignores this action and do nothing
frozen.insert("key", "value")
print(len(frozen)) # 3

# Let's try with ignore=False
frozen = Frozen(cache, ignore=False)

frozen.insert("key", "value")
# TypeError: This cache is frozen.
```

</details>

> [!NOTE]\
> The **Frozen** class can't prevent expiring in [TTLCache](#ttlcache) or [VTTLCache](#vttlcache).
>
> For example:
> ```python
> cache = TTLCache(0, ttl=3, iterable={i:i for i in range(10)})
> frozen = Frozen(cache)
> 
> time.sleep(3)
> print(len(frozen)) # 0
> ```

## โš ๏ธ Incompatible Changes
These are changes that are not compatible with the previous version:

**You can see more info about changes in [Changelog](CHANGELOG.md).**

#### CacheInfo's cachememory attribute renamed!
The `CacheInfo.cachememory` was renamed to `CacheInfo.memory`.

```python
@cachebox.cached({})
def func(a: int, b: int) -> str:
    ...

info = func.cache_info()

# Older versions
print(info.cachememory)

# New version
print(info.memory)
```

#### Errors in the `__eq__` method will not be ignored!
Now the errors which occurred while doing `__eq__` operations will not be ignored.

```python
class A:
    def __hash__(self):
        return 1

    def __eq__(self, other):
        raise NotImplementedError("not implemeneted")

cache = cachebox.FIFOCache(0, {A(): 10})

# Older versions:
cache[A()] # => KeyError

# New version:
cache[A()]
# Traceback (most recent call last):
# File "script.py", line 11, in <module>
#    cache[A()]
#    ~~~~~^^^^^
#  File "script.py", line 7, in __eq__
#   raise NotImplementedError("not implemeneted")
# NotImplementedError: not implemeneted
```

#### Cache comparisons will not be strict!
In older versions, cache comparisons depended on the caching algorithm. Now, they work just like dictionary comparisons.

```python
cache1 = cachebox.FIFOCache(10)
cache2 = cachebox.FIFOCache(10)

cache1.insert(1, 'first')
cache1.insert(2, 'second')

cache2.insert(2, 'second')
cache2.insert(1, 'first')

# Older versions:
cache1 == cache2 # False

# New version:
cache1 == cache2 # True
```

## Tips and Notes
#### How to save caches in files?
there's no built-in file-based implementation, but you can use `pickle` for saving caches in files. For example:
```python
import cachebox
import pickle
c = cachebox.LRUCache(100, {i:i for i in range(78)})

with open("file", "wb") as fd:
    pickle.dump(c, fd)

with open("file", "rb") as fd:
    loaded = pickle.load(fd)

assert c == loaded
assert c.capacity() == loaded.capacity()
```

> [!TIP]\
> For more, see this [issue](https://github.com/awolverp/cachebox/issues/8).

* * *

#### How to copy the caches?
You can use `copy.deepcopy` or `cache.copy` for copying caches. For example:
```python
import cachebox
cache = cachebox.LRUCache(100, {i:i for i in range(78)})

# shallow copy
shallow = cache.copy()

# deep copy
import copy
deep = copy.deepcopy(cache)
```

## License
This repository is licensed under the [MIT License](LICENSE)


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/awolverp/cachebox",
    "name": "cachebox",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "caching, cached, cachebox, cache, in-memory-caching, memoizing",
    "author": null,
    "author_email": "awolverp <awolverp@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/b3/0b/f6f782b6e6c7977a29272eeed8bcd94bb2dd86b3a6b369e2488ff892cf72/cachebox-5.0.4.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n\n# Cachebox\n\n*The fastest caching Python library written in Rust*\n\n[**Releases**](https://github.com/awolverp/cachebox/releases) | \n[**Benchmarks**](https://github.com/awolverp/cachebox-benchmark) | \n[**Issues**](https://github.com/awolverp/cachebox/issues/new)\n\n[![License](https://img.shields.io/github/license/awolverp/cachebox.svg?style=flat-square)](https://github.com/awolverp/cachebox/blob/main/LICENSE)\n[![Release](https://img.shields.io/github/v/release/awolverp/cachebox.svg?style=flat-square)](https://github.com/awolverp/cachebox/releases)\n[![Python Versions](https://img.shields.io/pypi/pyversions/cachebox.svg?style=flat-square)](https://pypi.org/project/cachebox/)\n[![Downloads](https://img.shields.io/pypi/dm/cachebox?style=flat-square&color=%23314bb5)](https://pepy.tech/projects/cachebox)\n\n</div>\n\n-------\n\n### What does it do?\nYou can easily and powerfully perform caching operations in Python as fast as possible.\nThis can make your application very faster and it's a good choice in big applications.\n**Ideal for optimizing large-scale applications** with efficient, low-overhead caching.\n\n**Key Features:**\n- \ud83d\ude80 Extremely fast (10-50x faster than other caching libraries -- [*benchmarks*](https://github.com/awolverp/cachebox-benchmark))\n- \ud83d\udcca Minimal memory footprint (50% of standard dictionary memory usage)\n- \ud83d\udd25 Full-featured and user-friendly\n- \ud83e\uddf6 Completely thread-safe\n- \ud83d\udd27 Tested and correct\n- **\\[R\\]** written in Rust for maximum performance\n- \ud83e\udd1d Compatible with Python 3.9+ (PyPy and CPython)\n- \ud83d\udce6 Supports 7 advanced caching algorithms\n\n### Page Contents\n- \u2753 [**When i need caching and cachebox**](#when-i-need-caching-and-cachebox)\n- \ud83c\udf1f [**Why `cachebox`**](#why-cachebox)\n- \ud83d\udd27 [**Installation**](#installation)\n- \ud83d\udca1 [**Preview**](#examples)\n- \ud83c\udf93 [**Getting started**](#getting-started)\n- \u270f\ufe0f [**Incompatible changes**](#%EF%B8%8F-incompatible-changes)\n- \ud83d\udccc [**Tips & Notes**](#tips-and-notes)\n\n### When i need caching and cachebox\n- \ud83d\udcc8 **Frequently Data Access** \\\n  If you need to access the same data multiple times, caching can help reduce the number of database queries or API calls, improving performance.\n\n- \ud83d\udc8e **Expensive Operations** \\\n  If you have operations that are computationally expensive, caching can help reduce the number of times these operations need to be performed.\n\n- \ud83d\ude97 **High Traffic Scenarios** \\\n  If your application has high user traffic, caching can help reduce the load on your server by reducing the number of requests that need to be processed.\n\n- #\ufe0f\u20e3 **Web Page Rendring** \\\n  If you are rendering web pages, caching can help reduce the time it takes to generate the page by caching the results of expensive operations. Caching HTML pages can speed up the delivery of static content.\n\n- \ud83d\udea7 **Rate Limiting** \\\n  If you have a rate limiting system in place, caching can help reduce the number of requests that need to be processed by the rate limiter. Also, caching can help you to manage rate limits imposed by third-party APIs by reducing the number of requests sent.\n\n- \ud83e\udd16 **Machine Learning Models** \\\n  If your application frequently makes predictions using the same input data, caching the results can save computation time.\n\n### Why cachebox?\n- **\u26a1 Rust** \\\nIt uses *Rust* language to has high-performance.\n\n- **\ud83e\uddee SwissTable** \\\nIt uses Google's high-performance SwissTable hash map. thanks to [hashbrown](https://github.com/rust-lang/hashbrown).\n\n- **\u2728 Low memory usage** \\\nIt has very low memory usage.\n\n- **\u2b50 Zero Dependency** \\\nAs we said, `cachebox` written in Rust so you don't have to install any other dependecies.\n\n- **\ud83e\uddf6 Thread safe** \\\nIt's completely thread-safe and uses locks to prevent problems.\n\n- **\ud83d\udc4c Easy To Use** \\\nYou only need to import it and choice your implementation to use and behave with it like a dictionary.\n\n- **\ud83d\udeab Avoids Cache Stampede** \\\nIt avoids [cache stampede](https://en.wikipedia.org/wiki/Cache_stampede) by using a distributed lock system.\n\n\n## Installation\ncachebox is installable by `pip`:\n```bash\npip3 install -U cachebox\n```\n\n> [!WARNING]\\\n> The new version v5 has some incompatible with v4, for more info please see [Incompatible changes](#incompatible-changes)\n\n## Examples\nThe simplest example of **cachebox** could look like this:\n```python\nimport cachebox\n\n# Like functools.lru_cache, If maxsize is set to 0, the cache can grow without bound and limit.\n@cachebox.cached(cachebox.FIFOCache(maxsize=128))\ndef factorial(number: int) -> int:\n    fact = 1\n    for num in range(2, number + 1):\n        fact *= num\n    return fact\n\nassert factorial(5) == 125\nassert len(factorial.cache) == 1\n\n# Async are also supported\n@cachebox.cached(cachebox.LRUCache(maxsize=128))\nasync def make_request(method: str, url: str) -> dict:\n    response = await client.request(method, url)\n    return response.json()\n```\n\nAlso, unlike functools.lru_cache and other caching libraries, cachebox can copy `dict`, `list`, and `set` objects.\n```python\n@cachebox.cached(cachebox.LRUCache(maxsize=128))\ndef make_dict(name: str, age: int) -> dict:\n   return {\"name\": name, \"age\": age}\n>\nd = make_dict(\"cachebox\", 10)\nassert d == {\"name\": \"cachebox\", \"age\": 10}\nd[\"new-key\"] = \"new-value\"\n\nd2 = make_dict(\"cachebox\", 10)\n# `d2` will be `{\"name\": \"cachebox\", \"age\": 10, \"new-key\": \"new-value\"}` if you use other libraries\nassert d2 == {\"name\": \"cachebox\", \"age\": 10}\n```\n\nYou can use cache alghoritms without `cached` decorator -- just import what cache alghoritms you want and use it like a dictionary.\n```python\nfrom cachebox import FIFOCache\n\ncache = FIFOCache(maxsize=128)\ncache[\"key\"] = \"value\"\nassert cache[\"key\"] == \"value\"\n\n# You can also use `cache.get(key, default)`\nassert cache.get(\"key\") == \"value\"\n```\n\n## Getting started\nThere are 3 useful functions:\n- [**cached**](#cached--decorator): a decorator that helps you to cache your functions and calculations with a lot of options.\n- [**cachedmethod**](#cachedmethod--decorator): this is excatly works like `cached()`, but ignores `self` parameters in hashing and key making.\n- [**is_cached**](#is_cached--function): check if a function/method cached by cachebox or not\n\nAnd 9 classes:\n- [**BaseCacheImpl**](#basecacheimpl-\ufe0f-class): base-class for all classes.\n- [**Cache**](#cache-\ufe0f-class): A simple cache that has no algorithm; this is only a hashmap.\n- [**FIFOCache**](#fifocache-\ufe0f-class): the FIFO cache will remove the element that has been in the cache the longest.\n- [**RRCache**](#rrcache-\ufe0f-class): the RR cache will choice randomly element to remove it to make space when necessary.\n- [**LRUCache**](#lrucache-\ufe0f-class): the LRU cache will remove the element in the cache that has not been accessed in the longest time.\n- [**LFUCache**](#lfucache-\ufe0f-class): the LFU cache will remove the element in the cache that has been accessed the least, regardless of time.\n- [**TTLCache**](#ttlcache-\ufe0f-class): the TTL cache will automatically remove the element in the cache that has expired.\n- [**VTTLCache**](#vttlcache-\ufe0f-class): the TTL cache will automatically remove the element in the cache that has expired when need.\n- [**Frozen**](#frozen-\ufe0f-class): you can use this class for freezing your caches.\n\nYou only need to import the class which you want, and behave with it like a dictionary (except for [VTTLCache](#vttlcache-\ufe0f-class), this have some differences)\n\nThere are some examples for you with different methods for introducing those.\n**All the methods you will see in the examples are common across all classes (except for a few of them).**\n\n* * *\n\n### `cached` (\ud83c\udf80 decorator)\nDecorator to wrap a function with a memoizing callable that saves results in a cache.\n\n**Parameters:**\n- `cache`: Specifies a cache that handles and stores the results. if `None` or `dict`, `FIFOCache` will be used.\n\n- `key_maker`: Specifies a function that will be called with the same positional and keyword\n               arguments as the wrapped function itself, and which has to return a suitable\n               cache key (must be hashable).\n\n- `clear_reuse`: The wrapped function has a function named `clear_cache` that uses `cache.clear`\n                 method to clear the cache. This parameter will be passed to cache's `clear` method.\n\n- `callback`: Every time the `cache` is used, callback is also called.\n              The callback arguments are: event number (see `EVENT_MISS` or `EVENT_HIT` variables), key, and then result.\n\n- `copy_level`: The wrapped function always copies the result of your function and then returns it.\n                This parameter specifies that the wrapped function has to copy which type of results.\n                `0` means \"never copy\", `1` means \"only copy `dict`, `list`, and `set` results\" and\n                `2` means \"always copy the results\".\n\n<details>\n<summary><b>Examples</b></summary>\n\n\nA simple example:\n```python\nimport cachebox\n\n@cachebox.cached(cachebox.LRUCache(128))\ndef sum_as_string(a, b):\n    return str(a+b)\n\nassert sum_as_string(1, 2) == \"3\"\n\nassert len(sum_as_string.cache) == 1\nsum_as_string.cache_clear()\nassert len(sum_as_string.cache) == 0\n```\n\nA key_maker example:\n```python\nimport cachebox\n\ndef simple_key_maker(args: tuple, kwds: dict):\n    return args[0].path\n\n# Async methods are supported\n@cachebox.cached(cachebox.LRUCache(128), key_maker=simple_key_maker)\nasync def request_handler(request: Request):\n    return Response(\"hello man\")\n```\n\nA typed key_maker example:\n```python\nimport cachebox\n\n@cachebox.cached(cachebox.LRUCache(128), key_maker=cachebox.make_typed_key)\ndef sum_as_string(a, b):\n    return str(a+b)\n\nsum_as_string(1.0, 1)\nsum_as_string(1, 1)\nprint(len(sum_as_string.cache)) # 2\n```\n\nYou have also manage functions' caches with `.cache` attribute as you saw in examples.\nAlso there're more attributes and methods you can use:\n```python\nimport cachebox\n\n@cachebox.cached(cachebox.LRUCache(0))\ndef sum_as_string(a, b):\n    return str(a+b)\n\nprint(sum_as_string.cache)\n# LRUCache(0 / 9223372036854775807, capacity=0)\n\nprint(sum_as_string.cache_info())\n# CacheInfo(hits=0, misses=0, maxsize=9223372036854775807, length=0, memory=8)\n\n# `.cache_clear()` clears the cache\nsum_as_string.cache_clear()\n```\n\ncallback example: *(Added in v4.2.0)*\n```python\nimport cachebox\n\ndef callback_func(event: int, key, value):\n    if event == cachebox.EVENT_MISS:\n        print(\"callback_func: miss event\", key, value)\n    elif event == cachebox.EVENT_HIT:\n        print(\"callback_func: hit event\", key, value)\n    else:\n        # unreachable code\n        raise NotImplementedError\n\n@cachebox.cached(cachebox.LRUCache(0), callback=callback_func)\ndef func(a, b):\n    return a + b\n\nassert func(1, 2) == 3\n# callback_func: miss event (1, 2) 3\n\nassert func(1, 2) == 3 # hit\n# callback_func: hit event (1, 2) 3\n\nassert func(1, 2) == 3 # hit again\n# callback_func: hit event (1, 2) 3\n\nassert func(5, 4) == 9\n# callback_func: miss event (5, 4) 9\n```\n\n</details>\n\n\n> [!NOTE]\\\n> Recommended use `cached` method for **@staticmethod**s and use [`cachedmethod`](#function-cachedmethod) for **@classmethod**s;\n> And set `copy_level` parameter to `2` on **@classmethod**s.\n> ```python\n> class MyClass:\n>   def __init__(self, num: int) -> None:\n>       self.num = num\n>\n>   @classmethod\n>   @cachedmethod({}, copy_level=2)\n>   def class_func(cls, num: int):\n>       return cls(num)\n>\n>   @staticmethod\n>   @cached({})\n>   def static_func(num: int):\n>       return num * 5\n> ```\n\n> [!TIP]\\\n> There's a new feature **since `v4.1.0`** that you can tell to a cached function that don't use cache for a call:\n> ```python\n> # with `cachebox__ignore=True` parameter, cachebox does not use cache and only calls the function and returns its result.\n> sum_as_string(10, 20, cachebox__ignore=True)\n> ```\n\n* * *\n\n### `cachedmethod` (\ud83c\udf80 decorator)\nthis is excatly works like `cached()`, but ignores `self` parameters in hashing and key making.\n\n<details>\n<summary><b>Example</b></summary>\n\n```python\nimport cachebox\n\nclass MyClass:\n    @cachebox.cachedmethod(cachebox.TTLCache(0, ttl=10))\n    def my_method(self, name: str):\n        return \"Hello, \" + name + \"!\"\n\nc = MyClass()\nc.my_method()\n```\n\n</details>\n\n* * *\n\n### `is_cached` (\ud83d\udce6 function)\nChecks that a function/method is cached by cachebox or not.\n\n**Parameters:**\n- `func`: The function/method to check.\n\n<details>\n<summary><b>Example</b></summary>\n\n```python\nimport cachebox\n\n@cachebox.cached(cachebox.FIFOCache(0))\ndef func():\n    pass\n\nassert cachebox.is_cached(func)\n```\n\n</details>\n\n* * *\n\n### `BaseCacheImpl` (\ud83c\udfd7\ufe0f class)\nBase implementation for cache classes in the cachebox library.\n\nThis abstract base class defines the generic structure for cache implementations,\nsupporting different key and value types through generic type parameters.\nServes as a foundation for specific cache variants like Cache and FIFOCache.\n\n<details>\n<summary><b>Example</b></summary>\n\n```python\nimport cachebox\n\n# subclass\nclass ClassName(cachebox.BaseCacheImpl):\n    ...\n\n# type-hint\ndef func(cache: BaseCacheImpl):\n    ...\n\n# isinstance\ncache = cachebox.LFUCache(0)\nassert isinstance(cache, cachebox.BaseCacheImpl)\n```\n\n</details>\n\n* * *\n\n### `Cache` (\ud83c\udfd7\ufe0f class)\nA thread-safe, memory-efficient hashmap-like cache with configurable maximum size.\n\nProvides a flexible key-value storage mechanism with:\n- Configurable maximum size (zero means unlimited)\n- Lower memory usage compared to standard dict\n- Thread-safe operations\n- Useful memory management methods\n\nSupports initialization with optional initial data and capacity,\nand provides dictionary-like access with additional cache-specific operations.\n\n> [!TIP]\\\n> Differs from standard `dict` by:\n> - it is thread-safe and unordered, while dict isn't thread-safe and ordered (Python 3.6+).\n> - it uses very lower memory than dict.\n> - it supports useful and new methods for managing memory, while dict does not.\n> - it does not support popitem, while dict does.\n> - You can limit the size of Cache, but you cannot for dict.\n\n|              | get   | insert  | delete | popitem |\n| ------------ | ----- | ------- | ------ | ------- |\n| Worse-case   | O(1)  | O(1)    | O(1)   | N/A     |\n\n<details>\n<summary><b>Example</b></summary>\n\n```python\nfrom cachebox import Cache\n\n# These parameters are common in classes:\n# By `maxsize` param, you can specify the limit size of the cache ( zero means infinity ); this is unchangable.\n# By `iterable` param, you can create cache from a dict or an iterable.\n# If `capacity` param is given, cache attempts to allocate a new hash table with at\n# least enough capacity for inserting the given number of elements without reallocating.\ncache = Cache(maxsize=100, iterable=None, capacity=100)\n\n# you can behave with it like a dictionary\ncache[\"key\"] = \"value\"\n# or you can use `.insert(key, value)` instead of that (recommended)\ncache.insert(\"key\", \"value\")\n\nprint(cache[\"key\"]) # value\n\ndel cache[\"key\"]\ncache[\"key\"] # KeyError: key\n\n# cachebox.Cache does not have any policy, so will raise OverflowError if reached the bound.\ncache.update({i:i for i in range(200)})\n# OverflowError: The cache has reached the bound.\n```\n\n</details>\n\n* * *\n\n### `FIFOCache` (\ud83c\udfd7\ufe0f class)\nA First-In-First-Out (FIFO) cache implementation with configurable maximum size and optional initial capacity.\n\nThis cache provides a fixed-size container that automatically removes the oldest items when the maximum size is reached.\n\n**Key features**:\n- Deterministic item eviction order (oldest items removed first)\n- Efficient key-value storage and retrieval\n- Supports dictionary-like operations\n- Allows optional initial data population\n\n|              | get   | insert  | delete       | popitem |\n| ------------ | ----- | ------- | ------------- | ------- |\n| Worse-case   | O(1)  | O(1) | O(min(i, n-i)) | O(1)  |\n\n<details>\n<summary><b>Example</b></summary>\n\n```python\nfrom cachebox import FIFOCache\n\ncache = FIFOCache(5, {i:i*2 for i in range(5)})\n\nprint(len(cache)) # 5\ncache[\"new-key\"] = \"new-value\"\nprint(len(cache)) # 5\n\nprint(cache.get(3, \"default-val\")) # 6\nprint(cache.get(6, \"default-val\")) # default-val\n\nprint(cache.popitem()) # (1, 2)\n\n# insert method returns a value:\n# - If the cache did not have this key present, None is returned.\n# - If the cache did have this key present, the value is updated, and the old value is returned.\nprint(cache.insert(3, \"val\")) # 6\nprint(cache.insert(\"new-key\", \"val\")) # None\n\n# Returns the first key in cache; this is the one which will be removed by `popitem()`.\nprint(cache.first())\n```\n\n</details>\n\n* * *\n\n### `RRCache` (\ud83c\udfd7\ufe0f class)\nA thread-safe cache implementation with Random Replacement (RR) policy.\n\nThis cache randomly selects and removes elements when the cache reaches its maximum size,\nensuring a simple and efficient caching mechanism with configurable capacity.\n\nSupports operations like insertion, retrieval, deletion, and iteration with O(1) complexity.\n\n|              | get   | insert  | delete | popitem |\n| ------------ | ----- | ------- | ------ | ------- |\n| Worse-case   | O(1)  | O(1)    | O(1)   | O(1)    |\n\n<details>\n<summary><b>Example</b></summary>\n\n```python\nfrom cachebox import RRCache\n\ncache = RRCache(10, {i:i for i in range(10)})\nprint(cache.is_full()) # True\nprint(cache.is_empty()) # False\n\n# Returns the number of elements the map can hold without reallocating.\nprint(cache.capacity()) # 28\n\n# Shrinks the cache to fit len(self) elements.\ncache.shrink_to_fit()\nprint(cache.capacity()) # 10\n\n# Returns a random key\nprint(cache.random_key()) # 4\n```\n\n</details>\n\n* * *\n\n### `LRUCache` (\ud83c\udfd7\ufe0f class)\nThread-safe Least Recently Used (LRU) cache implementation.\n\nProvides a cache that automatically removes the least recently used items when\nthe cache reaches its maximum size. Supports various operations like insertion,\nretrieval, and management of cached items with configurable maximum size and\ninitial capacity.\n\n|              | get   | insert  | delete(i) | popitem |\n| ------------ | ----- | ------- | --------- | ------- |\n| Worse-case   | O(1)~ | O(1)~   | O(1)~ | O(1)~ |\n\n<details>\n<summary><b>Example</b></summary>\n\n```python\nfrom cachebox import LRUCache\n\ncache = LRUCache(0, {i:i*2 for i in range(10)})\n\n# access `1`\nprint(cache[0]) # 0\nprint(cache.least_recently_used()) # 1\nprint(cache.popitem()) # (1, 2)\n\n# .peek() searches for a key-value in the cache and returns it without moving the key to recently used.\nprint(cache.peek(2)) # 4\nprint(cache.popitem()) # (3, 6)\n\n# Does the `popitem()` `n` times and returns count of removed items.\nprint(cache.drain(5)) # 5\n```\n\n</details>\n\n* * *\n\n### `LFUCache` (\ud83c\udfd7\ufe0f class)\nA thread-safe Least Frequently Used (LFU) cache implementation.\n\nThis cache removes elements that have been accessed the least number of times,\nregardless of their access time. It provides methods for inserting, retrieving,\nand managing cache entries with configurable maximum size and initial capacity.\n\n|              | get   | insert  | delete(i) | popitem |\n| ------------ | ----- | ------- | --------- | ------- |\n| Worse-case   | O(1)~ | O(1)~   | O(min(i, n-i)) | O(1)~ |\n\n<details>\n<summary><b>Example</b></summary>\n\n```python\nfrom cachebox import LFUCache\n\ncache = cachebox.LFUCache(5)\ncache.insert('first', 'A')\ncache.insert('second', 'B')\n\n# access 'first' twice\ncache['first']\ncache['first']\n\n# access 'second' once\ncache['second']\n\nassert cache.least_frequently_used() == 'second'\nassert cache.least_frequently_used(2) is None # 2 is out of range\n\nfor item in cache.items_with_frequency():\n    print(item)\n# ('second', 'B', 1)\n# ('first', 'A', 2)\n```\n\n</details>\n\n* * *\n\n### `TTLCache` (\ud83c\udfd7\ufe0f class)\nA thread-safe Time-To-Live (TTL) cache implementation with configurable maximum size and expiration.\n\nThis cache automatically removes elements that have expired based on their time-to-live setting.\nSupports various operations like insertion, retrieval, and iteration.\n\n|              | get   | insert  | delete(i) | popitem |\n| ------------ | ----- | ------- | --------- | ------- |\n| Worse-case   | O(1)~ | O(1)~   | O(min(i, n-i)) | O(n) |\n\n<details>\n<summary><b>Example</b></summary>\n\n```python\nfrom cachebox import TTLCache\nimport time\n\n# The `ttl` param specifies the time-to-live value for each element in cache (in seconds); cannot be zero or negative.\ncache = TTLCache(0, ttl=2)\ncache.update({i:str(i) for i in range(10)})\n\nprint(cache.get_with_expire(2)) # ('2', 1.99)\n\n# Returns the oldest key in cache; this is the one which will be removed by `popitem()` \nprint(cache.first()) # 0\n\ncache[\"mykey\"] = \"value\"\ntime.sleep(2)\ncache[\"mykey\"] # KeyError\n```\n\n</details>\n\n* * *\n\n### `VTTLCache` (\ud83c\udfd7\ufe0f class)\nA thread-safe, time-to-live (TTL) cache implementation with per-key expiration policy.\n\nThis cache allows storing key-value pairs with optional expiration times. When an item expires,\nit is automatically removed from the cache. The cache supports a maximum size and provides\nvarious methods for inserting, retrieving, and managing cached items.\n\nKey features:\n- Per-key time-to-live (TTL) support\n- Configurable maximum cache size\n- Thread-safe operations\n- Automatic expiration of items\n\nSupports dictionary-like operations such as get, insert, update, and iteration.\n\n|              | get   | insert  | delete(i) | popitem |\n| ------------ | ----- | ------- | --------- | ------- |\n| Worse-case   | O(1)~ | O(1)~   | O(min(i, n-i)) | O(1)~ |\n\n> [!TIP]\\\n> `VTTLCache` vs `TTLCache`:\n> - In `VTTLCache` each item has its own unique time-to-live, unlike `TTLCache`.\n> - `VTTLCache` is generally slower than `TTLCache`.\n\n<details>\n<summary><b>Example</b></summary>\n\n```python\nfrom cachebox import VTTLCache\nimport time\n\n# The `ttl` param specifies the time-to-live value for `iterable` (in seconds); cannot be zero or negative.\ncache = VTTLCache(100, iterable={i:i for i in range(4)}, ttl=3)\nprint(len(cache)) # 4\ntime.sleep(3)\nprint(len(cache)) # 0\n\n# The \"key1\" is exists for 5 seconds\ncache.insert(\"key1\", \"value\", ttl=5)\n# The \"key2\" is exists for 2 seconds\ncache.insert(\"key2\", \"value\", ttl=2)\n\ntime.sleep(2)\n# \"key1\" is exists for 3 seconds\nprint(cache.get(\"key1\")) # value\n\n# \"key2\" has expired\nprint(cache.get(\"key2\")) # None\n```\n\n</details>\n\n* * *\n\n### `Frozen` (\ud83c\udfd7\ufe0f class)\n**This is not a cache**; This is a wrapper class that prevents modifications to an underlying cache implementation.\n\nThis class provides a read-only view of a cache, optionally allowing silent\nsuppression of modification attempts instead of raising exceptions.\n\n<details>\n<summary><b>Example</b></summary>\n\n```python\nfrom cachebox import Frozen, FIFOCache\n\ncache = FIFOCache(10, {1:1, 2:2, 3:3})\n\n# parameters:\n#   cls: your cache\n#   ignore: If False, will raise TypeError if anyone try to change cache. will do nothing otherwise.\nfrozen = Frozen(cache, ignore=True)\nprint(frozen[1]) # 1\nprint(len(frozen)) # 3\n\n# Frozen ignores this action and do nothing\nfrozen.insert(\"key\", \"value\")\nprint(len(frozen)) # 3\n\n# Let's try with ignore=False\nfrozen = Frozen(cache, ignore=False)\n\nfrozen.insert(\"key\", \"value\")\n# TypeError: This cache is frozen.\n```\n\n</details>\n\n> [!NOTE]\\\n> The **Frozen** class can't prevent expiring in [TTLCache](#ttlcache) or [VTTLCache](#vttlcache).\n>\n> For example:\n> ```python\n> cache = TTLCache(0, ttl=3, iterable={i:i for i in range(10)})\n> frozen = Frozen(cache)\n> \n> time.sleep(3)\n> print(len(frozen)) # 0\n> ```\n\n## \u26a0\ufe0f Incompatible Changes\nThese are changes that are not compatible with the previous version:\n\n**You can see more info about changes in [Changelog](CHANGELOG.md).**\n\n#### CacheInfo's cachememory attribute renamed!\nThe `CacheInfo.cachememory` was renamed to `CacheInfo.memory`.\n\n```python\n@cachebox.cached({})\ndef func(a: int, b: int) -> str:\n    ...\n\ninfo = func.cache_info()\n\n# Older versions\nprint(info.cachememory)\n\n# New version\nprint(info.memory)\n```\n\n#### Errors in the `__eq__` method will not be ignored!\nNow the errors which occurred while doing `__eq__` operations will not be ignored.\n\n```python\nclass A:\n    def __hash__(self):\n        return 1\n\n    def __eq__(self, other):\n        raise NotImplementedError(\"not implemeneted\")\n\ncache = cachebox.FIFOCache(0, {A(): 10})\n\n# Older versions:\ncache[A()] # => KeyError\n\n# New version:\ncache[A()]\n# Traceback (most recent call last):\n# File \"script.py\", line 11, in <module>\n#    cache[A()]\n#    ~~~~~^^^^^\n#  File \"script.py\", line 7, in __eq__\n#   raise NotImplementedError(\"not implemeneted\")\n# NotImplementedError: not implemeneted\n```\n\n#### Cache comparisons will not be strict!\nIn older versions, cache comparisons depended on the caching algorithm. Now, they work just like dictionary comparisons.\n\n```python\ncache1 = cachebox.FIFOCache(10)\ncache2 = cachebox.FIFOCache(10)\n\ncache1.insert(1, 'first')\ncache1.insert(2, 'second')\n\ncache2.insert(2, 'second')\ncache2.insert(1, 'first')\n\n# Older versions:\ncache1 == cache2 # False\n\n# New version:\ncache1 == cache2 # True\n```\n\n## Tips and Notes\n#### How to save caches in files?\nthere's no built-in file-based implementation, but you can use `pickle` for saving caches in files. For example:\n```python\nimport cachebox\nimport pickle\nc = cachebox.LRUCache(100, {i:i for i in range(78)})\n\nwith open(\"file\", \"wb\") as fd:\n    pickle.dump(c, fd)\n\nwith open(\"file\", \"rb\") as fd:\n    loaded = pickle.load(fd)\n\nassert c == loaded\nassert c.capacity() == loaded.capacity()\n```\n\n> [!TIP]\\\n> For more, see this [issue](https://github.com/awolverp/cachebox/issues/8).\n\n* * *\n\n#### How to copy the caches?\nYou can use `copy.deepcopy` or `cache.copy` for copying caches. For example:\n```python\nimport cachebox\ncache = cachebox.LRUCache(100, {i:i for i in range(78)})\n\n# shallow copy\nshallow = cache.copy()\n\n# deep copy\nimport copy\ndeep = copy.deepcopy(cache)\n```\n\n## License\nThis repository is licensed under the [MIT License](LICENSE)\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "The fastest memoizing and caching Python library written in Rust",
    "version": "5.0.4",
    "project_urls": {
        "Homepage": "https://github.com/awolverp/cachebox"
    },
    "split_keywords": [
        "caching",
        " cached",
        " cachebox",
        " cache",
        " in-memory-caching",
        " memoizing"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "059ef9f6f1ea4450fec8b56c8a013ac6b1c0039cbee29f8ce61c7dc5233152c4",
                "md5": "f0589ad58a05c825dcc513bdea9aa5d8",
                "sha256": "be9b913167cea2049247ecb5949f5080a0b6be0ae103afe083ccc8563345f769"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f0589ad58a05c825dcc513bdea9aa5d8",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 322736,
            "upload_time": "2025-10-20T11:44:53",
            "upload_time_iso_8601": "2025-10-20T11:44:53.423858Z",
            "url": "https://files.pythonhosted.org/packages/05/9e/f9f6f1ea4450fec8b56c8a013ac6b1c0039cbee29f8ce61c7dc5233152c4/cachebox-5.0.4-cp310-cp310-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b589afeb297c6a2c3a77796ba19ee85b15be6b92748124d9dd4c9244b72cee88",
                "md5": "8e266ed75e4cf7d10a45957ad6189e96",
                "sha256": "009953140bac4ab0f6ff5612e2d5b4657769563ce6d72b7a722e2f3822c7212d"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "8e266ed75e4cf7d10a45957ad6189e96",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 297169,
            "upload_time": "2025-10-20T11:44:43",
            "upload_time_iso_8601": "2025-10-20T11:44:43.879775Z",
            "url": "https://files.pythonhosted.org/packages/b5/89/afeb297c6a2c3a77796ba19ee85b15be6b92748124d9dd4c9244b72cee88/cachebox-5.0.4-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "09611bc46106924bb81d1f8fd841a2cc29374263618f7646533b440831121a49",
                "md5": "76473401e27c87d5bec4c4ae87a06a65",
                "sha256": "94dad59a9f5b5bf1b1e146586b25eeac65ba719150dcba38b742d2c32b0f85e9"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "76473401e27c87d5bec4c4ae87a06a65",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 317792,
            "upload_time": "2025-10-20T11:43:40",
            "upload_time_iso_8601": "2025-10-20T11:43:40.257509Z",
            "url": "https://files.pythonhosted.org/packages/09/61/1bc46106924bb81d1f8fd841a2cc29374263618f7646533b440831121a49/cachebox-5.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ef41913b808996ca016b4665aa91d40980b1e0a908c8667ec0d57472af5dc7f8",
                "md5": "258af72926cea1e193a5eb8114489cfc",
                "sha256": "6d5b2295a93c571f02d5a3914a2b2e87b067787dab088e6d2b6b168d52b60731"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "258af72926cea1e193a5eb8114489cfc",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 336754,
            "upload_time": "2025-10-20T11:43:52",
            "upload_time_iso_8601": "2025-10-20T11:43:52.300341Z",
            "url": "https://files.pythonhosted.org/packages/ef/41/913b808996ca016b4665aa91d40980b1e0a908c8667ec0d57472af5dc7f8/cachebox-5.0.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "71fdb18403c1c476dbd62ebb804ca1bd4253a09ba9e1a3954c3d9911f27d7717",
                "md5": "4397890302409346ee7b3ad8cca7952d",
                "sha256": "75b3ee09ce83be44e6d63cd0b687631759653be7d0fa5278f39950db3339072d"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "4397890302409346ee7b3ad8cca7952d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 364532,
            "upload_time": "2025-10-20T11:44:02",
            "upload_time_iso_8601": "2025-10-20T11:44:02.110004Z",
            "url": "https://files.pythonhosted.org/packages/71/fd/b18403c1c476dbd62ebb804ca1bd4253a09ba9e1a3954c3d9911f27d7717/cachebox-5.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b827504c06afbb09fdfedf01e13e82537e41f9088a47d674dd15a95decc7ca20",
                "md5": "1819a41426edb30f463e5c9ade6c9d5c",
                "sha256": "a5327317119f3ee06b46f95b2117e2b235730938e1324c303b8648edbf48e801"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "1819a41426edb30f463e5c9ade6c9d5c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 392356,
            "upload_time": "2025-10-20T11:44:12",
            "upload_time_iso_8601": "2025-10-20T11:44:12.669737Z",
            "url": "https://files.pythonhosted.org/packages/b8/27/504c06afbb09fdfedf01e13e82537e41f9088a47d674dd15a95decc7ca20/cachebox-5.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fc9fd65f9a88eed05ab522ce8e01ccd959ae27d6ed09f56c28e3be7d6e98e0e5",
                "md5": "3fa5a9834e93c9b526e2b1cf4d162d94",
                "sha256": "fe3f52a7e222bb71c89c171a18b392ef1e3c44b155f5d3cbdf48fffc16c77ea3"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3fa5a9834e93c9b526e2b1cf4d162d94",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 334101,
            "upload_time": "2025-10-20T11:44:33",
            "upload_time_iso_8601": "2025-10-20T11:44:33.913968Z",
            "url": "https://files.pythonhosted.org/packages/fc/9f/d65f9a88eed05ab522ce8e01ccd959ae27d6ed09f56c28e3be7d6e98e0e5/cachebox-5.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "654056a7c905c8bed0ea2f419ea8a951b005703fbb7182f43b69d389f16760d0",
                "md5": "9a30284ff8a351fcc41c8ef2f64c5bf8",
                "sha256": "0b65ba8e258301cad2cb6d03216a3222746d6fe115db326ed8507bdb28036295"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "9a30284ff8a351fcc41c8ef2f64c5bf8",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 359248,
            "upload_time": "2025-10-20T11:44:24",
            "upload_time_iso_8601": "2025-10-20T11:44:24.075628Z",
            "url": "https://files.pythonhosted.org/packages/65/40/56a7c905c8bed0ea2f419ea8a951b005703fbb7182f43b69d389f16760d0/cachebox-5.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fc29d0484bd57bc416e933e5b35b566f1d2b99f3cd0a983a77bc29ce41b0234b",
                "md5": "911b4de983653f1e68fc0244ec4e5ead",
                "sha256": "422869604e7a73430fa148446d66c9e75ef29821b6908c79f9a60d76047e2631"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "911b4de983653f1e68fc0244ec4e5ead",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 499401,
            "upload_time": "2025-10-20T11:45:03",
            "upload_time_iso_8601": "2025-10-20T11:45:03.605160Z",
            "url": "https://files.pythonhosted.org/packages/fc/29/d0484bd57bc416e933e5b35b566f1d2b99f3cd0a983a77bc29ce41b0234b/cachebox-5.0.4-cp310-cp310-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2bb879c20ac072d5f427c23e3bd603a0472ef7db8d10c70de80ff86948d67256",
                "md5": "1e323a3b40cc88b6a2db44d1d049721a",
                "sha256": "309d7ccc97c8661d95c6a4e9e6e31ed9dfad8cd2e3a6930d09868239aebde382"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "1e323a3b40cc88b6a2db44d1d049721a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 602919,
            "upload_time": "2025-10-20T11:45:15",
            "upload_time_iso_8601": "2025-10-20T11:45:15.189131Z",
            "url": "https://files.pythonhosted.org/packages/2b/b8/79c20ac072d5f427c23e3bd603a0472ef7db8d10c70de80ff86948d67256/cachebox-5.0.4-cp310-cp310-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "69cfc9039de1a808bd98274e35123c184dbe2697f203b2072f9a061a19bbf2b9",
                "md5": "26c11d8bdcc2828a0f162ec74c838848",
                "sha256": "51f42b26c5dfdbe2825f1a7424a2ccff7c4fa542ca9dd7641f95abc5d0d3bcca"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "26c11d8bdcc2828a0f162ec74c838848",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 533197,
            "upload_time": "2025-10-20T11:45:26",
            "upload_time_iso_8601": "2025-10-20T11:45:26.969934Z",
            "url": "https://files.pythonhosted.org/packages/69/cf/c9039de1a808bd98274e35123c184dbe2697f203b2072f9a061a19bbf2b9/cachebox-5.0.4-cp310-cp310-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "86c3f1ff114a0423375de88cd611cf09f9ba2e34a1cf97142a4dbaa037f5f51a",
                "md5": "9b4ef179565016da8c41214a984bbb43",
                "sha256": "635ac338a1a6547bd2f591ed2ccc40c63fc0977029c24711594803a0b964685a"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9b4ef179565016da8c41214a984bbb43",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 509186,
            "upload_time": "2025-10-20T11:45:38",
            "upload_time_iso_8601": "2025-10-20T11:45:38.216302Z",
            "url": "https://files.pythonhosted.org/packages/86/c3/f1ff114a0423375de88cd611cf09f9ba2e34a1cf97142a4dbaa037f5f51a/cachebox-5.0.4-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b8fd08767b876194c57b94a69acdd790af4ddbfad930c23bb56ac6b97dff3b54",
                "md5": "6af3bcadc99feebda00b6686071268c8",
                "sha256": "50c09f9edaf1c41e0ca9cbbf2e3782a057f1f4d7e25246f48f4949d734de47d5"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "6af3bcadc99feebda00b6686071268c8",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 233739,
            "upload_time": "2025-10-20T11:46:02",
            "upload_time_iso_8601": "2025-10-20T11:46:02.181589Z",
            "url": "https://files.pythonhosted.org/packages/b8/fd/08767b876194c57b94a69acdd790af4ddbfad930c23bb56ac6b97dff3b54/cachebox-5.0.4-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "604a7845490f7ae24e264d83fdbc895d9e526d49584b858eae80d8e005d85c17",
                "md5": "7c3edf497c0dba481cf14bef3ab63ecb",
                "sha256": "41d6e8bf94e2242dfd82d964fcaf874751467ae93a076e96714e355060fe1b19"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "7c3edf497c0dba481cf14bef3ab63ecb",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 231887,
            "upload_time": "2025-10-20T11:45:49",
            "upload_time_iso_8601": "2025-10-20T11:45:49.681931Z",
            "url": "https://files.pythonhosted.org/packages/60/4a/7845490f7ae24e264d83fdbc895d9e526d49584b858eae80d8e005d85c17/cachebox-5.0.4-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c7a29b978361dcbf7c3bb94d0d9f61d06c07205d123d45977f214186de0e8c7f",
                "md5": "0c346f2086b7888c06aaf9d02abf1495",
                "sha256": "e0f9779536aedf8beb65dd4e7018b76ff0aa39432d3ca13cd5589a3e4ad5ef8a"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0c346f2086b7888c06aaf9d02abf1495",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 322481,
            "upload_time": "2025-10-20T11:44:54",
            "upload_time_iso_8601": "2025-10-20T11:44:54.935455Z",
            "url": "https://files.pythonhosted.org/packages/c7/a2/9b978361dcbf7c3bb94d0d9f61d06c07205d123d45977f214186de0e8c7f/cachebox-5.0.4-cp311-cp311-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3b9e18fe364d7220734a06e07f4a62ad6163132828fb1d82b333c0a86139eaee",
                "md5": "e12b445ada61979e351de38a6ea986e0",
                "sha256": "c40c369fef589104c8168b2fcc4afaeb46cb688939d5b79d41aa2cc82afb9186"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "e12b445ada61979e351de38a6ea986e0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 297388,
            "upload_time": "2025-10-20T11:44:45",
            "upload_time_iso_8601": "2025-10-20T11:44:45.008971Z",
            "url": "https://files.pythonhosted.org/packages/3b/9e/18fe364d7220734a06e07f4a62ad6163132828fb1d82b333c0a86139eaee/cachebox-5.0.4-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ea6bf6fbc03f2f391ed23407a29fb63b1858680042339effb9d804a2fa4806c6",
                "md5": "7dcf3d64abab257eddad18528c22d364",
                "sha256": "5e5bed1287b8e68e83d21cc848c47c22ac8e1dd48b72a3afa3bd1f74b3b44169"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "7dcf3d64abab257eddad18528c22d364",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 317720,
            "upload_time": "2025-10-20T11:43:42",
            "upload_time_iso_8601": "2025-10-20T11:43:42.603311Z",
            "url": "https://files.pythonhosted.org/packages/ea/6b/f6fbc03f2f391ed23407a29fb63b1858680042339effb9d804a2fa4806c6/cachebox-5.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "91ce5d853ff7f0aab9875bddfdac0b1bf344adb0b592b51b83db19e1c7b36ab1",
                "md5": "fb20c9b84b21a11760c301d7d849309a",
                "sha256": "ae621d4e9740cb5edcbfbdc4ab15ca8c4f4bcb3e56318584174101debd4b064c"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "fb20c9b84b21a11760c301d7d849309a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 336948,
            "upload_time": "2025-10-20T11:43:53",
            "upload_time_iso_8601": "2025-10-20T11:43:53.335024Z",
            "url": "https://files.pythonhosted.org/packages/91/ce/5d853ff7f0aab9875bddfdac0b1bf344adb0b592b51b83db19e1c7b36ab1/cachebox-5.0.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "34cb371664922fe2b988f9c8f719633bdddb62fbc8662f1421d1ae36a28a76f0",
                "md5": "f82831504c24374aeadd292f489c1603",
                "sha256": "689693e5fbee8efb16a060e753f0c2e381670ec0e03688152fe0dfc7b245f4af"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "f82831504c24374aeadd292f489c1603",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 364572,
            "upload_time": "2025-10-20T11:44:03",
            "upload_time_iso_8601": "2025-10-20T11:44:03.219934Z",
            "url": "https://files.pythonhosted.org/packages/34/cb/371664922fe2b988f9c8f719633bdddb62fbc8662f1421d1ae36a28a76f0/cachebox-5.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "18db384f773c8f0c7a2e676b82ff52ab7978263173cc280ea3963a4d3dc4737c",
                "md5": "efe84ec630d589a448e6b699315b2016",
                "sha256": "5625a8a94a0e69c1da3e0b11209fcab92383f0702584fdf9f15a502bb8bcd58a"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "efe84ec630d589a448e6b699315b2016",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 392182,
            "upload_time": "2025-10-20T11:44:14",
            "upload_time_iso_8601": "2025-10-20T11:44:14.438697Z",
            "url": "https://files.pythonhosted.org/packages/18/db/384f773c8f0c7a2e676b82ff52ab7978263173cc280ea3963a4d3dc4737c/cachebox-5.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4bbeed91a96aefe4f1ddea53b67aebab2ec7ef8f48465966843ba31eda2f11ac",
                "md5": "b57c4a5485b45d07e3edf3de1f086f88",
                "sha256": "575918212dd1a4136b79409f2660c5fbd0567fa412a54532c6b66248d30ed399"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b57c4a5485b45d07e3edf3de1f086f88",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 334064,
            "upload_time": "2025-10-20T11:44:35",
            "upload_time_iso_8601": "2025-10-20T11:44:35.106777Z",
            "url": "https://files.pythonhosted.org/packages/4b/be/ed91a96aefe4f1ddea53b67aebab2ec7ef8f48465966843ba31eda2f11ac/cachebox-5.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0d5ecfbb62dda114572e0b858ee269a89c0dfcb03f0390a51df2677a4799adf6",
                "md5": "74a4d81bf0d04fa6f9940a04a64209d7",
                "sha256": "c25c0cae9c925bf898e71feadc2c55f389bc16ee361c852ac579e3aacacc2a8e"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "74a4d81bf0d04fa6f9940a04a64209d7",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 359184,
            "upload_time": "2025-10-20T11:44:25",
            "upload_time_iso_8601": "2025-10-20T11:44:25.217272Z",
            "url": "https://files.pythonhosted.org/packages/0d/5e/cfbb62dda114572e0b858ee269a89c0dfcb03f0390a51df2677a4799adf6/cachebox-5.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c0850fc256b3f8c87d8aa2ab5630cbba2b6bb32ce720d5942bdced5b8b23cbe4",
                "md5": "89b7b0755099ed1044cbf8c66e1283c8",
                "sha256": "54ae01336608670761466e4b0e24d7b1c1b5388f020bed3e762b077b49439050"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "89b7b0755099ed1044cbf8c66e1283c8",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 499350,
            "upload_time": "2025-10-20T11:45:04",
            "upload_time_iso_8601": "2025-10-20T11:45:04.751725Z",
            "url": "https://files.pythonhosted.org/packages/c0/85/0fc256b3f8c87d8aa2ab5630cbba2b6bb32ce720d5942bdced5b8b23cbe4/cachebox-5.0.4-cp311-cp311-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c51f40f2f1b190dc86d2fb631c52edef895a22e35984840c7b96dac2819503bc",
                "md5": "14372a5abac501d2ee93e6efa0a1ae95",
                "sha256": "be1fc4fe664ce08abbbaf6ba1d5ff5d5a4395642d6c61f72b5504678a4ccf6a1"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "14372a5abac501d2ee93e6efa0a1ae95",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 603118,
            "upload_time": "2025-10-20T11:45:16",
            "upload_time_iso_8601": "2025-10-20T11:45:16.994895Z",
            "url": "https://files.pythonhosted.org/packages/c5/1f/40f2f1b190dc86d2fb631c52edef895a22e35984840c7b96dac2819503bc/cachebox-5.0.4-cp311-cp311-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a4a2306dd19ad09bcff02e70e53a07a22a27163a90756546b54606396aa5db49",
                "md5": "b5d9a8db581ea05f61e24ee8d9fbc1d9",
                "sha256": "27b8c940cb587cc9ef86c0360c0a3ca3ccbeb3d48fde2c808863800aa424000b"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "b5d9a8db581ea05f61e24ee8d9fbc1d9",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 533187,
            "upload_time": "2025-10-20T11:45:28",
            "upload_time_iso_8601": "2025-10-20T11:45:28.342555Z",
            "url": "https://files.pythonhosted.org/packages/a4/a2/306dd19ad09bcff02e70e53a07a22a27163a90756546b54606396aa5db49/cachebox-5.0.4-cp311-cp311-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5f27f8925d3bad7b1b46408645b230acf0b9f2c951c7e5c27940cd164035d425",
                "md5": "ecc295c3a564a824481058d5a36d1ec2",
                "sha256": "a63613e627dd6025981e53075df04b9abbf92f1eca99460cc3b64c77f6c8bf5e"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ecc295c3a564a824481058d5a36d1ec2",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 509087,
            "upload_time": "2025-10-20T11:45:39",
            "upload_time_iso_8601": "2025-10-20T11:45:39.396723Z",
            "url": "https://files.pythonhosted.org/packages/5f/27/f8925d3bad7b1b46408645b230acf0b9f2c951c7e5c27940cd164035d425/cachebox-5.0.4-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6412cf4c087a5e49b6d6ba201e21e2099f20bca2b67b422b1392075c8552544e",
                "md5": "905da4ffbfac5cf969acea5ef3d41a90",
                "sha256": "fa9c27d8ae8a969907a5f9497587149220aea777dfe67bdd1bbaea19c67d60dd"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "905da4ffbfac5cf969acea5ef3d41a90",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 233793,
            "upload_time": "2025-10-20T11:46:03",
            "upload_time_iso_8601": "2025-10-20T11:46:03.330097Z",
            "url": "https://files.pythonhosted.org/packages/64/12/cf4c087a5e49b6d6ba201e21e2099f20bca2b67b422b1392075c8552544e/cachebox-5.0.4-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7bb52e061066e58b79dce5f70d365a6b9999593d0e08a7a76ae57121c98a226c",
                "md5": "232a45451b6e9de79c871265ec8be201",
                "sha256": "0a6f233fc6f9692bf7ba44b6dc38ee1884b70d68f4e2fb8e71757ac7eef4b4d9"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "232a45451b6e9de79c871265ec8be201",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 231779,
            "upload_time": "2025-10-20T11:45:50",
            "upload_time_iso_8601": "2025-10-20T11:45:50.952336Z",
            "url": "https://files.pythonhosted.org/packages/7b/b5/2e061066e58b79dce5f70d365a6b9999593d0e08a7a76ae57121c98a226c/cachebox-5.0.4-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1f262cfef717c63b741205e977b49ca8a2939ddde307b28317353266a060fec6",
                "md5": "ade66602e20075439b933d9eab0bc1c6",
                "sha256": "ee28d08373d6d5bc72e2ea638d6cca05298abc13ca2057538149901b5d7f9ff2"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ade66602e20075439b933d9eab0bc1c6",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 325915,
            "upload_time": "2025-10-20T11:44:56",
            "upload_time_iso_8601": "2025-10-20T11:44:56.472496Z",
            "url": "https://files.pythonhosted.org/packages/1f/26/2cfef717c63b741205e977b49ca8a2939ddde307b28317353266a060fec6/cachebox-5.0.4-cp312-cp312-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8a135cfa4300e8dfdd0ee9ae02acf1a5f0347472167c10766afcaebb1eee7205",
                "md5": "b55486c4a2dffa2f894dfd08182aefd8",
                "sha256": "53d8c4c52c21568046ca1e93e9633a16ae63f957ff9e081a0bbf5ad124922d12"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "b55486c4a2dffa2f894dfd08182aefd8",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 298658,
            "upload_time": "2025-10-20T11:44:46",
            "upload_time_iso_8601": "2025-10-20T11:44:46.226172Z",
            "url": "https://files.pythonhosted.org/packages/8a/13/5cfa4300e8dfdd0ee9ae02acf1a5f0347472167c10766afcaebb1eee7205/cachebox-5.0.4-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c1bd4ffb3b87117092e4f72a1f5406ec118e951458c50aa2c7106fdf9a12b10d",
                "md5": "efcc46b23bf2fc475f4761d764d095bc",
                "sha256": "c37659bcc37fd595192e58f1f02b09e29e103656280457f703597c8fe42f7f87"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "efcc46b23bf2fc475f4761d764d095bc",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 320314,
            "upload_time": "2025-10-20T11:43:43",
            "upload_time_iso_8601": "2025-10-20T11:43:43.652436Z",
            "url": "https://files.pythonhosted.org/packages/c1/bd/4ffb3b87117092e4f72a1f5406ec118e951458c50aa2c7106fdf9a12b10d/cachebox-5.0.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2ebcfc61f8f5cf045dfd26aca0a63401c36b00049753780fc2c084cd8dbf8e23",
                "md5": "ff1b565af4869570be54ba17cf0f5e14",
                "sha256": "ddb539fdf0dbbd38d7301497566d71f297338c8afd5639612366244f15603d86"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "ff1b565af4869570be54ba17cf0f5e14",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 336543,
            "upload_time": "2025-10-20T11:43:54",
            "upload_time_iso_8601": "2025-10-20T11:43:54.413411Z",
            "url": "https://files.pythonhosted.org/packages/2e/bc/fc61f8f5cf045dfd26aca0a63401c36b00049753780fc2c084cd8dbf8e23/cachebox-5.0.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c6b689c0c6d8d2825464b9e58d1c6b8a5c92af2ca9826213f398077dfaa292e3",
                "md5": "37b898a333a1bacdfd1e46c4edbcb378",
                "sha256": "e44d23c7c12ff25c7753cb2a6ca74594430d7b525fd70f6069bf700c654a2377"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "37b898a333a1bacdfd1e46c4edbcb378",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 377515,
            "upload_time": "2025-10-20T11:44:04",
            "upload_time_iso_8601": "2025-10-20T11:44:04.706527Z",
            "url": "https://files.pythonhosted.org/packages/c6/b6/89c0c6d8d2825464b9e58d1c6b8a5c92af2ca9826213f398077dfaa292e3/cachebox-5.0.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "13aea5249520db03056940cb4d3dd8df17fe9a01408c5a9fa73e126b5ed939c9",
                "md5": "a05fa1c87b235008d0084d2f8b1caec6",
                "sha256": "85b3e17f3939ef672324dae8c5de1ca2bf00b23d2667e908021c0229953d485f"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "a05fa1c87b235008d0084d2f8b1caec6",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 396187,
            "upload_time": "2025-10-20T11:44:15",
            "upload_time_iso_8601": "2025-10-20T11:44:15.458997Z",
            "url": "https://files.pythonhosted.org/packages/13/ae/a5249520db03056940cb4d3dd8df17fe9a01408c5a9fa73e126b5ed939c9/cachebox-5.0.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f3ed10ec2c39a2d7ce620bc07accffa619cc35c81099d970d8413db400207dfd",
                "md5": "ea8e4db9838a1cb7b54ecc25e0f40abf",
                "sha256": "b02d7daf8fc67bad2ce0ce83ca2633deacf5aabb7114e5af8dcd8735a75a8af7"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ea8e4db9838a1cb7b54ecc25e0f40abf",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 338544,
            "upload_time": "2025-10-20T11:44:36",
            "upload_time_iso_8601": "2025-10-20T11:44:36.295447Z",
            "url": "https://files.pythonhosted.org/packages/f3/ed/10ec2c39a2d7ce620bc07accffa619cc35c81099d970d8413db400207dfd/cachebox-5.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f0a5403275a74f9a4e469924057b5e323c1087eb3b885fe2d88a77903103d860",
                "md5": "7bea09abc8d9cf66f2621db805d9da97",
                "sha256": "4bdfd29c357cff4d56169688cb3c9823d19812870c5c979ea7ec2bc5e0617ddf"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "7bea09abc8d9cf66f2621db805d9da97",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 371747,
            "upload_time": "2025-10-20T11:44:26",
            "upload_time_iso_8601": "2025-10-20T11:44:26.365494Z",
            "url": "https://files.pythonhosted.org/packages/f0/a5/403275a74f9a4e469924057b5e323c1087eb3b885fe2d88a77903103d860/cachebox-5.0.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "77d8fbb9d1bbdc04cb4176ad051404a08f59ce15ee8e2c7dd50494fa840d781f",
                "md5": "b729a766f97fd51844773db90d99d34a",
                "sha256": "49791853d56c261f907eab62a499342ebe40d4dbe4be4d1705c315d8e7d45a9e"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "b729a766f97fd51844773db90d99d34a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 501795,
            "upload_time": "2025-10-20T11:45:06",
            "upload_time_iso_8601": "2025-10-20T11:45:06.223828Z",
            "url": "https://files.pythonhosted.org/packages/77/d8/fbb9d1bbdc04cb4176ad051404a08f59ce15ee8e2c7dd50494fa840d781f/cachebox-5.0.4-cp312-cp312-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "51084ba1d4cfcc3e10e6ad708965d2d370045aec24cf9db4ca0f06ff83c5b8a4",
                "md5": "8765be202bc3e8cd84aadd0222e03d1a",
                "sha256": "85c3d1fbeb9730f18257951498e6515263732bc823d1e06f001ac249b8a8a9e2"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "8765be202bc3e8cd84aadd0222e03d1a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 603643,
            "upload_time": "2025-10-20T11:45:18",
            "upload_time_iso_8601": "2025-10-20T11:45:18.514108Z",
            "url": "https://files.pythonhosted.org/packages/51/08/4ba1d4cfcc3e10e6ad708965d2d370045aec24cf9db4ca0f06ff83c5b8a4/cachebox-5.0.4-cp312-cp312-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "65740526cebb30576bf35d641fa83c82938ac06a452758e91c02d4701e7fd887",
                "md5": "f35bdfe66ce32f70b1661a997a7841da",
                "sha256": "4a13e52933e73f308bf89e00c7ccd776124695703c4f893a0a0f3c7cd37eb71f"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "f35bdfe66ce32f70b1661a997a7841da",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 548231,
            "upload_time": "2025-10-20T11:45:29",
            "upload_time_iso_8601": "2025-10-20T11:45:29.611030Z",
            "url": "https://files.pythonhosted.org/packages/65/74/0526cebb30576bf35d641fa83c82938ac06a452758e91c02d4701e7fd887/cachebox-5.0.4-cp312-cp312-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d2ea2485ea2fbd715aea022fac3d435b5c6d64344bbba7b03a0425ed5742ef15",
                "md5": "e4e46746b05f0b1dc3a04206b3afa2a1",
                "sha256": "8ea55814ac67c6cd856109551f0a54edc048b754bd6090fbb57ad8886cbe0f4b"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e4e46746b05f0b1dc3a04206b3afa2a1",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 514733,
            "upload_time": "2025-10-20T11:45:40",
            "upload_time_iso_8601": "2025-10-20T11:45:40.673869Z",
            "url": "https://files.pythonhosted.org/packages/d2/ea/2485ea2fbd715aea022fac3d435b5c6d64344bbba7b03a0425ed5742ef15/cachebox-5.0.4-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "147762bb05a1adff6ca2699909cee0d752ab5946dec111f1a46fa35653835a70",
                "md5": "e93d8e3ad797e9840d84226e1d974ad3",
                "sha256": "37d206873e0aad1b5aef2ee4eae529c7aabf68a4ca0a15cd1510b194de9fb973"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "e93d8e3ad797e9840d84226e1d974ad3",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 240959,
            "upload_time": "2025-10-20T11:46:04",
            "upload_time_iso_8601": "2025-10-20T11:46:04.948938Z",
            "url": "https://files.pythonhosted.org/packages/14/77/62bb05a1adff6ca2699909cee0d752ab5946dec111f1a46fa35653835a70/cachebox-5.0.4-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e5c65ea0f943b4d1e0aafcf8dba1d7a5ddcaad39a220af17272efbcfd30ea7db",
                "md5": "ce3984c37669693336ec09123a824ec4",
                "sha256": "62d04ddda8da571ce2fc8836ae7735d92595169852542a05bb12dfd1c4ab14d4"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "ce3984c37669693336ec09123a824ec4",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 235199,
            "upload_time": "2025-10-20T11:45:53",
            "upload_time_iso_8601": "2025-10-20T11:45:53.944597Z",
            "url": "https://files.pythonhosted.org/packages/e5/c6/5ea0f943b4d1e0aafcf8dba1d7a5ddcaad39a220af17272efbcfd30ea7db/cachebox-5.0.4-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4142850f2b344151fadcff0121b5192adf222a0ba40d255497e1722016119632",
                "md5": "9b070e21ef0386af1064643e739f1b7b",
                "sha256": "aa867c2724cbefd53befab7fdbaf12fef5e95d52287235ee82bb716da305aa97"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9b070e21ef0386af1064643e739f1b7b",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 325661,
            "upload_time": "2025-10-20T11:44:57",
            "upload_time_iso_8601": "2025-10-20T11:44:57.714740Z",
            "url": "https://files.pythonhosted.org/packages/41/42/850f2b344151fadcff0121b5192adf222a0ba40d255497e1722016119632/cachebox-5.0.4-cp313-cp313-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c086e1cc49128cbc90ca13b818fb97f03de5828d10f3aab00a2aca3fefe44a8b",
                "md5": "12e5bd5b9e6e0889e4c56c9ad06efc2f",
                "sha256": "7a6d76a74190921ac691b080962e46d21c348c7fd940a671d720bb7fa79b6a99"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "12e5bd5b9e6e0889e4c56c9ad06efc2f",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 298445,
            "upload_time": "2025-10-20T11:44:47",
            "upload_time_iso_8601": "2025-10-20T11:44:47.383893Z",
            "url": "https://files.pythonhosted.org/packages/c0/86/e1cc49128cbc90ca13b818fb97f03de5828d10f3aab00a2aca3fefe44a8b/cachebox-5.0.4-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3c1d36c75f3fb78228c5cba2f6d87a588d0cca1fa92ba740663e831269686402",
                "md5": "95bbed0be626a750adc07c7d6e022d37",
                "sha256": "3c852a9c9a8819fc3f6bb1833b7017f5b9a7b0c558b6da3534087cf5dd1581b7"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "95bbed0be626a750adc07c7d6e022d37",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 320150,
            "upload_time": "2025-10-20T11:43:44",
            "upload_time_iso_8601": "2025-10-20T11:43:44.699690Z",
            "url": "https://files.pythonhosted.org/packages/3c/1d/36c75f3fb78228c5cba2f6d87a588d0cca1fa92ba740663e831269686402/cachebox-5.0.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "adc52ce11f82ba4d80b4d84a087e89659131f0b9fd19ef96988fbb44035e9cb6",
                "md5": "7ca0ee16c9f36ef83915c446d5cbc7a7",
                "sha256": "095fbf1653e36281ccccda6f8cc96c146b013b8c6dd37b2efc7a9223eb248072"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "7ca0ee16c9f36ef83915c446d5cbc7a7",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 336082,
            "upload_time": "2025-10-20T11:43:55",
            "upload_time_iso_8601": "2025-10-20T11:43:55.879553Z",
            "url": "https://files.pythonhosted.org/packages/ad/c5/2ce11f82ba4d80b4d84a087e89659131f0b9fd19ef96988fbb44035e9cb6/cachebox-5.0.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ba8e6991e9ab9ea8a285335865924ab62cc11ca950f3dca49e6467901c6b48c0",
                "md5": "d49d6a96b853afd8776390d292f141be",
                "sha256": "800dceaf5d4a88595e320bac6515abb470dbfe48877ae9c6cc4bd11971003423"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "d49d6a96b853afd8776390d292f141be",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 377353,
            "upload_time": "2025-10-20T11:44:06",
            "upload_time_iso_8601": "2025-10-20T11:44:06.371928Z",
            "url": "https://files.pythonhosted.org/packages/ba/8e/6991e9ab9ea8a285335865924ab62cc11ca950f3dca49e6467901c6b48c0/cachebox-5.0.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7e220d299132a849704ecbb4963c15df88ad263c20757fdc7b14c5deaff55261",
                "md5": "ea32324e855cc88d563f112126a43936",
                "sha256": "4aadf3c91f6868d678b4936e28b2b85124473053214cbcd1200fca8cdf3595b2"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "ea32324e855cc88d563f112126a43936",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 396076,
            "upload_time": "2025-10-20T11:44:17",
            "upload_time_iso_8601": "2025-10-20T11:44:17.352520Z",
            "url": "https://files.pythonhosted.org/packages/7e/22/0d299132a849704ecbb4963c15df88ad263c20757fdc7b14c5deaff55261/cachebox-5.0.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "37fc0e3ff6dff698b22634eab7ea994bfea387e0ec09cd020f2de676098aa72e",
                "md5": "c3b65be36ad908d1738801ae52fa5424",
                "sha256": "d0026f6d4cf8a6a263c9378ff2d0c467c5c8cf1177d8d3fd89f011fe49aa0286"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c3b65be36ad908d1738801ae52fa5424",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 338337,
            "upload_time": "2025-10-20T11:44:37",
            "upload_time_iso_8601": "2025-10-20T11:44:37.473034Z",
            "url": "https://files.pythonhosted.org/packages/37/fc/0e3ff6dff698b22634eab7ea994bfea387e0ec09cd020f2de676098aa72e/cachebox-5.0.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "261daf27cee16b7bfbdcfccd91aaefc6d9c8bb2e608fb79abab9a40fd4097008",
                "md5": "265d2a485a5bbdc96468cbc0c1e02e32",
                "sha256": "f7c13a9e4a03c500d858cdc23b468f38a22c7bc89305231861731b462d450678"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "265d2a485a5bbdc96468cbc0c1e02e32",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 371588,
            "upload_time": "2025-10-20T11:44:27",
            "upload_time_iso_8601": "2025-10-20T11:44:27.790573Z",
            "url": "https://files.pythonhosted.org/packages/26/1d/af27cee16b7bfbdcfccd91aaefc6d9c8bb2e608fb79abab9a40fd4097008/cachebox-5.0.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "62e10f9f1e9121dad0332d8d98e3b76fc1e0daad914fa255407faa6e5182d813",
                "md5": "6ff5fb598ea8729cca32b1e92c0d3c63",
                "sha256": "85cfd6569f42be0d6b8047ff713817644d54a4ccc45df80a8e6190d094b70a4b"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "6ff5fb598ea8729cca32b1e92c0d3c63",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 501606,
            "upload_time": "2025-10-20T11:45:07",
            "upload_time_iso_8601": "2025-10-20T11:45:07.735934Z",
            "url": "https://files.pythonhosted.org/packages/62/e1/0f9f1e9121dad0332d8d98e3b76fc1e0daad914fa255407faa6e5182d813/cachebox-5.0.4-cp313-cp313-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2d06d95e4ecf23d87b7a60d201299771981f0f27fe3189ea8ce0f72c56ced9e4",
                "md5": "6b652517b89b2fdc43b5b815c085945a",
                "sha256": "d8f7bbcb3a5899de88b5b1508f25e373d32a20bf26728fb32f1c909882d124cb"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "6b652517b89b2fdc43b5b815c085945a",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 603245,
            "upload_time": "2025-10-20T11:45:20",
            "upload_time_iso_8601": "2025-10-20T11:45:20.025747Z",
            "url": "https://files.pythonhosted.org/packages/2d/06/d95e4ecf23d87b7a60d201299771981f0f27fe3189ea8ce0f72c56ced9e4/cachebox-5.0.4-cp313-cp313-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "73072c57ec935b1d208b66d751ba40df0a9a6724d14e31b00ca054f784562e78",
                "md5": "925bc8ab494d9e21dbeebf933c32c0d0",
                "sha256": "c87412ea4caae948d55d7d89f4edcf7183ce1f9a832867be8e824bc21afbf2ed"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "925bc8ab494d9e21dbeebf933c32c0d0",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 547991,
            "upload_time": "2025-10-20T11:45:30",
            "upload_time_iso_8601": "2025-10-20T11:45:30.942499Z",
            "url": "https://files.pythonhosted.org/packages/73/07/2c57ec935b1d208b66d751ba40df0a9a6724d14e31b00ca054f784562e78/cachebox-5.0.4-cp313-cp313-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8f18373790bb6c447a76909e930b5290568936557730c42c2e0ae90eda54df11",
                "md5": "9a9af0cfdc8cdc2765f7b5f7114d4d2d",
                "sha256": "71fe906eaf6cfad228b9d4537187ab1746dc2d78950f84fcc216bdf3c2a01671"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9a9af0cfdc8cdc2765f7b5f7114d4d2d",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 514430,
            "upload_time": "2025-10-20T11:45:42",
            "upload_time_iso_8601": "2025-10-20T11:45:42.138220Z",
            "url": "https://files.pythonhosted.org/packages/8f/18/373790bb6c447a76909e930b5290568936557730c42c2e0ae90eda54df11/cachebox-5.0.4-cp313-cp313-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3b105ffd61344c7736907769f6d40b7af1ef17dd3ecec05eb731da0445f7a09d",
                "md5": "42a3118c8603e6c2f0497a22e5d95b7a",
                "sha256": "0f9ddc3e71d97709475ccee2069259f2e57aaeb575e207e9fe64f7abb8dd55fe"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "42a3118c8603e6c2f0497a22e5d95b7a",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 330618,
            "upload_time": "2025-10-20T11:44:58",
            "upload_time_iso_8601": "2025-10-20T11:44:58.853509Z",
            "url": "https://files.pythonhosted.org/packages/3b/10/5ffd61344c7736907769f6d40b7af1ef17dd3ecec05eb731da0445f7a09d/cachebox-5.0.4-cp313-cp313t-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c0e2311408f62acca4dfa056824dabb839ab79da94c7652bd45b0aebe868afae",
                "md5": "d2fea2dd7b8584638255cb8677d144c4",
                "sha256": "f8cd01562d56728f61c3873dd50a82afbaba27acce460c4f5cc325a1eee88fb8"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d2fea2dd7b8584638255cb8677d144c4",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 301018,
            "upload_time": "2025-10-20T11:44:48",
            "upload_time_iso_8601": "2025-10-20T11:44:48.588966Z",
            "url": "https://files.pythonhosted.org/packages/c0/e2/311408f62acca4dfa056824dabb839ab79da94c7652bd45b0aebe868afae/cachebox-5.0.4-cp313-cp313t-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3d5ab0aa1b6f69e9167e2773ebc7c261b7679ddf9a4fd951a3079ccc9e5f1361",
                "md5": "3ed4451c134aeb7ca8b4b05117950a7a",
                "sha256": "a724a30a9bbd5d6e92c05bb047070c44e9465d1a66a90fef4b85a2c9fb9469b8"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "3ed4451c134aeb7ca8b4b05117950a7a",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 320764,
            "upload_time": "2025-10-20T11:43:45",
            "upload_time_iso_8601": "2025-10-20T11:43:45.905306Z",
            "url": "https://files.pythonhosted.org/packages/3d/5a/b0aa1b6f69e9167e2773ebc7c261b7679ddf9a4fd951a3079ccc9e5f1361/cachebox-5.0.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2d05cccaed576629b933d3779cbd9344441af63f3c2415ade6047cadbbba9ea3",
                "md5": "9dc8ec66118b9d9a16abab75d06d7462",
                "sha256": "6f72e551747e615e656515bdb481cc81b69bdfbdba91c4761bc71bbd4888108d"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "9dc8ec66118b9d9a16abab75d06d7462",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 340421,
            "upload_time": "2025-10-20T11:43:56",
            "upload_time_iso_8601": "2025-10-20T11:43:56.957892Z",
            "url": "https://files.pythonhosted.org/packages/2d/05/cccaed576629b933d3779cbd9344441af63f3c2415ade6047cadbbba9ea3/cachebox-5.0.4-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1033b160663d2872f8477cf685784dd82b008389bc490ac3fdd5fbdbd92454fa",
                "md5": "e195ff5feb7c4428f676b47c25ea9503",
                "sha256": "6a4ce2797175c571850d18211884d8ba8ac652fc8c4d8b02cccc9814ccbab3f7"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "e195ff5feb7c4428f676b47c25ea9503",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 362080,
            "upload_time": "2025-10-20T11:44:07",
            "upload_time_iso_8601": "2025-10-20T11:44:07.832126Z",
            "url": "https://files.pythonhosted.org/packages/10/33/b160663d2872f8477cf685784dd82b008389bc490ac3fdd5fbdbd92454fa/cachebox-5.0.4-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a47d8bba1402a916674563544fd6c995b1176a4a5b8931daf84058f969fa4274",
                "md5": "455aa11f24f530e2af006a8f7f9fb6f1",
                "sha256": "977a0f96176ded1d53633c72a9bc9a667d42c47299dfa7d75cea550bc4763e4f"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "455aa11f24f530e2af006a8f7f9fb6f1",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 393108,
            "upload_time": "2025-10-20T11:44:19",
            "upload_time_iso_8601": "2025-10-20T11:44:19.090837Z",
            "url": "https://files.pythonhosted.org/packages/a4/7d/8bba1402a916674563544fd6c995b1176a4a5b8931daf84058f969fa4274/cachebox-5.0.4-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3ed58a4c131e3d5fcc695807e7b993077aea0f9dea87af4cca25dcbdd708c389",
                "md5": "b771f12aab13b709adffc08762745cd9",
                "sha256": "910d8e1e373cb05d2300c20b3172e30a3d2595eaa39d91b91967820b4e618ebd"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b771f12aab13b709adffc08762745cd9",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 345524,
            "upload_time": "2025-10-20T11:44:38",
            "upload_time_iso_8601": "2025-10-20T11:44:38.711146Z",
            "url": "https://files.pythonhosted.org/packages/3e/d5/8a4c131e3d5fcc695807e7b993077aea0f9dea87af4cca25dcbdd708c389/cachebox-5.0.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1dde262e918339c4102a37a29052f6e826206a8eb7bf6ee0c12053ef08824e45",
                "md5": "24cff8e548a6b8c36eb69e1ec65c1b1e",
                "sha256": "70727158a7584cc2bb22cceecc28c4bb16204e79bd969a4cf1daf5541585f94c"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "24cff8e548a6b8c36eb69e1ec65c1b1e",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 368630,
            "upload_time": "2025-10-20T11:44:28",
            "upload_time_iso_8601": "2025-10-20T11:44:28.846269Z",
            "url": "https://files.pythonhosted.org/packages/1d/de/262e918339c4102a37a29052f6e826206a8eb7bf6ee0c12053ef08824e45/cachebox-5.0.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0f27f81053f9625bc620bb50bf81032dce1a9d5f3a676dd60540bfc520be3905",
                "md5": "95200b2274bd9d688519b9a56b583991",
                "sha256": "d2d7e01fc84f81c6bf6870c2aa7bca5aa2c01af80d65f94bd676acb87f251caf"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "95200b2274bd9d688519b9a56b583991",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 502151,
            "upload_time": "2025-10-20T11:45:08",
            "upload_time_iso_8601": "2025-10-20T11:45:08.950099Z",
            "url": "https://files.pythonhosted.org/packages/0f/27/f81053f9625bc620bb50bf81032dce1a9d5f3a676dd60540bfc520be3905/cachebox-5.0.4-cp313-cp313t-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "34ce11c624b00a80b8f525403fa359b24c1a0cb9fde703c0ba26af2afe8a5c99",
                "md5": "45832f669ed8e6480c5e90f8ba065fc6",
                "sha256": "c0edcfb10d31f4f06d825aef1f262f36a6280ca1bd6f816354ef583e83a17cc0"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "45832f669ed8e6480c5e90f8ba065fc6",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 606193,
            "upload_time": "2025-10-20T11:45:21",
            "upload_time_iso_8601": "2025-10-20T11:45:21.515200Z",
            "url": "https://files.pythonhosted.org/packages/34/ce/11c624b00a80b8f525403fa359b24c1a0cb9fde703c0ba26af2afe8a5c99/cachebox-5.0.4-cp313-cp313t-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2b9e2b9643876522f2c2d0cd6c4942873653551590c6ae3aa7e49ae78edb7f59",
                "md5": "b8d2e5550ae3e9a97b31bb2f2dec2995",
                "sha256": "12f227d090e32fd38bb235d71ada4396b31587a168ddf2b7f38e67d44a786618"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "b8d2e5550ae3e9a97b31bb2f2dec2995",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 544495,
            "upload_time": "2025-10-20T11:45:32",
            "upload_time_iso_8601": "2025-10-20T11:45:32.331113Z",
            "url": "https://files.pythonhosted.org/packages/2b/9e/2b9643876522f2c2d0cd6c4942873653551590c6ae3aa7e49ae78edb7f59/cachebox-5.0.4-cp313-cp313t-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "32cb33e023b1fb9a20f623d1466e713f00214afb798e3184d9f9c782d8ee9a13",
                "md5": "cb5213c7fb1828cb6aff341d37137155",
                "sha256": "2095f221ed61cfddeac6da99df35cc9248db405a91c283b2908ad1d98d1c1232"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "cb5213c7fb1828cb6aff341d37137155",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 520526,
            "upload_time": "2025-10-20T11:45:43",
            "upload_time_iso_8601": "2025-10-20T11:45:43.534572Z",
            "url": "https://files.pythonhosted.org/packages/32/cb/33e023b1fb9a20f623d1466e713f00214afb798e3184d9f9c782d8ee9a13/cachebox-5.0.4-cp313-cp313t-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a4b779860efa982f8038284121573e9a264326cea429e389f10734311892d9c0",
                "md5": "887009c79500550aec47086b74f5cb14",
                "sha256": "699cccfd8484e724bb8857cf12301348c9eac0af0e40aa7d63651c9c08541a2e"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-win32.whl",
            "has_sig": false,
            "md5_digest": "887009c79500550aec47086b74f5cb14",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 248654,
            "upload_time": "2025-10-20T11:46:07",
            "upload_time_iso_8601": "2025-10-20T11:46:07.958740Z",
            "url": "https://files.pythonhosted.org/packages/a4/b7/79860efa982f8038284121573e9a264326cea429e389f10734311892d9c0/cachebox-5.0.4-cp313-cp313t-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7ba9c3139b1e2325a525958816bca86339d1ba62ef0ae237a29cb080f6e61299",
                "md5": "1babc973a355aacab141856ea49c543f",
                "sha256": "f9f0528f664ade1d4c4d079235b37be33ec9f0bc9d92e43566b919ed40c5d5fe"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313t-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1babc973a355aacab141856ea49c543f",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 245394,
            "upload_time": "2025-10-20T11:45:56",
            "upload_time_iso_8601": "2025-10-20T11:45:56.624805Z",
            "url": "https://files.pythonhosted.org/packages/7b/a9/c3139b1e2325a525958816bca86339d1ba62ef0ae237a29cb080f6e61299/cachebox-5.0.4-cp313-cp313t-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fa0017824611ff3733e5e32641d3b7f7cb66e00bfe7cff95886a180b185f2773",
                "md5": "c8a27f883065d82c5f5c5a2b288a6ed1",
                "sha256": "49a0f20fac9af7887e0379d1a30c618b66dd44ddaecb14fe28a581dc1659a080"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-win32.whl",
            "has_sig": false,
            "md5_digest": "c8a27f883065d82c5f5c5a2b288a6ed1",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 240794,
            "upload_time": "2025-10-20T11:46:06",
            "upload_time_iso_8601": "2025-10-20T11:46:06.370113Z",
            "url": "https://files.pythonhosted.org/packages/fa/00/17824611ff3733e5e32641d3b7f7cb66e00bfe7cff95886a180b185f2773/cachebox-5.0.4-cp313-cp313-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5a4c8671451833e753044a7d78b411fec5fe3b7af06cb93eda367313863c36b7",
                "md5": "0a5530ea13224c56c26df00f1c53e414",
                "sha256": "9876041b630d4bfe155a6f8fead30dfc0283b2b1d7bbc04a8fba2c09f1108921"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0a5530ea13224c56c26df00f1c53e414",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 235054,
            "upload_time": "2025-10-20T11:45:55",
            "upload_time_iso_8601": "2025-10-20T11:45:55.139648Z",
            "url": "https://files.pythonhosted.org/packages/5a/4c/8671451833e753044a7d78b411fec5fe3b7af06cb93eda367313863c36b7/cachebox-5.0.4-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "996261237611bc2221e4913719a110a54ba8fe5fd258bdef9bf1a3b7bbcd7e2a",
                "md5": "17b90d20f9828b2f28216213c0268702",
                "sha256": "d51b66675e54138581c76ee25c94c08219732773a7d5b1c2bd5c806853ce7df0"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "17b90d20f9828b2f28216213c0268702",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 327260,
            "upload_time": "2025-10-20T11:45:00",
            "upload_time_iso_8601": "2025-10-20T11:45:00.087177Z",
            "url": "https://files.pythonhosted.org/packages/99/62/61237611bc2221e4913719a110a54ba8fe5fd258bdef9bf1a3b7bbcd7e2a/cachebox-5.0.4-cp314-cp314-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "03aa7fbdf58fbdace91ea68aef0e4962927cda9795157208f87a82ad017b3fba",
                "md5": "19a79f57a660eb67a9a12f9aa8f73d27",
                "sha256": "f9c29678781511009aa94cf353118c25ce201c73044bd2ad05179d7f33038241"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "19a79f57a660eb67a9a12f9aa8f73d27",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 301762,
            "upload_time": "2025-10-20T11:44:50",
            "upload_time_iso_8601": "2025-10-20T11:44:50.125404Z",
            "url": "https://files.pythonhosted.org/packages/03/aa/7fbdf58fbdace91ea68aef0e4962927cda9795157208f87a82ad017b3fba/cachebox-5.0.4-cp314-cp314-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e2b690d2be862a7722003ab810e2b8c2db96f39650140d62bd6cb0606e96a028",
                "md5": "2c17465e2babdb6cf22f6370fde71bef",
                "sha256": "d4d2eb06f780a24471f3cabf6d5b020366adaec11321b52ff4516dbc487ea691"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "2c17465e2babdb6cf22f6370fde71bef",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 321979,
            "upload_time": "2025-10-20T11:43:47",
            "upload_time_iso_8601": "2025-10-20T11:43:47.136866Z",
            "url": "https://files.pythonhosted.org/packages/e2/b6/90d2be862a7722003ab810e2b8c2db96f39650140d62bd6cb0606e96a028/cachebox-5.0.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6a86eaa863aebadbff1de17eee342a84e388d22ecd862f03607b1e4a9cd932e2",
                "md5": "d0a3042c7c30b5b43a1d46c53107ef68",
                "sha256": "5fc52e401d0fbffd1e031bfe3919603872d1cd074d637181dc5f3268c70ecc8e"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "d0a3042c7c30b5b43a1d46c53107ef68",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 337235,
            "upload_time": "2025-10-20T11:43:58",
            "upload_time_iso_8601": "2025-10-20T11:43:58.029696Z",
            "url": "https://files.pythonhosted.org/packages/6a/86/eaa863aebadbff1de17eee342a84e388d22ecd862f03607b1e4a9cd932e2/cachebox-5.0.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0770c2d8fa509dac7d8fbc7870957b9707ca965586e73d9bc7b5705333029009",
                "md5": "aa66c58dd24aa5799f930db12130dc7e",
                "sha256": "80a071caf487b8572ae7e9e659dde8cd71389d879aa2a871ad8fdd090e22ea35"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "aa66c58dd24aa5799f930db12130dc7e",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 369767,
            "upload_time": "2025-10-20T11:44:08",
            "upload_time_iso_8601": "2025-10-20T11:44:08.907080Z",
            "url": "https://files.pythonhosted.org/packages/07/70/c2d8fa509dac7d8fbc7870957b9707ca965586e73d9bc7b5705333029009/cachebox-5.0.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fa0985dc4aaa5831a2fdb24a0fc796a6130afd4528c0d8a70098b29f68cfde16",
                "md5": "ab20ca834486fe65295821fae3fbe1b1",
                "sha256": "aa51cfd2db08182f040934e6abf31057b5a3fef156d77b7fb5fa1cbae9f1a168"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "ab20ca834486fe65295821fae3fbe1b1",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 395536,
            "upload_time": "2025-10-20T11:44:20",
            "upload_time_iso_8601": "2025-10-20T11:44:20.276087Z",
            "url": "https://files.pythonhosted.org/packages/fa/09/85dc4aaa5831a2fdb24a0fc796a6130afd4528c0d8a70098b29f68cfde16/cachebox-5.0.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5fa937c683b9ba458b5b83682c6b4ad020dd8ab6abe3301aa73f644fa6ffcbc2",
                "md5": "43be4c34c029dda2587f5b813e093cad",
                "sha256": "129346e5b033d8eabbefbd515ad5631b390c3501348241f1e84e94eaa8001d14"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "43be4c34c029dda2587f5b813e093cad",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 344694,
            "upload_time": "2025-10-20T11:44:39",
            "upload_time_iso_8601": "2025-10-20T11:44:39.897954Z",
            "url": "https://files.pythonhosted.org/packages/5f/a9/37c683b9ba458b5b83682c6b4ad020dd8ab6abe3301aa73f644fa6ffcbc2/cachebox-5.0.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "48d4db6572897762f9675e0023d504684f5b0f5d52f3b4dae21b568051af6bd0",
                "md5": "992cf234c4ab57c797b6ff6344c73758",
                "sha256": "ae9ae2e55dab610663a49eed92396ab8e8314be968eeed48093c0e5f81af4d97"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "992cf234c4ab57c797b6ff6344c73758",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 368699,
            "upload_time": "2025-10-20T11:44:29",
            "upload_time_iso_8601": "2025-10-20T11:44:29.965439Z",
            "url": "https://files.pythonhosted.org/packages/48/d4/db6572897762f9675e0023d504684f5b0f5d52f3b4dae21b568051af6bd0/cachebox-5.0.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d03a15ae19891589a6d889248842d9bde4bc5b40a89073904d94ea66c0a38c5e",
                "md5": "5d5a413f945fb56eba45820a2e8905ce",
                "sha256": "516a6bf1361739fdf5f5804391dc48307a5d93779ff6977de34e0593870e99bc"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "5d5a413f945fb56eba45820a2e8905ce",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 503828,
            "upload_time": "2025-10-20T11:45:10",
            "upload_time_iso_8601": "2025-10-20T11:45:10.784039Z",
            "url": "https://files.pythonhosted.org/packages/d0/3a/15ae19891589a6d889248842d9bde4bc5b40a89073904d94ea66c0a38c5e/cachebox-5.0.4-cp314-cp314-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f3889001b2844eacbf817ec0afb099ff55f1e01d34717e5906528e62a052b326",
                "md5": "6a0fa82916c3728a5ecac3f3155d8f1b",
                "sha256": "28fd1869133a7833b0da3597299cd30734d33d071b4568a420c83ffa0e31c070"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "6a0fa82916c3728a5ecac3f3155d8f1b",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 604042,
            "upload_time": "2025-10-20T11:45:22",
            "upload_time_iso_8601": "2025-10-20T11:45:22.703399Z",
            "url": "https://files.pythonhosted.org/packages/f3/88/9001b2844eacbf817ec0afb099ff55f1e01d34717e5906528e62a052b326/cachebox-5.0.4-cp314-cp314-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c8b0128c0f43e0299a0cca0880e7f5f283f02ae4d2e56cf38a8a131a252ef1d8",
                "md5": "a5ac23443a67373715a52a817faa933b",
                "sha256": "d5241872319b7f86b413fec4fd362d2d1790f44fc057a00a4702b1cd5c7d8ebe"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "a5ac23443a67373715a52a817faa933b",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 545829,
            "upload_time": "2025-10-20T11:45:33",
            "upload_time_iso_8601": "2025-10-20T11:45:33.678123Z",
            "url": "https://files.pythonhosted.org/packages/c8/b0/128c0f43e0299a0cca0880e7f5f283f02ae4d2e56cf38a8a131a252ef1d8/cachebox-5.0.4-cp314-cp314-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "be8a6a206c8181a75caffc38a5e5012deeaf0a9637f435791343bdd493b45457",
                "md5": "7051e09e153d35490cec46f410a37de7",
                "sha256": "a4e57152fc8da69f7ae2c468dcfe1d0dda4170456e4fae4cafab686c67765ccc"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7051e09e153d35490cec46f410a37de7",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 519650,
            "upload_time": "2025-10-20T11:45:44",
            "upload_time_iso_8601": "2025-10-20T11:45:44.833088Z",
            "url": "https://files.pythonhosted.org/packages/be/8a/6a206c8181a75caffc38a5e5012deeaf0a9637f435791343bdd493b45457/cachebox-5.0.4-cp314-cp314-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e2276edc0706d6cf1cbc79de34bafb01996cb20899f6cb98f5ef6c8ec9342fc8",
                "md5": "f054bf2083e7de4e1df2b8e0edb02b0d",
                "sha256": "02e8d3c601e32f6f6fd96e4f8091647bd0517e1a3a21eec5b72e9029b5620b1d"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f054bf2083e7de4e1df2b8e0edb02b0d",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 320936,
            "upload_time": "2025-10-20T11:45:01",
            "upload_time_iso_8601": "2025-10-20T11:45:01.363894Z",
            "url": "https://files.pythonhosted.org/packages/e2/27/6edc0706d6cf1cbc79de34bafb01996cb20899f6cb98f5ef6c8ec9342fc8/cachebox-5.0.4-cp314-cp314t-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bcbbd2db5a6dace30da1b4f7d147f7fbab02b44b338c382533b100c612d8775f",
                "md5": "92db3a257f84e3a72805274cd36538be",
                "sha256": "c0f723bd9a4b67910db31649bc04e00a49eb6a3dd61264358797892c6f969938"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "92db3a257f84e3a72805274cd36538be",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 294510,
            "upload_time": "2025-10-20T11:44:51",
            "upload_time_iso_8601": "2025-10-20T11:44:51.198071Z",
            "url": "https://files.pythonhosted.org/packages/bc/bb/d2db5a6dace30da1b4f7d147f7fbab02b44b338c382533b100c612d8775f/cachebox-5.0.4-cp314-cp314t-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c031b3bb42b8977c6401be46d69b0e74b411d98fc00ac1fd6481622e4987126d",
                "md5": "71e978d30a0d08d64b0c941633e83a8b",
                "sha256": "0eeb1d0eb938345a18cf2d5d34b770f32bb6fd792e06bdc2db968d9adafa88e2"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "71e978d30a0d08d64b0c941633e83a8b",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 314265,
            "upload_time": "2025-10-20T11:43:48",
            "upload_time_iso_8601": "2025-10-20T11:43:48.161610Z",
            "url": "https://files.pythonhosted.org/packages/c0/31/b3bb42b8977c6401be46d69b0e74b411d98fc00ac1fd6481622e4987126d/cachebox-5.0.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4a61f33b6eb2d5b763518f085342119067f9d7909eb831cbe9c02c2d4beae3fb",
                "md5": "9529138467695e21480e2550cda82f1b",
                "sha256": "3f749731534f6cbd71362c573c0d9ba231af8e343c36d7f9549be5a59d685724"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "9529138467695e21480e2550cda82f1b",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 332136,
            "upload_time": "2025-10-20T11:43:59",
            "upload_time_iso_8601": "2025-10-20T11:43:59.441030Z",
            "url": "https://files.pythonhosted.org/packages/4a/61/f33b6eb2d5b763518f085342119067f9d7909eb831cbe9c02c2d4beae3fb/cachebox-5.0.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2ab858a206c6661921bca63bd130b8d3e133e3c998719654315abaeb15ac02ee",
                "md5": "30cf25b19897cd232ac6a4d823e05562",
                "sha256": "1253595dfcb1757d4c4ac0d391f2793ac1480b165273c488e5bde8db72b270b7"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "30cf25b19897cd232ac6a4d823e05562",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 363328,
            "upload_time": "2025-10-20T11:44:10",
            "upload_time_iso_8601": "2025-10-20T11:44:10.179732Z",
            "url": "https://files.pythonhosted.org/packages/2a/b8/58a206c6661921bca63bd130b8d3e133e3c998719654315abaeb15ac02ee/cachebox-5.0.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1cf6732b86469444f76038d61e452d1a068341599e732f2dfc6c6f564355e2d4",
                "md5": "a968b9e4b4755801b54fb3a6ef2ae053",
                "sha256": "89f1207cf5c0815b7f27ae282a3e467a5568ce556354ccdc25520f1eeb4154db"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "a968b9e4b4755801b54fb3a6ef2ae053",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 385757,
            "upload_time": "2025-10-20T11:44:21",
            "upload_time_iso_8601": "2025-10-20T11:44:21.312933Z",
            "url": "https://files.pythonhosted.org/packages/1c/f6/732b86469444f76038d61e452d1a068341599e732f2dfc6c6f564355e2d4/cachebox-5.0.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "42a5f62fcbf267ab886eb1c94ce548accef52b0c1fa3e9a27e76da49edd488d2",
                "md5": "ebebf005e9140007399f0fac57d161fa",
                "sha256": "b49c64bcdf270ca2d6e0ba6081c2c79dfe0008b0aec160d3a24eb2dcc46cc4a2"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ebebf005e9140007399f0fac57d161fa",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 337388,
            "upload_time": "2025-10-20T11:44:41",
            "upload_time_iso_8601": "2025-10-20T11:44:41.300039Z",
            "url": "https://files.pythonhosted.org/packages/42/a5/f62fcbf267ab886eb1c94ce548accef52b0c1fa3e9a27e76da49edd488d2/cachebox-5.0.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "920349cc8ef2dc539cdf21b15c44614796ad96a5bccd6071e76d64f9f2fd14f8",
                "md5": "e645f3b4a9a28fd73982da52e60f4b52",
                "sha256": "b5d46f89660384987a6fe53e0fc7139415e981b78eb223e012dad6b376728aac"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "e645f3b4a9a28fd73982da52e60f4b52",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 360816,
            "upload_time": "2025-10-20T11:44:31",
            "upload_time_iso_8601": "2025-10-20T11:44:31.362841Z",
            "url": "https://files.pythonhosted.org/packages/92/03/49cc8ef2dc539cdf21b15c44614796ad96a5bccd6071e76d64f9f2fd14f8/cachebox-5.0.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "779a537e0502fbc59329ec9ca09b76ca3955d2f4df6fc3efe636eceb7c8c9a36",
                "md5": "0cb1fcca9dc3f951b47ff6a756ad4d8b",
                "sha256": "23e75101db4d2904b233522bbb9e26d97d227eda9e29253d6e08532fdac9dad9"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "0cb1fcca9dc3f951b47ff6a756ad4d8b",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 496689,
            "upload_time": "2025-10-20T11:45:12",
            "upload_time_iso_8601": "2025-10-20T11:45:12.145064Z",
            "url": "https://files.pythonhosted.org/packages/77/9a/537e0502fbc59329ec9ca09b76ca3955d2f4df6fc3efe636eceb7c8c9a36/cachebox-5.0.4-cp314-cp314t-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c3d4c961624e7cb59497298f639faca015aa8ba571a4c052e0cbe4d07e132872",
                "md5": "64302a87d75433a28ffea45f292fe5e4",
                "sha256": "172a59db7216c3497115943a8269cb18d00ad0e77d49a17e2ab2f1596a436e90"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "64302a87d75433a28ffea45f292fe5e4",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 596930,
            "upload_time": "2025-10-20T11:45:23",
            "upload_time_iso_8601": "2025-10-20T11:45:23.985271Z",
            "url": "https://files.pythonhosted.org/packages/c3/d4/c961624e7cb59497298f639faca015aa8ba571a4c052e0cbe4d07e132872/cachebox-5.0.4-cp314-cp314t-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e4e2d998808740a79e3d89778bf40b88701e4b5e193be0221e9899b26be3d484",
                "md5": "26e8be3450a8097ae3c7fade94448a7a",
                "sha256": "e4a1a5fb0fc55d3609319e8e519697c861288d887b7a942ae1cf9792030a98b7"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "26e8be3450a8097ae3c7fade94448a7a",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 536213,
            "upload_time": "2025-10-20T11:45:35",
            "upload_time_iso_8601": "2025-10-20T11:45:35.741798Z",
            "url": "https://files.pythonhosted.org/packages/e4/e2/d998808740a79e3d89778bf40b88701e4b5e193be0221e9899b26be3d484/cachebox-5.0.4-cp314-cp314t-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5d50fa2ca189cfb1f09f799937a7fc60368835b7413490b499af701899f4d9c7",
                "md5": "6f6078501fbe5b017db5d506801ebd99",
                "sha256": "7dfe4ddf4ef0b2f14d3036fedbaae3a988e692970661ed056755f9212f99d1a2"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6f6078501fbe5b017db5d506801ebd99",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 512370,
            "upload_time": "2025-10-20T11:45:46",
            "upload_time_iso_8601": "2025-10-20T11:45:46.063141Z",
            "url": "https://files.pythonhosted.org/packages/5d/50/fa2ca189cfb1f09f799937a7fc60368835b7413490b499af701899f4d9c7/cachebox-5.0.4-cp314-cp314t-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3bc4fef42a52505f6bb5f71d518c7624615b82ab0e66b924aa40c3cdbd2cd384",
                "md5": "c6f54fc2ecd3247ad1f53178ced2f4da",
                "sha256": "d92b573523fc937354dafe89b759e1eb6791b941011c711aafba479a35e53cb6"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-win32.whl",
            "has_sig": false,
            "md5_digest": "c6f54fc2ecd3247ad1f53178ced2f4da",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 240264,
            "upload_time": "2025-10-20T11:46:10",
            "upload_time_iso_8601": "2025-10-20T11:46:10.931542Z",
            "url": "https://files.pythonhosted.org/packages/3b/c4/fef42a52505f6bb5f71d518c7624615b82ab0e66b924aa40c3cdbd2cd384/cachebox-5.0.4-cp314-cp314t-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f253b7b51c53cc05e2bcdc628d3403b0ebf8c6f0327a6a0b8f404c3ce3406c21",
                "md5": "3893c55e8d87f630a671aa3405c2fc8c",
                "sha256": "44f47b7a2bd7bb35826a7c6472fcc1baf2e6c81c2114a1937ce3ee21911bc1d6"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314t-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "3893c55e8d87f630a671aa3405c2fc8c",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 234694,
            "upload_time": "2025-10-20T11:45:59",
            "upload_time_iso_8601": "2025-10-20T11:45:59.365023Z",
            "url": "https://files.pythonhosted.org/packages/f2/53/b7b51c53cc05e2bcdc628d3403b0ebf8c6f0327a6a0b8f404c3ce3406c21/cachebox-5.0.4-cp314-cp314t-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "22e9c3148a5f0b0c1e5318cae7dbe03f1297f141af95894adf148ec9b25f5aa9",
                "md5": "a8abbecd384bb4d58b18b554b73435f4",
                "sha256": "0b6ac3e2dc730d11729ded304b4805023f3e6016b92bfb5ed0f61e4a57ccdf1c"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-win32.whl",
            "has_sig": false,
            "md5_digest": "a8abbecd384bb4d58b18b554b73435f4",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 240249,
            "upload_time": "2025-10-20T11:46:09",
            "upload_time_iso_8601": "2025-10-20T11:46:09.664840Z",
            "url": "https://files.pythonhosted.org/packages/22/e9/c3148a5f0b0c1e5318cae7dbe03f1297f141af95894adf148ec9b25f5aa9/cachebox-5.0.4-cp314-cp314-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "40d3092268ce390378401d9bce759daa9747c7f1115ba37a5039b42f04b0e70c",
                "md5": "bc348e56c9eefddb40d09de633b3c9b5",
                "sha256": "c7a61b68ce289e17f49ce47339d6ac4f95b6c6c60f3a9e3ec2aa0010b482e303"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-cp314-cp314-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "bc348e56c9eefddb40d09de633b3c9b5",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 241832,
            "upload_time": "2025-10-20T11:45:57",
            "upload_time_iso_8601": "2025-10-20T11:45:57.880261Z",
            "url": "https://files.pythonhosted.org/packages/40/d3/092268ce390378401d9bce759daa9747c7f1115ba37a5039b42f04b0e70c/cachebox-5.0.4-cp314-cp314-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bf141ec87bfb6cdd82ce9814e6d32834d1f5a88b8cc9083918384c94b4c26d2e",
                "md5": "691c0e9776445ef452460ecfc4135ec2",
                "sha256": "c0f8cd311c837c65b9a2a4558cf78229ee5eb4b97145d9829527d486ff60c4c3"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "691c0e9776445ef452460ecfc4135ec2",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 324404,
            "upload_time": "2025-10-20T11:45:02",
            "upload_time_iso_8601": "2025-10-20T11:45:02.472326Z",
            "url": "https://files.pythonhosted.org/packages/bf/14/1ec87bfb6cdd82ce9814e6d32834d1f5a88b8cc9083918384c94b4c26d2e/cachebox-5.0.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c9dffbd2a9f7c07f4f8064ea2f4a9be7495ee942c0ca7114a3bf5670fb3ee6e3",
                "md5": "b35b577f6e999d7b2a0d797357985c20",
                "sha256": "2fe8b0d262abec3ca105b8e4e2d9d7ab3d3cc8a8b36942c11c32e4b21761fce1"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "b35b577f6e999d7b2a0d797357985c20",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 297093,
            "upload_time": "2025-10-20T11:44:52",
            "upload_time_iso_8601": "2025-10-20T11:44:52.345859Z",
            "url": "https://files.pythonhosted.org/packages/c9/df/fbd2a9f7c07f4f8064ea2f4a9be7495ee942c0ca7114a3bf5670fb3ee6e3/cachebox-5.0.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c6bfacfd358912d6f3fd0191b5fd5d2614e565e138ba186a4695b2693832fc97",
                "md5": "8434da6fc49ae6fa8e82a18f98995a75",
                "sha256": "32926d2db78c223c3619bfc1e8ee40f1a72d85447d06838faabf4a6d63a8bcdb"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "8434da6fc49ae6fa8e82a18f98995a75",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 317850,
            "upload_time": "2025-10-20T11:43:49",
            "upload_time_iso_8601": "2025-10-20T11:43:49.666024Z",
            "url": "https://files.pythonhosted.org/packages/c6/bf/acfd358912d6f3fd0191b5fd5d2614e565e138ba186a4695b2693832fc97/cachebox-5.0.4-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7198d30a66376b0d35661199533eb65af2125013ab2467ebd777b4eebe520679",
                "md5": "4156f23be23d80228a26930d7766aa6a",
                "sha256": "bafff08f3388c097851562ca40103dec90035dfe2b9e4a21fd768e4eea2ac219"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "4156f23be23d80228a26930d7766aa6a",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 338979,
            "upload_time": "2025-10-20T11:44:00",
            "upload_time_iso_8601": "2025-10-20T11:44:00.579245Z",
            "url": "https://files.pythonhosted.org/packages/71/98/d30a66376b0d35661199533eb65af2125013ab2467ebd777b4eebe520679/cachebox-5.0.4-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1e3511abb18c5732fbc9c55892cceff8adb657ce183475435fb424e647faf81f",
                "md5": "6b0d79e8395f9bce358145db7f716690",
                "sha256": "ca59c65baf72927b178af065b827e2fb935567f77a40af675655885befb9719f"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "6b0d79e8395f9bce358145db7f716690",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 367097,
            "upload_time": "2025-10-20T11:44:11",
            "upload_time_iso_8601": "2025-10-20T11:44:11.496997Z",
            "url": "https://files.pythonhosted.org/packages/1e/35/11abb18c5732fbc9c55892cceff8adb657ce183475435fb424e647faf81f/cachebox-5.0.4-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f27defde42a30b94b1866034a28f101a5d8b30d58868fd22cfdc772ca22ea482",
                "md5": "cd2476aa39405df43188e4fc35e1547d",
                "sha256": "b1ee9a5f3a26359259d9fbe988665d884cc1b6f9545c3b2aa3c097b08a95559b"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "cd2476aa39405df43188e4fc35e1547d",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 393077,
            "upload_time": "2025-10-20T11:44:22",
            "upload_time_iso_8601": "2025-10-20T11:44:22.992360Z",
            "url": "https://files.pythonhosted.org/packages/f2/7d/efde42a30b94b1866034a28f101a5d8b30d58868fd22cfdc772ca22ea482/cachebox-5.0.4-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3995418cf912f7e39eb13ec9f0fef1acc076e650edcf11c0d1e9ffe693b7a2e4",
                "md5": "dd01fba14d3f1d183f4451be93c010e0",
                "sha256": "f6e13243db0ed1345f22bb21c864ea18f5bd12a1895467316024a84edeb243fb"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "dd01fba14d3f1d183f4451be93c010e0",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 335657,
            "upload_time": "2025-10-20T11:44:42",
            "upload_time_iso_8601": "2025-10-20T11:44:42.748042Z",
            "url": "https://files.pythonhosted.org/packages/39/95/418cf912f7e39eb13ec9f0fef1acc076e650edcf11c0d1e9ffe693b7a2e4/cachebox-5.0.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "765117fa239997084b3e2c2d4e80e6c0ae26c9e19473bdbdee2b9783371cd638",
                "md5": "5bc127538f5a8f0680d2e13bd7e71ffb",
                "sha256": "98b49c947914ae842130581f5cd59c82f628929e01173e142e78d8d1378b955c"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "5bc127538f5a8f0680d2e13bd7e71ffb",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 359414,
            "upload_time": "2025-10-20T11:44:32",
            "upload_time_iso_8601": "2025-10-20T11:44:32.773327Z",
            "url": "https://files.pythonhosted.org/packages/76/51/17fa239997084b3e2c2d4e80e6c0ae26c9e19473bdbdee2b9783371cd638/cachebox-5.0.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0f28dab58d1fa856b97f4c16ded6fc07435c8076df61be443f010d23fb17dba7",
                "md5": "a16f992612d7c3c57a0c825b211aabee",
                "sha256": "f9d0fe18c3306e8b70895a36f5ccc714e82d289e2ef97dba8175ee985debbf82"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "a16f992612d7c3c57a0c825b211aabee",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 500508,
            "upload_time": "2025-10-20T11:45:13",
            "upload_time_iso_8601": "2025-10-20T11:45:13.937664Z",
            "url": "https://files.pythonhosted.org/packages/0f/28/dab58d1fa856b97f4c16ded6fc07435c8076df61be443f010d23fb17dba7/cachebox-5.0.4-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "de54440111819fbbd21e56f9d315e934fd4557e5470c7d1dd732a4d7bda33b28",
                "md5": "56f1cae524c1f99ac2178e75ae47fe7e",
                "sha256": "5ac8e5de6679171145ebbf21ef2e74cafe399d535fce5871d99d6812ab50a658"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "56f1cae524c1f99ac2178e75ae47fe7e",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 604172,
            "upload_time": "2025-10-20T11:45:25",
            "upload_time_iso_8601": "2025-10-20T11:45:25.684620Z",
            "url": "https://files.pythonhosted.org/packages/de/54/440111819fbbd21e56f9d315e934fd4557e5470c7d1dd732a4d7bda33b28/cachebox-5.0.4-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cf28dc679d3955787db429ab69754be894c3820e8f08402fcfeaa947b0681153",
                "md5": "d0b6d9c14996bbfa9e9920a123232556",
                "sha256": "d3e2fa9daa7b2d9fc7407472bd40a2405bd8b760f6aba31966d2b0ccd8b9daad"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "d0b6d9c14996bbfa9e9920a123232556",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 535094,
            "upload_time": "2025-10-20T11:45:36",
            "upload_time_iso_8601": "2025-10-20T11:45:36.980448Z",
            "url": "https://files.pythonhosted.org/packages/cf/28/dc679d3955787db429ab69754be894c3820e8f08402fcfeaa947b0681153/cachebox-5.0.4-pp311-pypy311_pp73-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "43403951f8101f796c267023d968e89d05d3ed1f05b72e404b07fc16bd0f004e",
                "md5": "dabc37760389e2a13794fdb49c17d7bb",
                "sha256": "a87e3f9c313c167f8df30a142fa529b6a136950241480faa107602b685dfbfe3"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "dabc37760389e2a13794fdb49c17d7bb",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 509666,
            "upload_time": "2025-10-20T11:45:47",
            "upload_time_iso_8601": "2025-10-20T11:45:47.620256Z",
            "url": "https://files.pythonhosted.org/packages/43/40/3951f8101f796c267023d968e89d05d3ed1f05b72e404b07fc16bd0f004e/cachebox-5.0.4-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1027cf2df0442c3a57d7b245fb009b277e541f12c5479423deabbfc0bd4e5f02",
                "md5": "4fa537d9bd33a6964befc68cf9a3eb4f",
                "sha256": "ba1efaedb3bd62f8f26fd1fa7007b3469f6d1ae21aadc21362addb2831fee203"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4-pp311-pypy311_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4fa537d9bd33a6964befc68cf9a3eb4f",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 232506,
            "upload_time": "2025-10-20T11:46:00",
            "upload_time_iso_8601": "2025-10-20T11:46:00.997082Z",
            "url": "https://files.pythonhosted.org/packages/10/27/cf2df0442c3a57d7b245fb009b277e541f12c5479423deabbfc0bd4e5f02/cachebox-5.0.4-pp311-pypy311_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b30bf6f782b6e6c7977a29272eeed8bcd94bb2dd86b3a6b369e2488ff892cf72",
                "md5": "24eef58b8b8480de6035c5cbeaac62c3",
                "sha256": "857851d3c5717ea78864bd7c1604a9fc75cea825f7df98e5c9cabdec9cb86528"
            },
            "downloads": -1,
            "filename": "cachebox-5.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "24eef58b8b8480de6035c5cbeaac62c3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 62869,
            "upload_time": "2025-10-20T11:45:48",
            "upload_time_iso_8601": "2025-10-20T11:45:48.795656Z",
            "url": "https://files.pythonhosted.org/packages/b3/0b/f6f782b6e6c7977a29272eeed8bcd94bb2dd86b3a6b369e2488ff892cf72/cachebox-5.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-20 11:45:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "awolverp",
    "github_project": "cachebox",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "cachebox"
}
        
Elapsed time: 1.31267s