Skip to content

Commit

Permalink
[TST]: fix Rust frontend for test_logservice.py (#3648)
Browse files Browse the repository at this point in the history
See #3646
  • Loading branch information
codetheweb authored Jan 31, 2025
1 parent c71d2b0 commit 94bfabc
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 24 deletions.
1 change: 0 additions & 1 deletion .github/workflows/_python-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,6 @@ jobs:
"chromadb/test/property/test_collections_with_database_tenant.py",
"chromadb/test/property/test_collections_with_database_tenant_overwrite.py",
"chromadb/test/property/test_sysdb.py",
"chromadb/test/ingest/test_producer_consumer.py",
"chromadb/test/segment/distributed/test_memberlist_provider.py",
"chromadb/test/test_logservice.py",
"chromadb/test/distributed/test_sanity.py"]
Expand Down
2 changes: 2 additions & 0 deletions chromadb/proto/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*_pb2.py*
*_pb2_grpc.py
51 changes: 28 additions & 23 deletions rust/frontend/src/frontend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,31 +72,36 @@ fn to_records<
MetadataValue: Into<UpdateMetadataValue>,
M: IntoIterator<Item = (String, MetadataValue)>,
>(
mut ids: Vec<String>,
mut embeddings: Option<Vec<Vec<f32>>>,
mut documents: Option<Vec<String>>,
mut uris: Option<Vec<String>>,
mut metadatas: Option<Vec<M>>,
ids: Vec<String>,
embeddings: Option<Vec<Vec<f32>>>,
documents: Option<Vec<String>>,
uris: Option<Vec<String>>,
metadatas: Option<Vec<M>>,
operation: Operation,
) -> Result<Vec<OperationRecord>, ToRecordsError> {
let mut records: Vec<OperationRecord> = vec![];
while let Some(id) = ids.pop() {
let embedding = embeddings
.as_mut()
.map(|v| v.pop().ok_or(ToRecordsError::InconsistentLength))
.transpose()?;
let document = documents
.as_mut()
.map(|v| v.pop().ok_or(ToRecordsError::InconsistentLength))
.transpose()?;
let uri = uris
.as_mut()
.map(|v| v.pop().ok_or(ToRecordsError::InconsistentLength))
.transpose()?;
let metadata = metadatas
.as_mut()
.map(|v| v.pop().ok_or(ToRecordsError::InconsistentLength))
.transpose()?;
let len = ids.len();

// Check that every present vector has the same length as `ids`.
if embeddings.as_ref().is_some_and(|v| v.len() != len)
|| documents.as_ref().is_some_and(|v| v.len() != len)
|| uris.as_ref().is_some_and(|v| v.len() != len)
|| metadatas.as_ref().is_some_and(|v| v.len() != len)
{
return Err(ToRecordsError::InconsistentLength);
}

let mut embeddings_iter = embeddings.into_iter().flat_map(|v| v.into_iter());
let mut documents_iter = documents.into_iter().flat_map(|v| v.into_iter());
let mut uris_iter = uris.into_iter().flat_map(|v| v.into_iter());
let mut metadatas_iter = metadatas.into_iter().flat_map(|v| v.into_iter());

let mut records = Vec::with_capacity(len);

for id in ids {
let embedding = embeddings_iter.next();
let document = documents_iter.next();
let uri = uris_iter.next();
let metadata = metadatas_iter.next();

let encoding = embedding.as_ref().map(|_| ScalarEncoding::FLOAT32);

Expand Down

0 comments on commit 94bfabc

Please sign in to comment.