diff options
author | Jordan Cook <jordan.cook@pioneer.com> | 2022-03-28 16:32:33 -0500 |
---|---|---|
committer | Jordan Cook <jordan.cook@pioneer.com> | 2022-04-01 13:55:09 -0500 |
commit | d05d042423151eaf61431b6f391338e448bbd5e5 (patch) | |
tree | 668c9f2d56e61f729e0cca99d3bb3031e88771ce /requests_cache/models | |
parent | 810e9d7085a0c7409b3a1b1002fb8f33292bce52 (diff) | |
download | requests-cache-d05d042423151eaf61431b6f391338e448bbd5e5.tar.gz |
Move settings module to top level package, and leave 'models' subpackage for only serialized data models
Diffstat (limited to 'requests_cache/models')
-rw-r--r-- | requests_cache/models/__init__.py | 1 | ||||
-rw-r--r-- | requests_cache/models/settings.py | 72 |
2 files changed, 0 insertions, 73 deletions
diff --git a/requests_cache/models/__init__.py b/requests_cache/models/__init__.py index f2e7c19..6ffc7ad 100644 --- a/requests_cache/models/__init__.py +++ b/requests_cache/models/__init__.py @@ -7,7 +7,6 @@ from requests import PreparedRequest, Request, Response from .raw_response import CachedHTTPResponse from .request import CachedRequest from .response import CachedResponse, set_response_defaults -from .settings import ALL_METHODS, CacheSettings, FilterCallback, KeyCallback, RequestSettings AnyResponse = Union[Response, CachedResponse] AnyRequest = Union[Request, PreparedRequest, CachedRequest] diff --git a/requests_cache/models/settings.py b/requests_cache/models/settings.py deleted file mode 100644 index ff83206..0000000 --- a/requests_cache/models/settings.py +++ /dev/null @@ -1,72 +0,0 @@ -from typing import TYPE_CHECKING, Callable, Dict, Iterable, Union - -from attr import asdict, define, field - -from .._utils import get_valid_kwargs -from ..expiration import ExpirationTime - -if TYPE_CHECKING: - from . import AnyResponse - -ALL_METHODS = ('GET', 'HEAD', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE') -DEFAULT_CACHE_NAME = 'http_cache' -DEFAULT_METHODS = ('GET', 'HEAD') -DEFAULT_STATUS_CODES = (200,) - -# Signatures for user-provided callbacks -FilterCallback = Callable[['AnyResponse'], bool] -KeyCallback = Callable[..., str] - - -@define(init=False) -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 - (``CachedSession.settings``). These values can safely be modified after initialization. See - :py:class:`.CachedSession` for usage details. - """ - - allowable_codes: Iterable[int] = field(default=DEFAULT_STATUS_CODES) - allowable_methods: Iterable[str] = field(default=DEFAULT_METHODS) - cache_control: bool = field(default=False) - disabled: bool = field(default=False) - expire_after: ExpirationTime = field(default=None) - filter_fn: FilterCallback = field(default=None) - ignored_parameters: Iterable[str] = field(default=None) - key_fn: KeyCallback = field(default=None) - match_headers: Union[Iterable[str], bool] = field(default=False) - only_if_cached: bool = field(default=False) - stale_if_error: bool = field(default=False) - urls_expire_after: Dict[str, ExpirationTime] = field(factory=dict) - - # Additional settings that may be set for an individual request; not used at session level - refresh: bool = field(default=False) - revalidate: bool = field(default=False) - request_expire_after: ExpirationTime = field(default=None) - - def __init__(self, **kwargs): - """Ignore invalid kwargs for easier initialization from mixed ``**kwargs``""" - kwargs = self._rename_kwargs(kwargs) - kwargs = get_valid_kwargs(self.__attrs_init__, kwargs) - self.__attrs_init__(**kwargs) - - @staticmethod - def _rename_kwargs(kwargs): - """Handle some deprecated argument names""" - if 'old_data_on_error' in kwargs: - kwargs['stale_if_error'] = kwargs.pop('old_data_on_error') - if 'include_get_headers' in kwargs: - kwargs['match_headers'] = kwargs.pop('include_get_headers') - return kwargs - - -@define(init=False) -class RequestSettings(CacheSettings): - """Cache settings that may be set for an individual request. Starts with session-level cache - settings and adds/overrides with request-level settings""" - - def __init__(self, session_settings: CacheSettings = None, **kwargs): - session_kwargs = asdict(session_settings) if session_settings else {} - # request-level expiration needs to be stored separately - kwargs['request_expire_after'] = kwargs.pop('expire_after', None) - super().__init__(**{**session_kwargs, **kwargs}) |