summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Cook <jordan.cook@pioneer.com>2022-04-17 13:49:34 -0500
committerJordan Cook <jordan.cook@pioneer.com>2022-04-17 19:25:20 -0500
commit7ebf9df7ae2534bad66dc4f102993f5fb6d789b2 (patch)
tree91fb12d84ea6a39fb46fd865baec32a283b9e51b
parent451b5dfca5b3c60dd52098902ce37125d4a1a45f (diff)
downloadrequests-cache-7ebf9df7ae2534bad66dc4f102993f5fb6d789b2.tar.gz
Move all cache policy-related modules to separate 'policy' subpackage
-rw-r--r--HISTORY.md3
-rw-r--r--pyproject.toml1
-rw-r--r--requests_cache/__init__.py4
-rw-r--r--requests_cache/backends/base.py4
-rw-r--r--requests_cache/backends/mongodb.py2
-rw-r--r--requests_cache/backends/sqlite.py2
-rwxr-xr-xrequests_cache/models/response.py4
-rw-r--r--requests_cache/patcher.py2
-rw-r--r--requests_cache/policy/__init__.py5
-rw-r--r--requests_cache/policy/actions.py (renamed from requests_cache/cache_control.py)4
-rw-r--r--requests_cache/policy/expiration.py (renamed from requests_cache/expiration.py)2
-rw-r--r--requests_cache/policy/settings.py (renamed from requests_cache/settings.py)6
-rw-r--r--requests_cache/session.py9
-rw-r--r--tests/integration/test_mongodb.py2
-rw-r--r--tests/unit/policy/test_actions.py (renamed from tests/unit/test_cache_control.py)6
-rw-r--r--tests/unit/policy/test_expiration.py (renamed from tests/unit/test_expiration.py)2
-rw-r--r--tests/unit/test_session.py2
17 files changed, 33 insertions, 27 deletions
diff --git a/HISTORY.md b/HISTORY.md
index 3d2bb01..7014b22 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -50,6 +50,9 @@ The following undocumented behaviors have been removed:
`CachedSession.settings`.
* Previously, some settings could be modified by setting them on either `CachedSession` or `BaseCache`. In some cases this could silently fail or otherwise have undefined behavior.
+Internal module changes:
+* The contents of the `cache_control` module have been split up into multiple modules in a new `policy` subpackage
+
### 0.9.3 (2022-02-22)
* Fix handling BSON serializer differences between pymongo's `bson` and standalone `bson` codec.
* Handle `CorruptGridFile` error in GridFS backend
diff --git a/pyproject.toml b/pyproject.toml
index 98d2621..a09e6f4 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -151,7 +151,6 @@ line_length = 100
skip_gitignore = true
skip = [
'examples/',
- 'requests_cache/__init__.py',
'tests/compat/',
]
known_first_party = ['tests']
diff --git a/requests_cache/__init__.py b/requests_cache/__init__.py
index 30ffb55..9fcf09a 100644
--- a/requests_cache/__init__.py
+++ b/requests_cache/__init__.py
@@ -7,14 +7,12 @@ __version__ = '0.10.0'
try:
from .backends import *
- from .cache_control import *
from .cache_keys import *
- from .expiration import *
from .models import *
from .patcher import *
+ from .policy import *
from .serializers import *
from .session import *
- from .settings import *
# Log and ignore ImportErrors, if imported outside a virtualenv (e.g., just to check __version__)
except ImportError as e:
getLogger('requests_cache').warning(e, exc_info=True)
diff --git a/requests_cache/backends/base.py b/requests_cache/backends/base.py
index 6a0c157..46193b6 100644
--- a/requests_cache/backends/base.py
+++ b/requests_cache/backends/base.py
@@ -17,10 +17,10 @@ from typing import Iterable, Iterator, Optional, Tuple, Union
from requests import PreparedRequest, Response
from ..cache_keys import create_key, redact_response
-from ..expiration import ExpirationTime
from ..models import CachedResponse
+from ..policy.expiration import ExpirationTime
+from ..policy.settings import DEFAULT_CACHE_NAME, CacheSettings
from ..serializers import init_serializer
-from ..settings import DEFAULT_CACHE_NAME, CacheSettings
# Specific exceptions that may be raised during deserialization
DESERIALIZE_ERRORS = (AttributeError, ImportError, PickleError, TypeError, ValueError)
diff --git a/requests_cache/backends/mongodb.py b/requests_cache/backends/mongodb.py
index 9605988..7623319 100644
--- a/requests_cache/backends/mongodb.py
+++ b/requests_cache/backends/mongodb.py
@@ -12,7 +12,7 @@ from pymongo import MongoClient
from pymongo.errors import OperationFailure
from .._utils import get_valid_kwargs
-from ..expiration import NEVER_EXPIRE, get_expiration_seconds
+from ..policy.expiration import NEVER_EXPIRE, get_expiration_seconds
from ..serializers import bson_document_serializer
from . import BaseCache, BaseStorage
diff --git a/requests_cache/backends/sqlite.py b/requests_cache/backends/sqlite.py
index fa75848..09becf3 100644
--- a/requests_cache/backends/sqlite.py
+++ b/requests_cache/backends/sqlite.py
@@ -18,8 +18,8 @@ from typing import Collection, Iterable, Iterator, List, Tuple, Type, Union
from platformdirs import user_cache_dir
from .._utils import chunkify, get_valid_kwargs
-from ..expiration import ExpirationTime
from ..models import CachedResponse
+from ..policy.expiration import ExpirationTime
from . import BaseCache, BaseStorage
MEMORY_URI = 'file::memory:?cache=shared'
diff --git a/requests_cache/models/response.py b/requests_cache/models/response.py
index e85af1a..bf89c8c 100755
--- a/requests_cache/models/response.py
+++ b/requests_cache/models/response.py
@@ -11,11 +11,11 @@ from requests.cookies import RequestsCookieJar
from requests.structures import CaseInsensitiveDict
from urllib3._collections import HTTPHeaderDict
-from ..expiration import ExpirationTime, get_expiration_datetime
+from ..policy.expiration import ExpirationTime, get_expiration_datetime
from . import CachedHTTPResponse, CachedRequest
if TYPE_CHECKING:
- from ..cache_control import CacheActions
+ from ..policy.actions import CacheActions
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S %Z' # Format used for __str__ only
HeaderList = List[Tuple[str, str]]
diff --git a/requests_cache/patcher.py b/requests_cache/patcher.py
index dd81f67..6c24a35 100644
--- a/requests_cache/patcher.py
+++ b/requests_cache/patcher.py
@@ -14,7 +14,7 @@ from typing import Optional, Type
import requests
from .backends import BackendSpecifier, BaseCache
-from .expiration import ExpirationTime
+from .policy import ExpirationTime
from .session import CachedSession, OriginalSession
logger = getLogger(__name__)
diff --git a/requests_cache/policy/__init__.py b/requests_cache/policy/__init__.py
new file mode 100644
index 0000000..9d4f7d6
--- /dev/null
+++ b/requests_cache/policy/__init__.py
@@ -0,0 +1,5 @@
+# flake8: noqa: E402,F401
+# isort: skip_file
+from .expiration import *
+from .settings import *
+from .actions import *
diff --git a/requests_cache/cache_control.py b/requests_cache/policy/actions.py
index a13da45..ba333a6 100644
--- a/requests_cache/cache_control.py
+++ b/requests_cache/policy/actions.py
@@ -16,7 +16,8 @@ from attr import define, field
from requests import PreparedRequest, Response
from requests.models import CaseInsensitiveDict
-from ._utils import coalesce, try_int
+from .._utils import coalesce, try_int
+from ..models import CachedResponse
from .expiration import (
DO_NOT_CACHE,
EXPIRE_IMMEDIATELY,
@@ -26,7 +27,6 @@ from .expiration import (
get_expiration_seconds,
get_url_expiration,
)
-from .models import CachedResponse
from .settings import CacheSettings
__all__ = ['CacheActions']
diff --git a/requests_cache/expiration.py b/requests_cache/policy/expiration.py
index eca86be..7219718 100644
--- a/requests_cache/expiration.py
+++ b/requests_cache/policy/expiration.py
@@ -6,7 +6,7 @@ from logging import getLogger
from math import ceil
from typing import Dict, Optional, Union
-from ._utils import try_int
+from .._utils import try_int
__all__ = ['DO_NOT_CACHE', 'EXPIRE_IMMEDIATELY', 'NEVER_EXPIRE', 'get_expiration_datetime']
diff --git a/requests_cache/settings.py b/requests_cache/policy/settings.py
index 62a6c8b..e23fd50 100644
--- a/requests_cache/settings.py
+++ b/requests_cache/policy/settings.py
@@ -3,7 +3,7 @@ from typing import Callable, Dict, Iterable, Union
from attr import define, field
from requests import Response
-from ._utils import get_valid_kwargs
+from .._utils import get_valid_kwargs
from .expiration import ExpirationTime
ALL_METHODS = ('GET', 'HEAD', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE')
@@ -23,8 +23,8 @@ KeyCallback = Callable[..., str]
class CacheSettings:
"""Class used internally to store settings that affect caching behavior. This allows settings
to be used across multiple modules, but exposed to the user in a single property
- (:py:attr:`.CachedSession.settings`). These values can safely be modified after initialization. See
- :py:class:`.CachedSession` and :ref:`user-guide` for usage details.
+ (:py:attr:`.CachedSession.settings`). These values can safely be modified after initialization.
+ See :py:class:`.CachedSession` and :ref:`user-guide` for usage details.
"""
allowable_codes: Iterable[int] = field(default=DEFAULT_STATUS_CODES)
diff --git a/requests_cache/session.py b/requests_cache/session.py
index a4c709f..8260c64 100644
--- a/requests_cache/session.py
+++ b/requests_cache/session.py
@@ -11,19 +11,20 @@ from urllib3 import filepost
from ._utils import get_valid_kwargs
from .backends import BackendSpecifier, init_backend
-from .cache_control import CacheActions, set_request_headers
-from .expiration import ExpirationTime
from .models import AnyResponse, CachedResponse, OriginalResponse
-from .serializers import SerializerPipeline
-from .settings import (
+from .policy import (
DEFAULT_CACHE_NAME,
DEFAULT_IGNORED_PARAMS,
DEFAULT_METHODS,
DEFAULT_STATUS_CODES,
+ CacheActions,
CacheSettings,
+ ExpirationTime,
FilterCallback,
KeyCallback,
+ set_request_headers,
)
+from .serializers import SerializerPipeline
__all__ = ['CachedSession', 'CacheMixin']
diff --git a/tests/integration/test_mongodb.py b/tests/integration/test_mongodb.py
index ecec6c6..67e7d75 100644
--- a/tests/integration/test_mongodb.py
+++ b/tests/integration/test_mongodb.py
@@ -15,7 +15,7 @@ from requests_cache.backends import (
MongoDict,
MongoPickleDict,
)
-from requests_cache.expiration import NEVER_EXPIRE
+from requests_cache.policy.expiration import NEVER_EXPIRE
from requests_cache.serializers import bson_document_serializer
from tests.conftest import HTTPBIN_FORMATS, HTTPBIN_METHODS, fail_if_no_connection, httpbin
from tests.integration.base_cache_test import TEST_SERIALIZERS, BaseCacheTest
diff --git a/tests/unit/test_cache_control.py b/tests/unit/policy/test_actions.py
index 5bfa2ad..f70cc8d 100644
--- a/tests/unit/test_cache_control.py
+++ b/tests/unit/policy/test_actions.py
@@ -4,9 +4,9 @@ from unittest.mock import MagicMock, patch
import pytest
from requests import PreparedRequest, Request
-from requests_cache.cache_control import EXPIRE_IMMEDIATELY, CacheActions
from requests_cache.models import CachedResponse
-from requests_cache.settings import CacheSettings
+from requests_cache.policy.actions import EXPIRE_IMMEDIATELY, CacheActions
+from requests_cache.policy.settings import CacheSettings
from tests.conftest import ETAG, HTTPDATE_STR, LAST_MODIFIED, MOCKED_URL, get_mock_response
IGNORED_DIRECTIVES = [
@@ -27,7 +27,7 @@ IGNORED_DIRECTIVES = [
(None, None, 1),
],
)
-@patch('requests_cache.cache_control.get_url_expiration')
+@patch('requests_cache.policy.actions.get_url_expiration')
def test_init(
get_url_expiration,
request_expire_after,
diff --git a/tests/unit/test_expiration.py b/tests/unit/policy/test_expiration.py
index 037444d..d248fa7 100644
--- a/tests/unit/test_expiration.py
+++ b/tests/unit/policy/test_expiration.py
@@ -3,7 +3,7 @@ from unittest.mock import patch
import pytest
-from requests_cache.expiration import (
+from requests_cache.policy.expiration import (
EXPIRE_IMMEDIATELY,
get_expiration_datetime,
get_url_expiration,
diff --git a/tests/unit/test_session.py b/tests/unit/test_session.py
index 27af9f5..485e71e 100644
--- a/tests/unit/test_session.py
+++ b/tests/unit/test_session.py
@@ -17,7 +17,7 @@ from requests_cache import ALL_METHODS, CachedSession
from requests_cache._utils import get_placeholder_class
from requests_cache.backends import BACKEND_CLASSES, BaseCache, SQLiteDict, SQLitePickleDict
from requests_cache.backends.base import DESERIALIZE_ERRORS
-from requests_cache.expiration import DO_NOT_CACHE, EXPIRE_IMMEDIATELY, NEVER_EXPIRE
+from requests_cache.policy.expiration import DO_NOT_CACHE, EXPIRE_IMMEDIATELY, NEVER_EXPIRE
from tests.conftest import (
MOCKED_URL,
MOCKED_URL_404,