diff options
| author | Jordan Cook <jordan.cook@pioneer.com> | 2021-10-26 16:37:39 -0500 |
|---|---|---|
| committer | Jordan Cook <jordan.cook@pioneer.com> | 2021-10-27 10:35:39 -0500 |
| commit | 90d2b87c14c990c732b52e6abea907e4ef86166f (patch) | |
| tree | 9ff01161129289fab06383b72300504ae2724f7b /requests_cache/backends | |
| parent | a70eea1beadcb2d555a7dac77738d0a21900703a (diff) | |
| download | requests-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__.py | 3 | ||||
| -rw-r--r-- | requests_cache/backends/dynamodb.py | 3 | ||||
| -rw-r--r-- | requests_cache/backends/gridfs.py | 2 | ||||
| -rw-r--r-- | requests_cache/backends/mongodb.py | 3 | ||||
| -rw-r--r-- | requests_cache/backends/redis.py | 3 | ||||
| -rw-r--r-- | requests_cache/backends/sqlite.py | 12 |
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): |
