From 90fb22a6ca9a8e9f5cc817c8dcac8d86825e3555 Mon Sep 17 00:00:00 2001 From: Val Brodsky Date: Tue, 10 Sep 2024 12:05:46 -0700 Subject: [PATCH 1/3] Fix searchProjects query for tags --- .../src/labelbox/schema/labeling_service_dashboard.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libs/labelbox/src/labelbox/schema/labeling_service_dashboard.py b/libs/labelbox/src/labelbox/schema/labeling_service_dashboard.py index e640ed848..a53d8d429 100644 --- a/libs/labelbox/src/labelbox/schema/labeling_service_dashboard.py +++ b/libs/labelbox/src/labelbox/schema/labeling_service_dashboard.py @@ -28,7 +28,12 @@ tasksRemainingCount mediaType editorTaskType - tags + tags { + id + text + color + type + } """ From 6b87083ed26f2ebd544177cd3184c32ff00b2ec6 Mon Sep 17 00:00:00 2001 From: Val Brodsky Date: Tue, 10 Sep 2024 12:11:23 -0700 Subject: [PATCH 2/3] Bump release patch number --- docs/conf.py | 2 +- libs/labelbox/CHANGELOG.md | 4 ++++ libs/labelbox/pyproject.toml | 2 +- libs/labelbox/src/labelbox/__init__.py | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index b1d142a46..55a4fbbf6 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -16,7 +16,7 @@ project = 'Python SDK reference' copyright = '2024, Labelbox' author = 'Labelbox' -release = '3.78.0' +release = '3.78.1' # -- General configuration --------------------------------------------------- diff --git a/libs/labelbox/CHANGELOG.md b/libs/labelbox/CHANGELOG.md index b51511db3..d666f16d7 100644 --- a/libs/labelbox/CHANGELOG.md +++ b/libs/labelbox/CHANGELOG.md @@ -1,4 +1,8 @@ # Changelog +# Version 3.78.1 (2024-09-10) +## Fixed +* Labeling dashboard query for tags + # Version 3.78.0 (2024-09-03) ## Added * Project get_labeling_service_dashboard() aka project detail (Miltiple PRs) diff --git a/libs/labelbox/pyproject.toml b/libs/labelbox/pyproject.toml index 29676e4f8..1e02365d1 100644 --- a/libs/labelbox/pyproject.toml +++ b/libs/labelbox/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "labelbox" -version = "3.78.0" +version = "3.78.1" description = "Labelbox Python API" authors = [{ name = "Labelbox", email = "engineering@labelbox.com" }] dependencies = [ diff --git a/libs/labelbox/src/labelbox/__init__.py b/libs/labelbox/src/labelbox/__init__.py index 1c71c41f2..cd238f263 100644 --- a/libs/labelbox/src/labelbox/__init__.py +++ b/libs/labelbox/src/labelbox/__init__.py @@ -1,6 +1,6 @@ name = "labelbox" -__version__ = "3.78.0" +__version__ = "3.78.1" from labelbox.client import Client from labelbox.schema.project import Project From 9b862332f35d546c14ec12b14f35aeda5b14786e Mon Sep 17 00:00:00 2001 From: Val Brodsky Date: Wed, 15 Jan 2025 11:05:28 -0800 Subject: [PATCH 3/3] [PLT-2336] Vb/backport export charset plt 2336 (#1943) --- .python-version | 2 +- docs/conf.py | 2 +- libs/labelbox/CHANGELOG.md | 5 + libs/labelbox/pyproject.toml | 2 +- libs/labelbox/src/labelbox/__init__.py | 95 ++++++++++++------- .../src/labelbox/schema/export_task.py | 15 +-- 6 files changed, 76 insertions(+), 45 deletions(-) diff --git a/.python-version b/.python-version index 143c2f5d0..43077b246 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.8.19 +3.9.18 diff --git a/docs/conf.py b/docs/conf.py index 55a4fbbf6..7da98f8fc 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -16,7 +16,7 @@ project = 'Python SDK reference' copyright = '2024, Labelbox' author = 'Labelbox' -release = '3.78.1' +release = '3.78.2' # -- General configuration --------------------------------------------------- diff --git a/libs/labelbox/CHANGELOG.md b/libs/labelbox/CHANGELOG.md index d666f16d7..5cdde1040 100644 --- a/libs/labelbox/CHANGELOG.md +++ b/libs/labelbox/CHANGELOG.md @@ -1,4 +1,9 @@ # Changelog +# Version 3.78.2 (2025-01-15) +## Fixed +* Exporter encoding + * NOTE: backported from v.5.2.1 + # Version 3.78.1 (2024-09-10) ## Fixed * Labeling dashboard query for tags diff --git a/libs/labelbox/pyproject.toml b/libs/labelbox/pyproject.toml index 1e02365d1..8cae471fc 100644 --- a/libs/labelbox/pyproject.toml +++ b/libs/labelbox/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "labelbox" -version = "3.78.1" +version = "3.78.2" description = "Labelbox Python API" authors = [{ name = "Labelbox", email = "engineering@labelbox.com" }] dependencies = [ diff --git a/libs/labelbox/src/labelbox/__init__.py b/libs/labelbox/src/labelbox/__init__.py index cd238f263..dd113eebb 100644 --- a/libs/labelbox/src/labelbox/__init__.py +++ b/libs/labelbox/src/labelbox/__init__.py @@ -1,48 +1,73 @@ name = "labelbox" -__version__ = "3.78.1" +__version__ = "3.78.2" from labelbox.client import Client -from labelbox.schema.project import Project -from labelbox.schema.model import Model -from labelbox.schema.model_config import ModelConfig +from labelbox.schema.annotation_import import ( + LabelImport, + MALPredictionImport, + MEAPredictionImport, + MEAToMALPredictionImport, +) +from labelbox.schema.asset_attachment import AssetAttachment +from labelbox.schema.batch import Batch +from labelbox.schema.benchmark import Benchmark from labelbox.schema.bulk_import_request import BulkImportRequest -from labelbox.schema.annotation_import import MALPredictionImport, MEAPredictionImport, LabelImport, MEAToMALPredictionImport -from labelbox.schema.dataset import Dataset -from labelbox.schema.data_row import DataRow from labelbox.schema.catalog import Catalog +from labelbox.schema.data_row import DataRow +from labelbox.schema.data_row_metadata import ( + DataRowMetadata, + DataRowMetadataField, + DataRowMetadataOntology, + DeleteDataRowMetadata, +) +from labelbox.schema.dataset import Dataset from labelbox.schema.enums import AnnotationImportState +from labelbox.schema.export_task import ( + BufferedJsonConverterOutput, + ExportTask, + FileConverter, + FileConverterOutput, + JsonConverter, + JsonConverterOutput, + StreamType, +) +from labelbox.schema.iam_integration import IAMIntegration +from labelbox.schema.identifiable import GlobalKey, UniqueId +from labelbox.schema.identifiables import DataRowIds, GlobalKeys, UniqueIds +from labelbox.schema.invite import Invite, InviteLimit from labelbox.schema.label import Label -from labelbox.schema.batch import Batch -from labelbox.schema.review import Review -from labelbox.schema.user import User -from labelbox.schema.organization import Organization -from labelbox.schema.task import Task -from labelbox.schema.export_task import StreamType, ExportTask, JsonConverter, JsonConverterOutput, FileConverter, FileConverterOutput, BufferedJsonConverterOutput +from labelbox.schema.label_score import LabelScore from labelbox.schema.labeling_frontend import LabelingFrontend, LabelingFrontendOptions -from labelbox.schema.asset_attachment import AssetAttachment -from labelbox.schema.webhook import Webhook -from labelbox.schema.ontology import Ontology, OntologyBuilder, Classification, Option, Tool, FeatureSchema -from labelbox.schema.ontology import PromptResponseClassification -from labelbox.schema.ontology import ResponseOption -from labelbox.schema.role import Role, ProjectRole -from labelbox.schema.invite import Invite, InviteLimit -from labelbox.schema.data_row_metadata import DataRowMetadataOntology, DataRowMetadataField, DataRowMetadata, DeleteDataRowMetadata -from labelbox.schema.model_run import ModelRun, DataSplit -from labelbox.schema.benchmark import Benchmark -from labelbox.schema.iam_integration import IAMIntegration -from labelbox.schema.resource_tag import ResourceTag +from labelbox.schema.labeling_service import LabelingService +from labelbox.schema.labeling_service_dashboard import LabelingServiceDashboard +from labelbox.schema.labeling_service_status import LabelingServiceStatus +from labelbox.schema.media_type import MediaType +from labelbox.schema.model import Model +from labelbox.schema.model_config import ModelConfig +from labelbox.schema.model_run import DataSplit, ModelRun +from labelbox.schema.ontology import ( + Classification, + FeatureSchema, + Ontology, + OntologyBuilder, + Option, + PromptResponseClassification, + ResponseOption, + Tool, +) +from labelbox.schema.ontology_kind import OntologyKind +from labelbox.schema.organization import Organization +from labelbox.schema.project import Project from labelbox.schema.project_model_config import ProjectModelConfig +from labelbox.schema.project_overview import ProjectOverview, ProjectOverviewDetailed from labelbox.schema.project_resource_tag import ProjectResourceTag -from labelbox.schema.media_type import MediaType -from labelbox.schema.slice import Slice, CatalogSlice, ModelSlice from labelbox.schema.queue_mode import QueueMode +from labelbox.schema.resource_tag import ResourceTag +from labelbox.schema.review import Review +from labelbox.schema.role import ProjectRole, Role +from labelbox.schema.slice import CatalogSlice, ModelSlice, Slice +from labelbox.schema.task import Task from labelbox.schema.task_queue import TaskQueue -from labelbox.schema.label_score import LabelScore -from labelbox.schema.identifiables import UniqueIds, GlobalKeys, DataRowIds -from labelbox.schema.identifiable import UniqueId, GlobalKey -from labelbox.schema.ontology_kind import OntologyKind -from labelbox.schema.project_overview import ProjectOverview, ProjectOverviewDetailed -from labelbox.schema.labeling_service import LabelingService -from labelbox.schema.labeling_service_dashboard import LabelingServiceDashboard -from labelbox.schema.labeling_service_status import LabelingServiceStatus +from labelbox.schema.user import User +from labelbox.schema.webhook import Webhook diff --git a/libs/labelbox/src/labelbox/schema/export_task.py b/libs/labelbox/src/labelbox/schema/export_task.py index 06715748c..0dd04d18a 100644 --- a/libs/labelbox/src/labelbox/schema/export_task.py +++ b/libs/labelbox/src/labelbox/schema/export_task.py @@ -1,11 +1,16 @@ +import json +import os +import tempfile +import warnings from abc import ABC, abstractmethod from dataclasses import dataclass from enum import Enum from functools import lru_cache from io import TextIOWrapper -import json from pathlib import Path from typing import ( + TYPE_CHECKING, + Any, Callable, Generic, Iterator, @@ -14,17 +19,12 @@ Tuple, TypeVar, Union, - TYPE_CHECKING, overload, - Any, ) import requests -import warnings -import tempfile -import os -from labelbox import pydantic_compat +from labelbox import pydantic_compat from labelbox.schema.task import Task from labelbox.utils import _CamelCaseMixin @@ -236,6 +236,7 @@ def _get_file_content( f"{self._ctx.stream_type.value} stream") response = requests.get(file_info.file, timeout=30) response.raise_for_status() + response.encoding = "utf-8" assert len( response.content ) == file_info.offsets.end - file_info.offsets.start + 1, (