# Changes

## Version 0.13.0

Released 2024-04-13

- default `hashlib.md5` may not be available in FIPS builds. We now do not access it at import time on `FileSystemCache``so developers have time to change the default. ``hashlib.md5` will be lazy loaded when a new default is not provided

## Version 0.12.0

Released 2024-02-11

- `RedisCache` now supports callables as keys

- Added `MongoDB` as a cache backend

## Version 0.11.0

Released 2024-02-10

- Drop python 3.7 support

- Add python 3.11 support

## Version 0.10.2

Released 2023-01-31

- Fix broken release

## Version 0.10.1

Released 2023-01-22

- Fix logging pollution due to `DynamoDB` logging handler

## Version 0.10.0

Released 2023-01-22

- Improve error message when `FileSystemCache` methods are called with non-str keys. #170

- Added `DynamoDb` as a cache backend #209

## Version 0.9.0

Released 2022-06-26

- Add separate internal read/write clients to `RedisCache` to improve compatibility with flask-caching. #159

- Fix bug where cache entries would expire immediately when `RedisCache.add` was called without timeout. #157

- Improve `FileSystemCache.set` compatibility with Windows systems. #158

## Version 0.8.0

Released 2022-06-13

- Remove deprecated `RedisCache.load_object` and `RedisCache.dump_object`. #147

## Version 0.7.0

Released 2022-05-14

- `FileSystemCache` now stores universal expiration timestamps using python’s `struct` module. #126

- Drop support for Python 3.6. #134

## Version 0.6.0

Released 2022-01-18

- A custom `hash_method` may now be provided to `FileSystemCache` for hashing keys. #107

- Fix `PermissionError` issue with `FileSystemCache` on Windows. #111

## Version 0.5.0

Released 2021-12-31

- Cache types now have configurable serializers. #63

## Version 0.4.1

Released 2021-10-04

- Fix break in `RedisCache` when a host object was passed in `RedisCache.host` instead of a string. #82

## Version 0.4.0

Released 2021-10-03

- All cache types now implement `BaseCache` interface both in behavior and method return types. Thus, code written for one cache type should work with any other cache type. #71

- Add type information for static typing tools. #48

- `FileNotFound` exceptions will not be logged anymore in `FileSystemCache` methods in order to avoid polluting application log files. #69

## Version 0.3.0

Released 2021-08-12

- Optimize `FileSystemCache` pruning. #52

- Fix a bug in `FileSystemCache` where entries would not be removed when the total was over the threshold, and the entry count would be lost. #52

- `FileSystemCache` logs system-related exceptions. #51

- Removal of expired entries in `FileSystemCache` is only triggered if the number of entries is over the `threshhold` when calling `set`. `get` `has` still return `None` and `False` respectively for expired entries, but will not remove the files. All removals happen at pruning time or explicitly with `clear` and `delete`. #53

## Version 0.2.0

Released 2021-06-25

- Support for Python 2 has been dropped. Only Python 3.6 and above are supported.

- Fix `FileSystemCache.set` incorrectly considering value overrides on existing keys as new cache entries. #18

- `SimpleCache` and `FileSystemCache` first remove expired entries, followed by older entries, when cleaning up. #26

- Fix problem where file count was not being updated in `FileSystemCache.get` and `FileSystemCache.has` after removals. #20

- When attempting to access non-existent entries with `Memcached`, these will now be initialized with a given value `delta`. #31

## Version 0.1.1

Released 2020-06-20

- Fix `FileSystemCache` on Windows.