summaryrefslogtreecommitdiff
path: root/requests_cache/backends
diff options
context:
space:
mode:
authorJordan Cook <jordan.cook@pioneer.com>2021-10-26 16:37:39 -0500
committerJordan Cook <jordan.cook@pioneer.com>2021-10-27 10:35:39 -0500
commit90d2b87c14c990c732b52e6abea907e4ef86166f (patch)
tree9ff01161129289fab06383b72300504ae2724f7b /requests_cache/backends
parenta70eea1beadcb2d555a7dac77738d0a21900703a (diff)
downloadrequests-cache-90d2b87c14c990c732b52e6abea907e4ef86166f.tar.gz
Move misc minor utils to a separate module
Diffstat (limited to 'requests_cache/backends')
-rw-r--r--requests_cache/backends/__init__.py3
-rw-r--r--requests_cache/backends/dynamodb.py3
-rw-r--r--requests_cache/backends/gridfs.py2
-rw-r--r--requests_cache/backends/mongodb.py3
-rw-r--r--requests_cache/backends/redis.py3
-rw-r--r--requests_cache/backends/sqlite.py12
6 files changed, 11 insertions, 15 deletions
diff --git a/requests_cache/backends/__init__.py b/requests_cache/backends/__init__.py
index 69fca59..bc921f7 100644
--- a/requests_cache/backends/__init__.py
+++ b/requests_cache/backends/__init__.py
@@ -1,10 +1,9 @@
"""Classes and functions for cache persistence. See :ref:`backends` for general usage info."""
# flake8: noqa: F401
-from inspect import signature
from logging import getLogger
from typing import Callable, Dict, Iterable, Optional, Type, Union
-from .. import get_placeholder_class, get_valid_kwargs
+from .._utils import get_placeholder_class
from .base import BaseCache, BaseStorage, DictStorage
# Backend-specific keyword arguments equivalent to 'cache_name'
diff --git a/requests_cache/backends/dynamodb.py b/requests_cache/backends/dynamodb.py
index 98ff6fa..e1a6089 100644
--- a/requests_cache/backends/dynamodb.py
+++ b/requests_cache/backends/dynamodb.py
@@ -49,7 +49,8 @@ from boto3.dynamodb.types import Binary
from boto3.resources.base import ServiceResource
from botocore.exceptions import ClientError
-from . import BaseCache, BaseStorage, get_valid_kwargs
+from .._utils import get_valid_kwargs
+from . import BaseCache, BaseStorage
class DynamoDbCache(BaseCache):
diff --git a/requests_cache/backends/gridfs.py b/requests_cache/backends/gridfs.py
index 09aa360..ca370f6 100644
--- a/requests_cache/backends/gridfs.py
+++ b/requests_cache/backends/gridfs.py
@@ -14,7 +14,7 @@ API Reference
from gridfs import GridFS
from pymongo import MongoClient
-from . import get_valid_kwargs
+from .._utils import get_valid_kwargs
from .base import BaseCache, BaseStorage
from .mongodb import MongoDict
diff --git a/requests_cache/backends/mongodb.py b/requests_cache/backends/mongodb.py
index 07a91ab..ef1fb51 100644
--- a/requests_cache/backends/mongodb.py
+++ b/requests_cache/backends/mongodb.py
@@ -28,7 +28,8 @@ from typing import Iterable
from pymongo import MongoClient
-from . import BaseCache, BaseStorage, get_valid_kwargs
+from .._utils import get_valid_kwargs
+from . import BaseCache, BaseStorage
class MongoCache(BaseCache):
diff --git a/requests_cache/backends/redis.py b/requests_cache/backends/redis.py
index 028968a..41d908a 100644
--- a/requests_cache/backends/redis.py
+++ b/requests_cache/backends/redis.py
@@ -35,8 +35,9 @@ from typing import Iterable
from redis import Redis, StrictRedis
+from .._utils import get_valid_kwargs
from ..cache_keys import decode, encode
-from . import BaseCache, BaseStorage, get_valid_kwargs
+from . import BaseCache, BaseStorage
class RedisCache(BaseCache):
diff --git a/requests_cache/backends/sqlite.py b/requests_cache/backends/sqlite.py
index aa7f4d4..7262fdc 100644
--- a/requests_cache/backends/sqlite.py
+++ b/requests_cache/backends/sqlite.py
@@ -77,7 +77,8 @@ from typing import Collection, Iterable, Iterator, List, Tuple, Type, Union
from appdirs import user_cache_dir
-from . import BaseCache, BaseStorage, get_valid_kwargs
+from .._utils import chunkify, get_valid_kwargs
+from . import BaseCache, BaseStorage
MEMORY_URI = 'file::memory:?cache=shared'
SQLITE_MAX_VARIABLE_NUMBER = 999
@@ -241,7 +242,7 @@ class SQLiteDict(BaseStorage):
column = 'key' if keys else 'value'
with self.connection(commit=True) as con:
# Split into small enough chunks for SQLite to handle
- for chunk in chunkify(keys or values):
+ for chunk in chunkify(keys or values, max_size=SQLITE_MAX_VARIABLE_NUMBER):
marks, args = _format_sequence(chunk)
statement = f'DELETE FROM {self.table_name} WHERE {column} IN ({marks})'
con.execute(statement, args)
@@ -270,13 +271,6 @@ class SQLitePickleDict(SQLiteDict):
return self.serializer.loads(super().__getitem__(key))
-def chunkify(iterable: Iterable, max_size=SQLITE_MAX_VARIABLE_NUMBER) -> Iterator[List]:
- """Split an iterable into chunks of a max size"""
- iterable = list(iterable)
- for index in range(0, len(iterable), max_size):
- yield iterable[index : index + max_size]
-
-
def _format_sequence(values: Collection) -> Tuple[str, List]:
"""Get SQL parameter marks for a sequence-based query, and ensure value is a sequence"""
if not isinstance(values, Iterable):