Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
# Changelog
# Version 3.7.0 (2021-11-10)
## Added
* Search for data row ids from external ids without specifying a dataset
* `client.get_data_row_ids_for_external_ids()`
* Support for numeric metadata type

## Updated
* The following `DataRowMetadataOntology` fields were renamed:
* `all_fields` -> `fields`
* `all_fields_id_index` -> `fields_by_id`
* `reserved_id_index` -> `reserved_by_id`
* `reserved_name_index` -> `reserved_by_name`
* `custom_id_index` -> `custom_by_id`
* `custom_name_index` -> `custom_by_name`


# Version 3.6.1 (2021-07-10)
* Fix import error that appears when exporting labels

Expand Down
2 changes: 1 addition & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
copyright = '2021, Labelbox'
author = 'Labelbox'

release = '3.0.0-rc0'
release = '3.7.0'

# -- General configuration ---------------------------------------------------

Expand Down
2 changes: 1 addition & 1 deletion labelbox/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name = "labelbox"
__version__ = "3.6.1"
__version__ = "3.7.0"

from labelbox.schema.project import Project
from labelbox.client import Client
Expand Down
7 changes: 3 additions & 4 deletions labelbox/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -669,20 +669,19 @@ def get_data_row_ids_for_external_ids(

Args:
external_ids: List of external ids to fetch data row ids for

Returns:
A dict of external ids as keys and values as a list of data row ids that correspond to that external id.
"""
query_str = """query externalIdsToDataRowIdsPyApi($externalId_in: [String!]!){
externalIdsToDataRowIds(externalId_in: $externalId_in) { dataRowId externalId }
}
"""
max_n_per_request = 100
max_ids_per_request = 100
result = defaultdict(list)
for i in range(0, len(external_ids), max_n_per_request):
for i in range(0, len(external_ids), max_ids_per_request):
for row in self.execute(
query_str,
{'externalId_in': external_ids[i:i + max_n_per_request]
{'externalId_in': external_ids[i:i + max_ids_per_request]
})['externalIdsToDataRowIds']:
result[row['externalId']].append(row['dataRowId'])
return result
7 changes: 5 additions & 2 deletions tests/integration/test_data_row_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,11 @@ def test_bulk_partial_delete_datarow_metadata(datarow, mdo):
mdo.bulk_delete([
DeleteDataRowMetadata(data_row_id=datarow.uid, fields=[TEXT_SCHEMA_ID])
])
assert len(mdo.bulk_export(
[datarow.uid])[0].fields) == (n_fields + len(metadata.fields) - 1)
fields = [
f for f in mdo.bulk_export([datarow.uid])[0].fields
if f.schema_id != PRE_COMPUTED_EMBEDDINGS_ID
]
assert len(fields) == (len(metadata.fields) - 1)


def test_large_bulk_delete_datarow_metadata(big_dataset, mdo):
Expand Down