Releases: oxia-db/oxia-client-python
Releases · oxia-db/oxia-client-python
v0.2.1
v0.2.0
What's new
Session management
- Keepalives and safe session recreation — sessions now send periodic heartbeats and automatically recreate if expired (#7)
Correctness fixes
- Notifications reconnect after stream failure — rewrote the Notifications subsystem with a coordinator thread that detects worker failures and reconnects from the last-seen offset (#14)
- Notifications.close() deadlock — close no longer joins worker threads while holding the lock (#13)
- ConnectionPool thread-safety — concurrent
get()calls no longer create duplicate gRPC channels (#15) - SequenceUpdatesImpl inherits SequenceUpdates ABC — fixes the broken type contract (#16)
- _check_status raises on unknown statuses — previously fell through silently, risking silent data loss (#17)
- ServiceDiscovery init timeout — raises
RuntimeErrorwith context instead of a confusingBrokenBarrierError(#18) - put() value type validation — rejects non-str/non-bytes values with a clear
TypeErrorinstead of erroring deep in protobuf (#19) - raise KeyNotFound() consistency — class-raise changed to instance-raise (#19)
Quality improvements
- Client is now a context manager —
with oxia.Client(...) as c:(#23) - Return type annotations fixed —
-> (str, Version)corrected to-> tuple[str, Version]; value type corrected fromstrtobytes(#21) - put() type hint — parameter changed from
objecttostr | bytes(#22) - print() replaced with logging in service_discovery and sequence_updates (#20)
- Authors field — pyproject.toml now says "The Oxia Authors" matching all source headers (#24)
- Docstrings — comprehensive pass over all public API docs: fixed incorrect
@raises, wrong types, typos, added context manager example (#26)
Testing
- 13 new tests covering compare edge cases, hierarchical sort consistency, SessionNotFound, ephemeral lifecycle, secondary-index EQUAL lookups, session timeout boundaries, and more (#8)
- Code coverage — added pytest-cov to CI with XML artifact upload, 90% fail-under threshold (#9)
- Test warnings eliminated — fixed logging format bug in notifications, filtered testcontainers deprecation (#10)
CI & compatibility
- Python 3.10 through 3.14 — CI matrix now tests all five versions;
requires-pythonlowered from>=3.13to>=3.10(#11)
Documentation
- README rewritten — install instructions, quick-start snippet, feature list, fixed badges and broken links (#25)
- CONTRIBUTING rewritten — Python-specific dev setup (uv, Docker, pytest), DCO sign-off docs, fixed "golang project" references (#25)
Full Changelog: v0.1.1...v0.2.0
v0.1.1
Full Changelog: v0.1.0...v0.1.1
v0.1.0 - First test release
Added workflow to publish on PyPI