Releases: strawgate/py-key-value
Releases · strawgate/py-key-value
0.4.4: The Fix 🔧 2.0
0.4.3: The Fix 🔧
What's Changed
- feat: mark FileTreeStore as stable and remove unused code by @strawgate in #304
- fix: move shared code to avoid namespace conflicts on uninstall by @strawgate in #303
Full Changelog: 0.4.2...0.4.3
0.4.2: The Big 🌲
Full Changelog: 0.4.0...0.4.2
0.4.0: Expanded Options 📈
Here is a summary of the changes between version 0.3.0 and 0.4.0 for the py-key-value library.
🚀 New Storage Backends
This release adds support for five new major storage providers, significantly widening the library's compatibility:
- AWS S3 (PR #231)
- PostgreSQL (PR #268)
- Google Firestore (PR #249)
- OpenSearch (PR #217)
- Aerospike (PR #58)
🏗️ Architectural & Core Improvements
- New Adapter Architecture: Implemented a 3-adapter architecture featuring
BaseModelAdapterfor better abstraction (PR #256). - Valkey Enhancements: Added
GlideClusterClientsupport toValkeyStore(PR #264). - Setup Control: Added the ability to skip automatic store setup (PR #258).
🐛 Key Bug Fixes
- Redis Authentication: Fixed an issue where the username was not being extracted correctly from Redis URLs for ACL authentication (PR #255).
- Serialization: Fixed handling of non-JSON-serializable types in
PydanticAdapterschema generation (PR #284). - Edge Cases: Fixed
hash_excess_lengthboundary conditions (PR #280).
🛠️ Developer Experience & Testing
- Modern Testing: Migrated the test suite to use Testcontainers, improving reliability and reducing flakes (PR #274).
- Documentation: Added
CODE_STYLE.md,CONTRIBUTING.md, andCLAUDE.mdto help new contributors (PR #289). - Dev Container: Added Docker CLI to the devcontainer environment (PR #262).
New Contributors
- @alexeylark made their first contribution in #249
Full Changelog: 0.3.0...0.4.0
0.3.0: The Store is now Open
Unstable stores may have had breaking changes to how they store data.
🚀 New Features & Storage Backends
- New Stores: Added support for DuckDB and FileTreeStore.
- Routing Wrappers: Introduced
RoutingWrapperandCollectionRoutingWrapperto manage request routing between stores. - Dataclasses: Added
DataclassAdapterutilizing PydanticTypeAdapterfor better object serialization.
⚡ Core API & Architecture
- Lifecycle Management: Refactored client ownership to better handle store lifecycle (setup/teardown). If you provide a client you own entering / exiting it.
- Serialization Updates: Serialized documents now explicitly include
key,collection, andversionfields. - Input Refactoring: Switched input parameters from strict
dict/listto abstractMapping/Sequencefor better compatibility. - Batch Operations:
put_manynow requires a single TTL for all items in the batch, rather than individual TTLs. - Sanitization: Introduced
SanitizationStrategyfor configurable input cleaning during store initialization. Stores no long sanitize by default, you must select the sanitization method when providing the store.
🛡️ Reliability & Type Safety
- Runtime Enforcement: extensive application of BearType across Stores, Wrappers, and utility functions to enforce runtime type safety.
- Bug Fixes: Resolved critical bugs regarding Memory Store TTL, Windows Registry operations, and DynamoDB TTL creation.
- Relaxed Dependencies: Loosened version constraints for
pymongo,elasticsearch,cachetools, anddiskcache.
0.2.8: 🔒 Encrypted 🪟 Windows
0.2.7: Add Encryption Wrapper
What's Changed
- Add EncryptionWrapper for securing stored values by @Copilot in #75
Full Changelog: 0.2.6...0.2.7
0.2.6: ⤵️ Down with Redis
What's Changed
- fix bearspray type checking by @strawgate in #65
- Add aws_session_token parameter to DynamoDBStore for IAM role assumption support by @Copilot in #69
- Loosen redis version constraint from >=6.0.0 to >=4.3.0 by @Copilot in #68
- Bump to 0.2.6 by @strawgate in #72
Full Changelog: 0.2.5...0.2.6
0.2.5: Sync don't sink
pin the shared dep to the same version as the package version
Full Changelog: 0.2.4...0.2.5
0.2.4: Stores and Wrappers
What's Changed
- Add Retry, Timeout, Fallback, ReadOnly, Logging, Compression Wrappers by @strawgate in #50
- Add DynamoDB Store by @strawgate in #54
- Add Vault by @strawgate in #51
- Add RocksDB Store by @strawgate in #64
Full Changelog: 0.2.2...0.2.4