Skip to content

add labelbox iam integration support #3043

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 11, 2025
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
34 changes: 31 additions & 3 deletions deeplake/integrations/labelbox/labelbox_.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,8 @@
lb_batch_priority=5,
data_upload_strategy="fail",
lb_batches_name=None,
lb_iam_integration_id="DEFAULT",
lb_global_key_generator=lambda x: str(uuid.uuid4()),
):
"""
Creates labelbox dataset for video annotation and sets up corresponding Labelbox project.
Expand All @@ -198,6 +200,8 @@
lb_batch_priority (int, optional): Priority for Labelbox batches. Defaults to 5
data_upload_strategy (str, optional): Strategy for uploading data to Labelbox. Can be 'fail', 'skip', or 'all'. Defaults to 'fail'
lb_batches_name (str, optional): Name for Labelbox batches. Defaults to None. If None, will use lb_dataset_name + '_batch-'
lb_iam_integration_id (str, optional): IAM integration id for Labelbox. Defaults to 'DEFAULT'
lb_global_key_generator (callable, optional): Function to generate global keys for data rows. Defaults to lambda x: str(uuid.uuid4())
"""

import labelbox as lb # type: ignore
Expand All @@ -218,16 +222,40 @@
assets = [
{
"row_data": p,
"global_key": str(uuid.uuid4()),
"global_key": lb_global_key_generator(p),
"media_type": "VIDEO",
"metadata_fields": [],
"attachments": [],
}
for p in video_paths
]

print("uploading videos to labelbox")
lb_ds = lb_client.create_dataset(name=lb_dataset_name)
if lb_iam_integration_id and lb_iam_integration_id != "DEFAULT":
lb_org = lb_client.get_organization()
integrations = lb_org.get_iam_integrations()
tmp_integration = None
for integration in integrations:
if integration.uid == lb_iam_integration_id:
tmp_integration = integration
break
if tmp_integration is None:
raise Exception(f"iam integration {lb_iam_integration_id} not found")
lb_iam_integration = tmp_integration

Check warning on line 243 in deeplake/integrations/labelbox/labelbox_.py

View check run for this annotation

Codecov / codecov/patch

deeplake/integrations/labelbox/labelbox_.py#L233-L243

Added lines #L233 - L243 were not covered by tests
else:
lb_iam_integration = lb_iam_integration_id

Check warning on line 245 in deeplake/integrations/labelbox/labelbox_.py

View check run for this annotation

Codecov / codecov/patch

deeplake/integrations/labelbox/labelbox_.py#L245

Added line #L245 was not covered by tests

print(

Check warning on line 247 in deeplake/integrations/labelbox/labelbox_.py

View check run for this annotation

Codecov / codecov/patch

deeplake/integrations/labelbox/labelbox_.py#L247

Added line #L247 was not covered by tests
"uploading videos to labelbox",
(
f"using iam integration: {lb_iam_integration}"
if lb_iam_integration != "DEFAULT"
else ""
),
)

lb_ds = lb_client.create_dataset(

Check warning on line 256 in deeplake/integrations/labelbox/labelbox_.py

View check run for this annotation

Codecov / codecov/patch

deeplake/integrations/labelbox/labelbox_.py#L256

Added line #L256 was not covered by tests
iam_integration=lb_iam_integration, name=lb_dataset_name
)
task = lb_ds.create_data_rows(assets)
task.wait_till_done()

Expand Down
4 changes: 3 additions & 1 deletion deeplake/integrations/labelbox/labelbox_azure_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ def load_blob_file_paths_from_azure(
parent_path,
sas_token,
predicate=lambda x: True,
sign_urls=True,
):
from azure.storage.blob import BlobServiceClient

Expand All @@ -18,7 +19,8 @@ def load_blob_file_paths_from_azure(
# List blobs in the directory
blob_list = container_client.list_blobs(name_starts_with=parent_path)
file_url_list = [
f"{account_url}/{container_name}/{blob.name}?{sas_token}"
f"{account_url}/{container_name}/{blob.name}"
+ (f"?{sas_token}" if sign_urls else "")
for blob in blob_list
if predicate(blob.name)
]
Expand Down
Loading