diff options
author | Jordan Cook <jordan.cook@pioneer.com> | 2022-04-17 13:49:34 -0500 |
---|---|---|
committer | Jordan Cook <jordan.cook@pioneer.com> | 2022-04-17 19:25:20 -0500 |
commit | 7ebf9df7ae2534bad66dc4f102993f5fb6d789b2 (patch) | |
tree | 91fb12d84ea6a39fb46fd865baec32a283b9e51b | |
parent | 451b5dfca5b3c60dd52098902ce37125d4a1a45f (diff) | |
download | requests-cache-7ebf9df7ae2534bad66dc4f102993f5fb6d789b2.tar.gz |
Move all cache policy-related modules to separate 'policy' subpackage
-rw-r--r-- | HISTORY.md | 3 | ||||
-rw-r--r-- | pyproject.toml | 1 | ||||
-rw-r--r-- | requests_cache/__init__.py | 4 | ||||
-rw-r--r-- | requests_cache/backends/base.py | 4 | ||||
-rw-r--r-- | requests_cache/backends/mongodb.py | 2 | ||||
-rw-r--r-- | requests_cache/backends/sqlite.py | 2 | ||||
-rwxr-xr-x | requests_cache/models/response.py | 4 | ||||
-rw-r--r-- | requests_cache/patcher.py | 2 | ||||
-rw-r--r-- | requests_cache/policy/__init__.py | 5 | ||||
-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.py | 9 | ||||
-rw-r--r-- | tests/integration/test_mongodb.py | 2 | ||||
-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.py | 2 |
17 files changed, 33 insertions, 27 deletions
@@ -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, |