Skip to content

Releases: redis/redis-om-python

Version 1.0.6

30 Jan 22:36
43a7d49

Choose a tag to compare

What's Changed

In 1.0.6:

  • Fix pyright type resolution for Pipeline parameter by @abrookins in #802
  • Fix packaging bug: include generated sync code in wheel (v1.0.6) by @abrookins in #803

Overview for 1.0

This is the first stable release of Redis OM Python. After 9 months of beta testing and 60+ merged PRs, Redis OM Python is now production-ready.

Highlights

  • Full Pydantic 2.0 Support - Complete migration from Pydantic v1, with fixes for 2.12+ compatibility
  • Python 3.10-3.14 Support - Dropped Python 3.8/3.9, added support up to Python 3.14
  • Redis 8 Compatibility - Tested with Redis 8.4
  • New Query Features - Geo filtering, datetime queries, field projection with .values() and .only()
  • Hash Field Expiration - Per-field TTL support for Redis 7.4+
  • Conditional Persistence - save(nx=True) and save(xx=True) for atomic create/update
  • RedisVL Integration - New helpers (to_redisvl_schema(), get_redisvl_index()) for using Redis OM with RedisVL for advanced vector search
  • UV Package Management - Switched from Poetry to UV for faster dependency resolution

Breaking Changes

  • Python 3.8 and 3.9 dropped - Minimum Python version is now 3.10
  • Pydantic 2.0 required - Pydantic 1.x is no longer supported
  • Explicit indexing required - Models must use index=True class parameter (e.g., class MyModel(JsonModel, index=True))
  • Datetime fields stored as NUMERIC - Previously stored as TAG; requires data migration via om migrate-data

New Features

Query Enhancements

  • Geo Filtering - Query by geographic radius using pydantic-extra-types Coordinate type (#704)
  • Datetime Field Queries - Filter by datetime fields with proper NUMERIC indexing (#711)
  • Field Projection - .values() returns dicts, .only() returns partial model instances (#633)
  • Custom TAG Separators - Field(separator=",") for TAG fields (#800)

Persistence

  • Conditional Save - save(nx=True) only saves if key doesn't exist, save(xx=True) only updates existing (#746)
  • Hash Field Expiration - Field(expire=N), model.expire_field(), model.field_ttl(), model.persist_field() for Redis 7.4+ (#752)

Developer Experience

  • py.typed Marker - Full mypy/pyright support with PEP 561 marker (#771)
  • mypy __all__ exports - from aredis_om import ... now passes mypy --strict (#770)
  • Custom Primary Keys - Documentation for UUID v7 and custom PK generators (#795)
  • EmbeddedJsonModel - No longer generates unnecessary primary keys (#797)
  • Data Migrations System - New om migrate-data CLI for data transformations (#711)

Bug Fixes

Pydantic 2.0 Migration (#691)

  • Fix aliases breaking queries
  • Fix default values not working with multiple inheritance levels
  • Fix model_fields_set inaccuracy with exclude_unset=True
  • Fix context object being set to None during validation
  • Fix KNNExpression expecting removed ModelField type
  • Fix unintentional indexing of inherited fields

Query Fixes

  • Fix Enum with int values producing wrong query syntax (#108 via #792)
  • Fix IN operator not working for NUMERIC fields (#499 via #792)
  • Fix OR expression with KNN producing syntax error (#787)
  • Fix incorrect query prefixing for embedded models in query construction (#657)

Model Fixes

  • Fix Optional field retrieval breaking HashModel - empty strings now convert back to None (#254 via #792)
  • Fix inconsistent .pk behavior with custom primary keys (#784)
  • Fix HashModel list validation blocking vector fields - list[float] now allowed for vector fields (#785)
  • Fix bytes fields failing with UnicodeDecodeError - now uses base64 encoding (#783)
  • Fix EmbeddedJsonModel generating unnecessary primary keys (#797)
  • Fix TAG field separator not being honored (#800)

Compatibility Fixes

  • Fix Pydantic 2.12+ compatibility for custom FieldInfo with Annotated types (#727)
  • Fix Python 3.14 dict iteration error in JsonModel (#764)
  • Fix Python 3.13 issubclass changes with nested vector fields (#699)
  • Fix has_redisearch missing await (#771)
  • Fix Pydantic V3 deprecation warning for model_fields access (#770)
  • Fix cast from db connections with non-decoded output (#664)

CLI & Infrastructure

  • Fix CLI import_submodules to work with pyenv (#788)

Infrastructure

  • Switched from Poetry to UV for dependency management (#781)
  • Updated documentation to Material for MkDocs theme (#778)
  • Added benchmark test suite with regression detection (#798, #799)
  • Tested with Redis 8.4 (#768)
  • Updated PyPI classifier to "Production/Stable" (#769)
  • Added comprehensive example apps (FastAPI async, Flask sync) (#781)

Contributors

Thank you to all contributors across the beta releases:
@sethbuff, @ivanbelenky, @slorello89, @bsbodden, @AlboCode, @sav-norem, @bonastreyair, @huwaizatahir2, and the Redis team

Full Changelog: v0.3.5...v1.0.6

Version 1.0.5 (yanked)

30 Jan 01:42

Choose a tag to compare

This build was yanked because it did not include generated sync Python files, only async.

See notes for version 1.0.6!

Version 1.0.4-beta

30 Jan 01:26
9f11bc7

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.0.3-beta...v1.0.4-beta

Version 1.0.3-beta

12 Aug 18:17
b00c9e0

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.0.2-beta...v1.0.3-beta

Version 1.0.2-beta

13 May 15:01
8ddb6b7

Choose a tag to compare

What's Changed

  • fix issue with nested vector fields and python 3.13 issubclass changes by @sethbuff in #699

Full Changelog: v1.0.1-beta...v1.0.2-beta

Version 1.0.1-beta

09 May 15:06
7ca997c

Choose a tag to compare

What's Changed

Full Changelog: v1.0.0-beta...v1.0.1-beta

What's Changed

Full Changelog: v1.0.0-beta...v1.0.1-beta

Version 1.0.0-beta

30 Apr 17:20
cd117b2

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.3.4...v1.0.0-beta

Version 0.3.5

04 Apr 12:53

Choose a tag to compare

🐛 Bug Fixes

  • handle default issue with multiple inheritance (#687)

Contributors

We'd like to thank all the contributors who worked on this release!

@sethbuff and @slorello89

Version 0.3.4

02 Apr 12:49

Choose a tag to compare

Changes

  • revving to 0.3.4 (#684)
  • fix logo (#681)

🐛 Bug Fixes

  • enhancing primary key check to be compatible with sqlmodel (#672)
  • Fix: Incorrect Query Prefixing for Embedded Models in Query Construction (#657)
  • fixing issue with inherited defaults (#673)

Contributors

We'd like to thank all the contributors who worked on this release!

@abrookins, @bilal02arbisoft and @slorello89

Version 0.3.3

04 Nov 14:02
6b521d5

Choose a tag to compare

Changes

🐛 Bug Fixes

  • fixing broken Pydantic v1 regression (#663)

🧰 Maintenance

  • revving 0.3.3 (#667)
  • Update pytest-asyncio requirement from ^0.23.5 to ^0.24.0 (#651)
  • Update setuptools requirement from >=70.0,<73.0 to >=70.0,<76.0 (#655)
  • Bump rojopolis/spellcheck-github-actions from 0.40.0 to 0.44.0 (#665)

Contributors

We'd like to thank all the contributors who worked on this release!

@dependabot, @dependabot[bot] and @slorello89