Releases: Attumm/redis-dict
v3.2.0 Redis Dict: Python Dictionary
This release focused on adding Python dictionary behavior to Redis Dict. Two missing features have been addressed:
- Raise-on-Delete Flag: Redis Dict will now have a new boolean flag,
raise_key_error_delete
. When set toTrue
, Redis Dict will raise aKeyError
when attempting to delete a key that has already been deleted. While this behavior might not be always ideal in distributed computing scenarios it is how python dictionary behaves. Thanks to @Pydes-boop for raising the issue and providing the solution. - Python Redis Dict: This new Python Redis Dict aims to be a direct drop-in replacement for a standard Python dictionary. It will support insertion order and future updates will include typed keys and nested support for complete compatibility. @enzoBrum for analysing the issue and bringing up the issue
Added security check during build and CI
Added security check through the library bandit during CI, And build process.
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