Releases: Attumm/redis-dict
Added security check during build and CI
v3.1.1
v3.1.0 Sphinx documentation
In this release, Added Sphinx documentation and deployment with some small improvements for docstrings.
Documentation can be accessed online: https://attumm.github.io/redis-dict/
A GitHub Actions workflow has been added to automate the build and deployment of Sphinx documentation directly to GitHub Pages.
v3.0.0 Modernization of Package
RedisDict v3.0.0
Major Changes
Project Structure
- Reorganised project structure
- Reorganized test suite into subdirectories (150+ tests)
- Added dedicated scripts directory for CI/CD and documentation
- Implemented modern project configuration with
pyproject.toml
Python Modernization
- Removed Python 2.x legacy code, including
iter
methods - Added Python 3.9+ dictionary union operator support (
dict | other_dict
) - Implemented all standard
dict
methods for full compatibility
Type System Improvements
- Added
py.typed
file for improved type checker compliance .PEP 561 - Added mypy configuration with
pyproject.toml
- Added nested type support through JSON encoding/decoding
- Exposed JSON encoders/decoders for custom type handling
Quality
- Enhanced docstring consistency for upcoming Sphinx documentation
- Added examples in Readme for nested types, and JSON encoders/decoders
- Updated the links in Readme for docs/tests
- Added pypi badge to Readme
Breaking Changes
- Removed Python 2.x legacy methods
- Minimum Redis version requirement: 6.2.0
- Changed iteration behavior of methods
items
,values
,keys
to align with Python 3.x standards
Coming in v3.1.0
- Comprehensive documentation improvements
- Sphinx integration
Redis Compatibility
- Now requires Redis 6.2.0+ to fix race conditions in
setdefault
andpop
methods - Implemented atomic operations for improved data consistency
Closed Issues
- #68: Modern conventions and best practices
- #60: Race condition under certain circumstances
setdefault
,pop
Contributors:
Special thanks to these contributors:
@shughes-uk - Bug identification and reporting
@jvllmr - Feature implementation
This release represents a major modernization effort, bringing RedisDict up to current Python Standards
2.7.0 Expanded Type Compatibility
2.7.0 Expanded Type Compatibility
RedisDict will now offer wider support for a wider range of Python data types, from basic types to nested structures. Basic types are handled natively, while complex data types, such as: lists and dictionaries. Are managed through JSON serialization. This choice avoids using pickle, a module with known security vulnerabilities in distributed computing.
Although RedisDict supports nested structures, using RedisDict as a shallow dictionary is recommended for optimal performance. This approach minimizes transformations and aligns with Redis’s key-value solution while preserving RedisDict’s Pythonic interface.
Supported Types:
str, int, float, bool, NoneType, list, dict, tuple, set, datetime, date, time, timedelta, Decimal, complex, bytes, UUID, OrderedDict, defaultdict, frozenset
Added custom Types
v.2.6.0
Added extended types, allowing for custom types to be added and even storing values encrypted. Additionally, various housekeeping updates have been made to improve overall code quality and maintainability.
- Added support for extended types and custom type additions
- Example encrypted value storage
- Added testing for extended types and encryption
- Refactored transform functionality for improved encoding/decoding
- Updated README with new sections on extended types and examples
Updated Readme and Housekeeping
This release focuses on documentation updates and general maintenance of the project.
The primary goal is to ensure that the latest README changes are reflected on PyPI.
Forward and backwards compatibility
Many thanks to @Pydes-boop for discovering that redis-dict had almost complete compatibility with dictionaries. However, full compatibility was not in place due to the existing legacy Python2 thunder methods. Subsequently, @Pydes-boop also resolved the issue perfectly with the most appropriate changes, and demonstrated behaviour equivalence with tests. Thanks a bunch.
- Updated to python3 eq and neq comparison operators @Pydes-boop
- Changed typing for compatibility with Python 3.9 @Girgitt
- Small update for readme
- Bump cryptography from 42.0.2 to 42.0.4 for test requirements
Additionally, a small thank you to @Girgitt for drawing attention to the issue of backward compatibility.
updated readme, test-requirement bump
updated readme, test-requirement bump
V2.4.0 Added datetime timedelta for expiration
V2.4.0
Added datetime timedelta for expiration during initialization and within the context manager.
Bumped the test-requirement version of cryptography.
Great thanks to @Pydes-boop for incorporating timedeltas for expiration during initialization and in the context manager.
passed:
mypy --strict redis_dict.py
pylama redis_dict.py -i E501