Releases: Attumm/redis-dict
Valkey Compatibility Check
Valkey Compatibility:
- Added a CI pipeline with Valkey instead of Redis to test and verify compatibility with Valkey.
- Added badge to readme to show valkey compatibility.
- Added start scripts for Valkey for testing and development.
Updated Readme
Updated the readme:
- Fixed deadlinks
- Added internal links
- Added security text
Added README Badge and Updated README
This release is special in the sense that the title encapsulates the updates included.
But for brevity here are the release notes:
This release adds a README badge and includes several updates to the README file. Changes include:
- Added README badge
- Updated various sections of the README"
v3.2.1 Maintenance
This release includes dependency updates and configuration fixes. The following changes have been made:
Python Build Version: Pinned to Python 3.11 to resolve an ImportError with the cryptography package in Python 3.13.
Cryptography Update: Development dependencies have been updated to use cryptography 44.0.1.
Code Coverage Accuracy: Stopped CodeCov from checking if tests are tested by tests. This change provides more accurate representation of the project's test coverage.
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