History¶
0.12.3 (2024-10-04)¶
Revert some changes from
v0.12.0
, and add alternative fix for compatibility with aiohttp 3.10.6+
0.12.2 (2024-10-02)¶
Fixed a regression in
v0.12.0
when therequest_info
property was unavailable on a cached response. (!260)
0.12.1 (2024-10-02)¶
Fixed
get_encoding()
access after unpickling. (#256)
0.12.0 (2024-10-01)¶
Add support for Python 3.13
Fix
CachedResponse.is_expired
check to consider any errors as “expired”. (!252)Fix compatibility with aiohttp 3.10.6+ (#251)
Now
CachedResponse
inherits from theaiohttp.ClientResponse
.
0.11.1 (2024-08-01)¶
Fix compatibility with aiosqlite 0.20
Add complete type hints for
CachedSession.get()
,post()
, etc. for compatibility with aiohttp 3.10Remove usage of
datetime.utcnow()
(deprecated in python 3.12)
0.11.0 (2024-02-08)¶
Add support for Python 3.12.
Add a Docker Compose file with DragonflyDB service that can be used as a Redis drop-in replacement.
Add minor performance improvements for MongoDB backend. (!203)
Deprecations and Removals¶
Drop support for Python 3.7.
0.10.0 (2023-10-30)¶
Add support for conditional requests with
ETag
andLast-Modified
If a DynamoDB item exceeds the max size (400KB), skip writing to the cache and log a warning instead of raising an error
Add
CachedResponse.closed
attribute for compatibility withaiohttp.ClientResponse
Close
aiosqlite
thread if it’s still running when session object is deletedMove redirects cache for
FileBackend
into same directory as cached response filesFix issue in which
CachedSession.disabled()
prevents only cache read but not write
0.9.1 (2023-09-20)¶
Remove unintended optional dependencies in both PyPI and conda-forge packages
0.9.0 (2023-09-19)¶
Add compatibility with Sentry python SDK
Add
autoclose
option toCacheBackend
to close backend connections when the session context exits.Enabled by default for SQLite backend, and disabled by default for other backends.
python-forge
is no longer required and is now an optional dependencyFix reading response content multiple times for memory backend
0.8.2 (2023-07-14)¶
Add some missing type annotations to backend classes
Fix passing connection parameters to MongoDB backend
Revert closing backend connections on session context exit
Fix
CachedResponse.close()
method to matchClientResponse.close()
0.8.1 (2023-01-05)¶
For SQLite backend, close database connection on
ClientSession
context exit
0.8.0 (2022-12-29)¶
Lazily initialize and reuse SQLite connection objects
Fix
AttributeError
when using a response cached with an older version ofattrs
Fix concurrent usage of
SQLiteCache.bulk_commit()
Add
fast_save
option forSQLiteCache
(PRAGMA
setting to improve write performance, with some tradeoffs)
0.7.3 (2022-07-31)¶
Remove upper version constraint for
attrs
dependency
0.7.2 (2022-07-13)¶
Fix
TypeError
bug when usingexpire_after
param withCachedSession._request()
0.7.1 (2022-06-22)¶
Fix possible deadlock with
SQLiteCache.init_db()
andclear()
0.7.0 (2022-05-21)¶
Support manually saving a response to the cache with
CachedSession.cache.save_response()
Add compatibility with aioboto3 0.9+
Migrate to redis-py 4.2+ (merged with aioredis)
Add missing
aiosqlite
dependency for filesystem backendAdd missing
CachedResponse
properties derived from headers:charset
content_length
content_type
Add support for async filter functions
Move repo to requests-cache organization
0.6.1 (2022-02-13)¶
Migrate to aioredis 2.0
Fix issue with restoring empty session cookies
0.6.0 (2022-02-12)¶
Add a
bulk_delete()
method for all backends to improve performance ofdelete_expired_responses()
Update session cookies after fetching cached responses with cookies
Update session cookies after fetching cached responses with redirects with cookies
Add support for additional request parameter types that
aiohttp
accepts:Strings
(key, value)
sequencesNon-
dict
Mapping
objects
Fix URL normalization for
MultiDict
objects with duplicate keysE.g., so
http://url.com?foo=bar&foo=baz
is cached separately fromhttp://url.com?foo=bar
Update
ignored_params
to also apply to headers (ifinclude_headers=True
)
0.5.2 (2021-11-03)¶
Fix compatibility with aiohttp 3.8
0.5.1 (2021-09-10)¶
Fix issue with request params duplicated from request URL
0.5.0 (2021-09-01)¶
Add a filesystem backend
Add support for streaming requests
Add
RedisBackend.close()
methodAdd
MongoDBPickleCache.values()
method that deserializes itemsAllow
BaseCache.has_url()
anddelete_url()
to take all the same parameters ascreate_key()
Improve normalization for variations of URLs & request parameters
Fix handling of request body when it has already been serialized
Fix bug enabling Cache-Control support by default
Add some missing no-op methods to
CachedResponse
for compatibility withClientResponse
0.4.3 (2021-07-27)¶
Fix bug in which reponse header
Expires
was used for cache expiration even withcache_control=False
Fix bug in which HTTP dates parsed from response headers weren’t converted to UTC
Add handling for invalid timestamps in
CachedResponse.is_expired
0.4.2 (2021-07-26)¶
Fix handling of
CachedResponse.encoding
when the response body isNone
0.4.1 (2021-07-09)¶
Fix initialziation of
SQLiteBackend
so it can be created outside main event loop
0.4.0 (2021-05-12)¶
Add optional support for the following request headers:
Cache-Control: max-age
Cache-Control: no-cache
Cache-Control: no-store
Add optional support for the following response headers:
Cache-Control: max-age
Cache-Control: no-store
Expires
Add support for HTTP timestamps (RFC 5322) in
expire_after
parametersAdd a
use_temp
option toSQLiteBackend
to use a tempfilePackaging is now handled with Poetry. For users, installation still works the same. For developers, see Contributing Guide for details
Published package on conda-forge
0.3.0 (2021-04-09)¶
Add async implementation of DynamoDb backend
Add support for expiration for individual requests
Add support for expiration based on URL patterns
Add support for serializing/deserializing
ClientSession.links
Add case-insensitive response headers for compatibility with aiohttp.ClientResponse.headers
Add optional integration with
itsdangerous
for safer serializationAdd
CacheBackend.get_urls()
to get all urls currently in the cacheAdd some default attributes (
from_cache, is_expired
, etc.) to returned ClientResponse objectsAllow passing all backend-specific connection kwargs via CacheBackend
Add support for
json
request bodyConvert all
keys()
andvalues()
methods into async generatorsFix serialization of Content-Disposition
Fix filtering ignored parameters for request body (
data
andjson
)Add user guide, more examples, and other project docs
0.2.0 (2021-02-28)¶
Refactor SQLite backend to use
aiosqlite
for async cache operationsRefactor MongoDB backend to use
motor
for async cache operationsRefactor Redis backend to use
aiosqlite
for async cache operationsAdd integration tests and
docker-compose
for local test servers
0.1.0 (2020-11-14)¶
Initial fork from
requests-cache
First pass at a general refactor and conversion from
requests
toaiohttp
Basic features are functional, but some backends do not actually operate asynchronously