Releases: ravendb/ravendb-python-client
7.0.2
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
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 ⚡
Breaking changes 🔥
Session methods - lazily.load() and include().load() - #210
- set
object_type
argument as optional - inverted the
object_type
andkey
arguments order lazily.load()
now takes a list ofstr
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"]
orsession.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 inget_compare_exchange_values()
optional - Fixed
load_starting_with_into_stream()
and made it returnbytes
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
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
- Bulk insert dependencies bugfix
Available here https://pypi.org/project/ravendb/5.2.4/
5.2.3
- New feature - Counters
- Counters indexes
Available here https://pypi.org/project/ravendb/5.2.3/
5.2.2
- New feature - Bulk insert
- Bugfixes - Cluster-wide operations (here)
Available here https://pypi.org/project/ravendb/5.2.2/
5.2.1
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
-
bug fixes
-
@DataClass decorator support for entities
Add skip and start method to query session
3.5.3.5 Update setup.py