Skip to content

Releases: ravendb/ravendb-python-client

7.0.2

30 May 14:57
7159ea6
Compare
Choose a tag to compare

Python Client 7.0.2 is out 🐍🚀

It delivers powerful streaming capabilities, AI Integration query API, plus a fix for handling emojis

  • New: Document and Query Streaming API – stream large result sets efficiently 🔄📄
  • New: AI Integration's using_task support in vector search – vector queries using AI Embedding Generation Tasks 🤖🧠
  • Fix: Better error parsing in RequestExecutor for smoother debugging 🛠️
  • Fix: 🐛 UTF-8 encoding added to document data – your emojis are safe now 💾📦

New Contributors

  • 👏 @yh-0 implemented streaming support (#238)
  • 👏 @MohKamal improved emoji handling with UTF-8 encoding (#239)

Feel free to join our Discord Community & discuss the release here: https://discord.gg/ravendb 💬🧑‍💻


💡 Highlight: AI Integration using_task

Perform semantic search using AI Embeddings Generation:

q = session.query(object_type=Dto).vector_search_text_using_task("EmbeddingField", "fishing", "my-ai-task")

Also supports variants:

  • vector_search_text_i1_using_task(...)
  • vector_search_text_i8_using_task(...)
  • All with optional is_exact=True

RavenDB Embeddings Generation docs here.


🚿 Streaming API: Lightweight Queries at Scale

Stream documents, queries, raw queries, and even query statistics without loading all results into memory:

✅ Stream a normal query

query = session.query(object_type=Color)
stream = session.advanced.stream(query)
for result in stream:
    print(result.document.name)

✅ Stream a raw RQL query

raw_query = session.advanced.raw_query("from Colors where is_primary = true", object_type=Color)
stream = session.advanced.stream(raw_query)
for result in stream:
    print(result.document.name)

✅ Stream with statistics

def stats_callback(stats):
    print(f"Total results: {stats.total_results}")

query = session.query(object_type=Color).where_equals("is_primary", True)
stream = session.advanced.stream_with_statistics(query, stats_callback)
for result in stream:
    print(result.document.name)

✅ Stream documents by ID prefix

stream = session.advanced.stream_starting_with("colors/", object_type=Color)
for result in stream:
    print(result.document.name)

PRs

  • RDBC-893 Fix parsing of errors inside RequestExecutor._handle_unsuccessful_response by @poissoncorp (#236)
  • RDBC-900 Add usingTask to Python Vector Search API by @poissoncorp (#237)
  • RDBC-670 Streaming by @yh-0 (#238)
  • Add UTF-8 encoding to document data by @MohKamal (#239)

Full Changelog: 7.0.0...7.0.2

7.0.0

12 Feb 12:37
b644192
Compare
Choose a tag to compare

Python Client 7.0 is here 🐍⚡

  • Added Vector Search API, for AI & ML integrations 🦾🤖 (PR)
  • Added SearchEngineType to IndexDefinition - allows creating Corax static indexes 🐦‍⬛📊
  • Bugfixes, operations, more helper methods

Merged PRs worth mentioning

  • RDBC-822 Fix FacetOptions serialization by @poissoncorp in #214
  • RDBC-817 Implement query.projection() by @poissoncorp in #215
  • RDBC-843 Add GetDetailedCollectionStatisticsOperation by @poissoncorp in #217
  • RDBC-845 Implement AddDatabaseNodeOperation by @poissoncorp in #218
  • RDBC-851 Attachments bulk insert doesn't drop concurrency lock after store by @poissoncorp in #219
  • RDBC-844 Implement database settings operations by @poissoncorp in #222
  • RDBC-847 Implement documentStore.Maintenance.Server.ForNode by @poissoncorp in #223
  • RDBC-848 Implement session.Advanced.SessionInfo.SetContext by @poissoncorp in #224
  • RDBC-837/838 Move has_changes and ignore_changes_for to session.advanced by @poissoncorp in #225
  • RDBC-839 Use find_identity_property - implement get identity property by @poissoncorp in #226
  • RDBC-833 Implement session.advanced.get_current_session_node by @poissoncorp in #227

Full Changelog: 5.2.6...7.0.0

5.2.6 ⚡

07 Mar 12:47
40b1baf
Compare
Choose a tag to compare

Breaking changes 🔥

Session methods - lazily.load() and include().load() - #210

  • set object_type argument as optional
  • inverted the object_type and key arguments order
  • lazily.load() now takes a list of str document IDs, not *ids

'Id' property won't be stored at the server anymore - #211

  • Document id is still available as a value of the Id property, but the value is set after serialization
  • Documents loaded as dict objects won't contain the Id key (still available via session.advanced.get_metadata_for(...)["@id"] or session.advanced.get_document_id())
  • Custom from_json methods that have been setting the Id property should skip that step, as the Id property will be set to a valid value after the serialization

What's new 🌬️

  • Added include time series API to subscription includes builder
  • Storing a dict-document while providing document id collection prefix (e.g. session.store({"Name":"Graziano"}, "Users/"}) stores the document under valid collection (e.g. Users), not "dicts"
  • Made object_type argument in get_compare_exchange_values() optional
  • Fixed load_starting_with_into_stream() and made it return bytes stream, instead of passing it as an argument to be modified within the method itself
  • Marked object_type argument as optional in many methods across the API
  • Fixed a bug that caused an error when disposing uninitialized RequestExecutor
  • Improved session.time_series_for() error messages

5.2.5

09 Feb 11:11
8f552ab
Compare
Choose a tag to compare

What's New

  • Ensured full compatibility with RavenDB 6.0.x ⚡
  • Time Series
  • Creation of a document with server-generated GUID (#199)
  • Revisions (#201)
    • Configuration
    • Crud
    • Force revision creation
  • Bulk insert (#202)
    • Counters bulk insert
    • Time series bulk insert
  • HTTPS
    • Secured changes API (#204)
  • Multiple new useful operations & commands (#200, #203)
    • ResetIndexOperation
    • GetStatisticsOperation
    • DeleteIndexErrorsOperation
    • CreateSampleDataOperation
    • ConfigureExpirationOperation
    • ReorderDatabaseMembersOperation
    • PromoteDatabaseNodeOperation
    • NextIdentityForOperation
    • SeedIdentityForOperation
    • CompactDatabaseOperation
    • ExplainQueryCommand
    • GetIdentitiesOperation
    • ToggleDatabasesStateOperation
    • PutSortersOperation
    • DeleteSorterOperation
    • PutServerWideAnalyzersOperation
    • DeleteServerWideAnalyzerOperation
    • PutServerWideBackupConfigurationOperation
    • GetServerWideBackupConfigurationsOperation
    • GetServerWideBackupConfigurationOperation
    • DeleteServerWideTaskOperation
    • UpdateDocumentsCompressionConfigurationOperation
    • GetLogsConfigurationOperation
    • SetLogsConfigurationOperation
    • SetDatabasesLockOperation
    • PutServerWideSortersOperation
    • DeleteServerWideSorterOperation

Breaking changes 💔

  • Changed method name in spatial options - GeographySpatialOptionsFactory.quad_prefix_tree_level to quad_prefix_tree_index - 243b292
  • Removed duplicated FacetTermSortMode - here
  • aggregate_by_facets now takes a list of Facets - 02346f5

Improved typehints for:

  • LoaderWithInclude.load()
  • attachments.store()
  • session.advanced.attachments.get()

Minor fixes for:

  • Facets queries
  • Spatial queries

The client is now being tested using Embedded RavenDB Server as a package!
https://github.com/ravendb/ravendb-python-embedded
It's a great tool for so many scenarios!

Full Changelog: 5.2.4...5.2.5

5.2.4

18 May 08:00
8309c40
Compare
Choose a tag to compare

Available here https://pypi.org/project/ravendb/5.2.4/

5.2.3

17 Apr 08:30
2179ca3
Compare
Choose a tag to compare

Available here https://pypi.org/project/ravendb/5.2.3/

5.2.2

03 Mar 14:33
dd3fd60
Compare
Choose a tag to compare

Available here https://pypi.org/project/ravendb/5.2.2/

5.2.1

26 Feb 11:35
8daaf25
Compare
Choose a tag to compare

5.2.1

  • All previous changes mentioned in the readme
  • Fixed plenty of serialization bugs while loading/querying

Available here https://pypi.org/project/ravendb/5.2.1/

5.0.0.2

13 Sep 13:25
dbe51ee
Compare
Choose a tag to compare
  • bug fixes

  • @DataClass decorator support for entities

https://pypi.org/project/pyravendb/5.0.0.2/

Add skip and start method to query session

22 Mar 10:00
Compare
Choose a tag to compare