labelbox 3.78.2__tar.gz → 5.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {labelbox-3.78.2 → labelbox-5.0.0}/CHANGELOG.md +15 -3
- {labelbox-3.78.2 → labelbox-5.0.0}/PKG-INFO +3 -3
- {labelbox-3.78.2 → labelbox-5.0.0}/pyproject.toml +7 -5
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/__init__.py +53 -47
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/adv_client.py +34 -28
- labelbox-5.0.0/src/labelbox/annotated_types.py +6 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/client.py +712 -484
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/__init__.py +8 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/annotation.py +5 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/base_annotation.py +6 -4
- labelbox-5.0.0/src/labelbox/data/annotation_types/classification/__init__.py +1 -0
- labelbox-5.0.0/src/labelbox/data/annotation_types/classification/classification.py +76 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/collection.py +24 -19
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/__init__.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/audio.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/base_data.py +3 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/conversation.py +2 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/dicom.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/document.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/generic_data_row_data.py +6 -5
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/html.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/llm_prompt_creation.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/llm_prompt_response_creation.py +3 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/llm_response_creation.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/raster.py +46 -39
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/text.py +26 -24
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/tiled_image.py +203 -146
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/data/video.py +32 -31
- labelbox-5.0.0/src/labelbox/data/annotation_types/feature.py +23 -0
- labelbox-5.0.0/src/labelbox/data/annotation_types/geometry/geometry.py +58 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/geometry/line.py +24 -20
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/geometry/mask.py +26 -18
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/geometry/point.py +19 -12
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/geometry/polygon.py +19 -14
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/geometry/rectangle.py +32 -22
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/label.py +100 -47
- labelbox-5.0.0/src/labelbox/data/annotation_types/llm_prompt_response/__init__.py +2 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/llm_prompt_response/prompt.py +9 -11
- labelbox-5.0.0/src/labelbox/data/annotation_types/metrics/__init__.py +6 -0
- labelbox-5.0.0/src/labelbox/data/annotation_types/metrics/base.py +41 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/metrics/confusion_matrix.py +15 -10
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/metrics/scalar.py +26 -18
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/mmc.py +15 -4
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/ner/conversation_entity.py +3 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/ner/document_entity.py +6 -5
- labelbox-5.0.0/src/labelbox/data/annotation_types/ner/text_entity.py +20 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/relationship.py +6 -4
- labelbox-5.0.0/src/labelbox/data/annotation_types/types.py +43 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/video.py +79 -44
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/generator.py +3 -4
- labelbox-5.0.0/src/labelbox/data/metrics/__init__.py +5 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/metrics/confusion_matrix/calculation.py +106 -65
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/metrics/confusion_matrix/confusion_matrix.py +43 -33
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/metrics/group.py +43 -28
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/metrics/iou/calculation.py +126 -73
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/metrics/iou/iou.py +30 -23
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/mixins.py +17 -29
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/ontology.py +48 -27
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/serialization/__init__.py +0 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/serialization/coco/annotation.py +17 -12
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/serialization/coco/categories.py +4 -3
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/serialization/coco/converter.py +46 -32
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/serialization/coco/image.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/serialization/coco/instance_dataset.py +122 -70
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/serialization/coco/panoptic_dataset.py +93 -64
- labelbox-5.0.0/src/labelbox/data/serialization/coco/path.py +9 -0
- labelbox-5.0.0/src/labelbox/data/serialization/ndjson/base.py +53 -0
- labelbox-5.0.0/src/labelbox/data/serialization/ndjson/classification.py +513 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/serialization/ndjson/converter.py +35 -26
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/serialization/ndjson/label.py +233 -84
- labelbox-5.0.0/src/labelbox/data/serialization/ndjson/metric.py +128 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/serialization/ndjson/mmc.py +16 -10
- labelbox-5.0.0/src/labelbox/data/serialization/ndjson/objects.py +957 -0
- labelbox-5.0.0/src/labelbox/data/serialization/ndjson/relationship.py +55 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/exceptions.py +35 -16
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/orm/comparison.py +27 -19
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/orm/db_object.py +77 -45
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/orm/model.py +54 -41
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/orm/query.py +136 -78
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/pagination.py +43 -37
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/parser.py +3 -4
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/__init__.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/annotation_import.py +243 -152
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/asset_attachment.py +17 -14
- labelbox-5.0.0/src/labelbox/schema/batch.py +158 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/benchmark.py +9 -5
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/bulk_import_request.py +327 -265
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/catalog.py +69 -66
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/confidence_presence_checker.py +3 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/create_batches_task.py +3 -3
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/data_row.py +140 -107
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/data_row_metadata.py +272 -219
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/dataset.py +203 -228
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/embedding.py +9 -6
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/enums.py +16 -13
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/export_filters.py +76 -66
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/export_params.py +7 -4
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/export_task.py +159 -108
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/foundry/app.py +8 -7
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/foundry/foundry_client.py +19 -11
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/foundry/model.py +3 -3
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/iam_integration.py +3 -3
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/id_type.py +2 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/identifiables.py +4 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/internal/data_row_uploader.py +25 -14
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/internal/data_row_upsert_item.py +30 -24
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/internal/descriptor_file_creator.py +68 -40
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/invite.py +6 -3
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/label.py +8 -6
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/label_score.py +2 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/labeling_frontend.py +4 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/labeling_service.py +20 -17
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/labeling_service_dashboard.py +51 -32
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/labeling_service_status.py +9 -9
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/media_type.py +19 -12
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/model.py +19 -14
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/model_config.py +2 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/model_run.py +253 -247
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/ontology.py +185 -122
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/ontology_kind.py +46 -30
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/organization.py +78 -42
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/project.py +495 -530
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/project_model_config.py +10 -6
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/project_overview.py +11 -8
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/project_resource_tag.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/resource_tag.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/review.py +3 -3
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/role.py +6 -8
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/search_filters.py +124 -72
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/send_to_annotate_params.py +40 -36
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/serialization.py +3 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/slice.py +95 -87
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/task.py +89 -78
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/user.py +24 -16
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/user_group.py +57 -43
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/webhook.py +23 -14
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/types.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/typing_imports.py +3 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/utils.py +26 -17
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/conftest.py +471 -322
- labelbox-5.0.0/tests/data/annotation_import/conftest.py +2743 -0
- labelbox-5.0.0/tests/data/annotation_import/test_annotation_import_limit.py +56 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_import/test_bulk_import_request.py +90 -53
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_import/test_data_types.py +14 -10
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_import/test_generic_data_types.py +126 -66
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_import/test_label_import.py +61 -47
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_import/test_mal_prediction_import.py +29 -20
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_import/test_mea_prediction_import.py +145 -82
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_import/test_model_run.py +64 -43
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_import/test_ndjson_validation.py +80 -77
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_import/test_send_to_annotate_mea.py +28 -16
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_import/test_upsert_prediction_import.py +62 -39
- labelbox-5.0.0/tests/data/annotation_types/classification/test_classification.py +193 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/data/test_raster.py +9 -7
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/data/test_text.py +13 -11
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/data/test_video.py +10 -8
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/geometry/test_line.py +4 -4
- labelbox-5.0.0/tests/data/annotation_types/geometry/test_mask.py +145 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/geometry/test_point.py +3 -3
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/geometry/test_polygon.py +8 -7
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/geometry/test_rectangle.py +5 -5
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/test_annotation.py +38 -28
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/test_collection.py +43 -30
- labelbox-5.0.0/tests/data/annotation_types/test_label.py +274 -0
- labelbox-5.0.0/tests/data/annotation_types/test_metrics.py +208 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/test_ner.py +14 -6
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/test_tiled_image.py +43 -29
- labelbox-5.0.0/tests/data/annotation_types/test_video.py +20 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/classification_import_global_key.json +2 -2
- labelbox-5.0.0/tests/data/assets/ndjson/metric_import.json +10 -0
- labelbox-5.0.0/tests/data/assets/ndjson/metric_import_global_key.json +10 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/video_import.json +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/video_import_name_only.json +1 -1
- labelbox-5.0.0/tests/data/conftest.py +64 -0
- labelbox-5.0.0/tests/data/export/conftest.py +484 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/export/streamable/test_export_data_rows_streamable.py +56 -30
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/export/streamable/test_export_dataset_streamable.py +44 -24
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/export/streamable/test_export_embeddings_streamable.py +46 -28
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/export/streamable/test_export_model_run_streamable.py +18 -10
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/export/streamable/test_export_project_streamable.py +121 -87
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/export/streamable/test_export_video_streamable.py +59 -49
- labelbox-5.0.0/tests/data/metrics/confusion_matrix/conftest.py +475 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/metrics/confusion_matrix/test_confusion_matrix_data_row.py +37 -26
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/metrics/confusion_matrix/test_confusion_matrix_feature.py +32 -22
- labelbox-5.0.0/tests/data/metrics/iou/data_row/conftest.py +702 -0
- labelbox-5.0.0/tests/data/metrics/iou/feature/conftest.py +202 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/metrics/iou/feature/test_feature_iou.py +2 -1
- labelbox-5.0.0/tests/data/serialization/coco/test_coco.py +38 -0
- labelbox-5.0.0/tests/data/serialization/ndjson/test_checklist.py +338 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/serialization/ndjson/test_classification.py +6 -4
- labelbox-5.0.0/tests/data/serialization/ndjson/test_conversation.py +155 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/serialization/ndjson/test_data_gen.py +33 -23
- labelbox-5.0.0/tests/data/serialization/ndjson/test_dicom.py +208 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/serialization/ndjson/test_document.py +33 -22
- labelbox-5.0.0/tests/data/serialization/ndjson/test_export_video_objects.py +618 -0
- labelbox-5.0.0/tests/data/serialization/ndjson/test_free_text.py +120 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/serialization/ndjson/test_global_key.py +19 -14
- labelbox-5.0.0/tests/data/serialization/ndjson/test_image.py +107 -0
- labelbox-5.0.0/tests/data/serialization/ndjson/test_metric.py +38 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/serialization/ndjson/test_mmc.py +13 -8
- labelbox-5.0.0/tests/data/serialization/ndjson/test_ndlabel_subclass_matching.py +19 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/serialization/ndjson/test_nested.py +4 -3
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/serialization/ndjson/test_polyline.py +8 -5
- labelbox-5.0.0/tests/data/serialization/ndjson/test_radio.py +110 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/serialization/ndjson/test_rectangle.py +25 -23
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/serialization/ndjson/test_relationship.py +8 -4
- labelbox-5.0.0/tests/data/serialization/ndjson/test_text.py +44 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/serialization/ndjson/test_text_entity.py +8 -5
- labelbox-5.0.0/tests/data/serialization/ndjson/test_video.py +627 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/test_data_row_metadata.py +143 -149
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/test_prefetch_generator.py +1 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/conftest.py +320 -261
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/schema/test_user_group.py +12 -4
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_batch.py +101 -92
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_batches.py +6 -6
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_chat_evaluation_ontology_project.py +61 -49
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_client_errors.py +7 -6
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_data_row_delete_metadata.py +141 -89
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_data_rows.py +463 -392
- labelbox-5.0.0/tests/integration/test_data_rows_upsert.py +280 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_dataset.py +42 -36
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_delegated_access.py +62 -46
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_embedding.py +12 -19
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_ephemeral.py +8 -4
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_feature_schema.py +34 -36
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_filtering.py +7 -6
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_foundry.py +60 -43
- labelbox-5.0.0/tests/integration/test_global_keys.py +196 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_label.py +9 -7
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_labeling_dashboard.py +59 -24
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_labeling_frontend.py +4 -2
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_labeling_parameter_overrides.py +32 -15
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_labeling_service.py +26 -17
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_legacy_project.py +8 -7
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_model_config.py +9 -3
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_offline_chat_evaluation_project.py +8 -5
- labelbox-5.0.0/tests/integration/test_ontology.py +327 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_project.py +71 -48
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_project_model_config.py +39 -24
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_project_set_model_setup_complete.py +15 -19
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_project_setup.py +18 -14
- labelbox-5.0.0/tests/integration/test_prompt_response_generation_project.py +186 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_response_creation_project.py +12 -6
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_send_to_annotate.py +23 -16
- labelbox-5.0.0/tests/integration/test_task.py +80 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_task_queue.py +20 -10
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_user_and_org.py +1 -1
- labelbox-5.0.0/tests/integration/test_user_management.py +193 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_webhook.py +15 -12
- labelbox-5.0.0/tests/unit/conftest.py +108 -0
- labelbox-5.0.0/tests/unit/export_task/test_export_task.py +154 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/export_task/test_unit_file_converter.py +6 -5
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/export_task/test_unit_file_retriever_by_line.py +21 -34
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/export_task/test_unit_file_retriever_by_offset.py +14 -23
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/export_task/test_unit_json_converter.py +12 -6
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/schema/test_user_group.py +92 -105
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_annotation_import.py +22 -26
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_data_row_upsert_data.py +59 -60
- labelbox-5.0.0/tests/unit/test_exceptions.py +20 -0
- labelbox-5.0.0/tests/unit/test_label_data_type.py +64 -0
- labelbox-5.0.0/tests/unit/test_labeling_service_dashboard.py +75 -0
- labelbox-5.0.0/tests/unit/test_mal_import.py +68 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_ndjson_parsing.py +1 -1
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_project.py +15 -9
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_unit_delete_batch_data_row_metadata.py +24 -30
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_unit_descriptor_file_creator.py +17 -18
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_unit_entity_meta.py +8 -6
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_unit_export_filters.py +24 -19
- labelbox-5.0.0/tests/unit/test_unit_label_import.py +46 -0
- labelbox-5.0.0/tests/unit/test_unit_ontology.py +275 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_unit_ontology_kind.py +11 -4
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_unit_project_validate_labeling_parameter_overrides.py +10 -4
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_unit_query.py +9 -6
- labelbox-5.0.0/tests/unit/test_unit_search_filters.py +150 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_unit_webhook.py +3 -6
- labelbox-5.0.0/tests/unit/test_utils.py +34 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/utils.py +3 -3
- labelbox-3.78.2/src/labelbox/data/annotation_types/classification/__init__.py +0 -2
- labelbox-3.78.2/src/labelbox/data/annotation_types/classification/classification.py +0 -117
- labelbox-3.78.2/src/labelbox/data/annotation_types/feature.py +0 -31
- labelbox-3.78.2/src/labelbox/data/annotation_types/geometry/geometry.py +0 -45
- labelbox-3.78.2/src/labelbox/data/annotation_types/llm_prompt_response/__init__.py +0 -2
- labelbox-3.78.2/src/labelbox/data/annotation_types/metrics/__init__.py +0 -2
- labelbox-3.78.2/src/labelbox/data/annotation_types/metrics/base.py +0 -35
- labelbox-3.78.2/src/labelbox/data/annotation_types/ner/text_entity.py +0 -19
- labelbox-3.78.2/src/labelbox/data/annotation_types/types.py +0 -50
- labelbox-3.78.2/src/labelbox/data/metrics/__init__.py +0 -2
- labelbox-3.78.2/src/labelbox/data/serialization/coco/path.py +0 -9
- labelbox-3.78.2/src/labelbox/data/serialization/labelbox_v1/__init__.py +0 -1
- labelbox-3.78.2/src/labelbox/data/serialization/labelbox_v1/classification.py +0 -135
- labelbox-3.78.2/src/labelbox/data/serialization/labelbox_v1/converter.py +0 -105
- labelbox-3.78.2/src/labelbox/data/serialization/labelbox_v1/feature.py +0 -31
- labelbox-3.78.2/src/labelbox/data/serialization/labelbox_v1/label.py +0 -251
- labelbox-3.78.2/src/labelbox/data/serialization/labelbox_v1/objects.py +0 -339
- labelbox-3.78.2/src/labelbox/data/serialization/ndjson/base.py +0 -58
- labelbox-3.78.2/src/labelbox/data/serialization/ndjson/classification.py +0 -424
- labelbox-3.78.2/src/labelbox/data/serialization/ndjson/metric.py +0 -117
- labelbox-3.78.2/src/labelbox/data/serialization/ndjson/objects.py +0 -784
- labelbox-3.78.2/src/labelbox/data/serialization/ndjson/relationship.py +0 -44
- labelbox-3.78.2/src/labelbox/pydantic_compat.py +0 -34
- labelbox-3.78.2/src/labelbox/schema/batch.py +0 -197
- labelbox-3.78.2/tests/data/annotation_import/conftest.py +0 -2173
- labelbox-3.78.2/tests/data/annotation_import/test_annotation_import_limit.py +0 -33
- labelbox-3.78.2/tests/data/annotation_types/classification/test_classification.py +0 -243
- labelbox-3.78.2/tests/data/annotation_types/geometry/test_mask.py +0 -78
- labelbox-3.78.2/tests/data/annotation_types/test_label.py +0 -212
- labelbox-3.78.2/tests/data/annotation_types/test_metrics.py +0 -204
- labelbox-3.78.2/tests/data/annotation_types/test_video.py +0 -19
- labelbox-3.78.2/tests/data/assets/ndjson/metric_import.json +0 -1
- labelbox-3.78.2/tests/data/assets/ndjson/metric_import_global_key.json +0 -1
- labelbox-3.78.2/tests/data/conftest.py +0 -49
- labelbox-3.78.2/tests/data/export/conftest.py +0 -507
- labelbox-3.78.2/tests/data/export/legacy/test_export_catalog.py +0 -19
- labelbox-3.78.2/tests/data/export/legacy/test_export_data_rows.py +0 -29
- labelbox-3.78.2/tests/data/export/legacy/test_export_dataset.py +0 -44
- labelbox-3.78.2/tests/data/export/legacy/test_export_model_run.py +0 -45
- labelbox-3.78.2/tests/data/export/legacy/test_export_project.py +0 -236
- labelbox-3.78.2/tests/data/export/legacy/test_export_slice.py +0 -17
- labelbox-3.78.2/tests/data/export/legacy/test_export_video.py +0 -244
- labelbox-3.78.2/tests/data/export/legacy/test_legacy_export.py +0 -243
- labelbox-3.78.2/tests/data/metrics/confusion_matrix/conftest.py +0 -405
- labelbox-3.78.2/tests/data/metrics/iou/data_row/conftest.py +0 -786
- labelbox-3.78.2/tests/data/metrics/iou/data_row/test_data_row_iou.py +0 -143
- labelbox-3.78.2/tests/data/metrics/iou/feature/conftest.py +0 -155
- labelbox-3.78.2/tests/data/serialization/coco/test_coco.py +0 -34
- labelbox-3.78.2/tests/data/serialization/labelbox_v1/test_document.py +0 -45
- labelbox-3.78.2/tests/data/serialization/labelbox_v1/test_image.py +0 -49
- labelbox-3.78.2/tests/data/serialization/labelbox_v1/test_text.py +0 -27
- labelbox-3.78.2/tests/data/serialization/labelbox_v1/test_tiled_image.py +0 -45
- labelbox-3.78.2/tests/data/serialization/labelbox_v1/test_unknown_media.py +0 -47
- labelbox-3.78.2/tests/data/serialization/labelbox_v1/test_video.py +0 -40
- labelbox-3.78.2/tests/data/serialization/ndjson/test_checklist.py +0 -285
- labelbox-3.78.2/tests/data/serialization/ndjson/test_conversation.py +0 -133
- labelbox-3.78.2/tests/data/serialization/ndjson/test_dicom.py +0 -201
- labelbox-3.78.2/tests/data/serialization/ndjson/test_export_video_objects.py +0 -626
- labelbox-3.78.2/tests/data/serialization/ndjson/test_free_text.py +0 -103
- labelbox-3.78.2/tests/data/serialization/ndjson/test_image.py +0 -104
- labelbox-3.78.2/tests/data/serialization/ndjson/test_metric.py +0 -44
- labelbox-3.78.2/tests/data/serialization/ndjson/test_radio.py +0 -95
- labelbox-3.78.2/tests/data/serialization/ndjson/test_text.py +0 -35
- labelbox-3.78.2/tests/data/serialization/ndjson/test_video.py +0 -506
- labelbox-3.78.2/tests/integration/test_data_rows_upsert.py +0 -275
- labelbox-3.78.2/tests/integration/test_global_keys.py +0 -206
- labelbox-3.78.2/tests/integration/test_ontology.py +0 -288
- labelbox-3.78.2/tests/integration/test_prompt_response_generation_project.py +0 -164
- labelbox-3.78.2/tests/integration/test_task.py +0 -70
- labelbox-3.78.2/tests/integration/test_user_management.py +0 -114
- labelbox-3.78.2/tests/unit/conftest.py +0 -135
- labelbox-3.78.2/tests/unit/export_task/test_export_task.py +0 -195
- labelbox-3.78.2/tests/unit/test_exceptions.py +0 -13
- labelbox-3.78.2/tests/unit/test_label_data_type.py +0 -59
- labelbox-3.78.2/tests/unit/test_mal_import.py +0 -75
- labelbox-3.78.2/tests/unit/test_unit_label_import.py +0 -61
- labelbox-3.78.2/tests/unit/test_unit_ontology.py +0 -267
- labelbox-3.78.2/tests/unit/test_unit_search_filters.py +0 -85
- labelbox-3.78.2/tests/unit/test_utils.py +0 -21
- {labelbox-3.78.2 → labelbox-5.0.0}/.gitignore +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/.yapfignore +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/Dockerfile +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/README.md +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/mypy.ini +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/geometry/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/annotation_types/ner/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/metrics/confusion_matrix/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/metrics/iou/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/serialization/coco/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/data/serialization/ndjson/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/orm/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/conflict_resolution_strategy.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/consensus_settings.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/foundry/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/identifiable.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/internal/datarow_upload_constants.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/quality_mode.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/queue_mode.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/src/labelbox/schema/task_queue.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/assets/arxiv-pdf_data_99-word-token-pdfs_0801.3483-lb-textlayer.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/assets/arxiv-pdf_data_99-word-token-pdfs_0801.3483.pdf +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/assets/conversation-1.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/assets/loremipsum.pdf +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_import/test_model.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/classification/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/data/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/geometry/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/annotation_types/test_text.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000129054.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000141328.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000147498.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000184324.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000188465.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000245764.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000311303.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000343706.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000356387.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000370711.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000385029.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000393226.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000434230.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000458755.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000458768.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000462904.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000475150.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000532481.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000532493.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/images/000000546823.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/instances.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000129054.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000141328.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000147498.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000184324.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000188465.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000245764.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000311303.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000343706.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000356387.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000370711.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000385029.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000393226.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000434230.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000458755.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000458768.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000462904.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000475150.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000532481.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000532493.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/masks/000000546823.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/panoptic.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/coco/rle.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/labelbox_v1/highly_nested_image.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/labelbox_v1/image_export.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/labelbox_v1/pdf_export.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/labelbox_v1/text_export.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/labelbox_v1/tiled_image_export.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/labelbox_v1/unkown_media_type_export.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/labelbox_v1/video_export.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/line.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/mask.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/classification_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/classification_import_name_only.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/conversation_entity_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/conversation_entity_import_global_key.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/conversation_entity_without_confidence_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/custom_confusion_matrix_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/custom_scalar_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/image_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/image_import_global_key.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/image_import_name_only.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/mmc_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/nested_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/nested_import_name_only.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/pdf_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/pdf_import_global_key.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/pdf_import_name_only.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/polyline_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/polyline_import_global_key.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/polyline_without_confidence_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/rectangle_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/relationship_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/text_entity_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/text_entity_import_global_key.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/text_entity_without_confidence_import.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/ndjson/video_import_global_key.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/point.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/polygon.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/rectangle.png +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/assets/sample_text.txt +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/serialization/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/data/serialization/ndjson/__init__.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/media/bulk_conversation.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/media/cat.mp4 +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/media/sample_image.jpg +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/media/sample_pdf.pdf +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/snapshots/test_data_rows.test_data_row_bulk_creation_with_same_global_keys.failed_data_rows.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/snapshots/test_task.test_task_errors.errors.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/snapshots/test_task.test_task_errors.failed_data_rows.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/snapshots/test_task.test_task_success_json.json +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_benchmark.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_data_upload.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_dates.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_pagination.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_sorting.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/integration/test_toggle_mal.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_client.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_queue_mode.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_unit_case_change.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_unit_filter.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_unit_identifiables.py +0 -0
- {labelbox-3.78.2 → labelbox-5.0.0}/tests/unit/test_unit_rand_gen.py +0 -0
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
|
-
# Version
|
|
2
|
+
# Version 5.0.0 (2024-09-16)
|
|
3
|
+
## Updated
|
|
4
|
+
* Set tasks_remaining_count to None LabelingServiceDashboard if labeling has not started ([#1817](https://github.com/Labelbox/labelbox-python/pull/1817))
|
|
5
|
+
* Improve error messaging when creating LLM project with invalid dataset id parameter([#1799](https://github.com/Labelbox/labelbox-python/pull/1799))
|
|
6
|
+
## Removed
|
|
7
|
+
* BREAKING CHANGE SDK methods for exports v1([#1800](https://github.com/Labelbox/labelbox-python/pull/1800))
|
|
8
|
+
* BREAKING CHANGE Unused labelbox_v1 serialization package([#1803](https://github.com/Labelbox/labelbox-python/pull/1803))
|
|
9
|
+
## Fixed
|
|
10
|
+
* Cuid dependencies that cause a crash if numpy is not installed ([#1807](https://github.com/Labelbox/labelbox-python/pull/1807))
|
|
11
|
+
|
|
12
|
+
# Version 4.0.0 (2024-09-10)
|
|
13
|
+
## Added
|
|
14
|
+
* BREAKING CHANGE for pydantic V1 users: Converted SDK to use pydantic V2([#1738](https://github.com/Labelbox/labelbox-python/pull/1738))
|
|
15
|
+
* Automation test support for multiple sdk versions([#1792](https://github.com/Labelbox/labelbox-python/pull/1792))
|
|
3
16
|
## Fixed
|
|
4
|
-
*
|
|
5
|
-
* NOTE: backported from v.5.2.1
|
|
17
|
+
* Flaky tests([#1793](https://github.com/Labelbox/labelbox-python/pull/1793))
|
|
6
18
|
|
|
7
19
|
# Version 3.78.1 (2024-09-10)
|
|
8
20
|
## Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: labelbox
|
|
3
|
-
Version:
|
|
3
|
+
Version: 5.0.0
|
|
4
4
|
Summary: Labelbox Python API
|
|
5
5
|
Project-URL: Homepage, https://labelbox.com/
|
|
6
6
|
Project-URL: Documentation, https://labelbox-python.readthedocs.io/en/latest/
|
|
@@ -26,7 +26,7 @@ Requires-Python: >=3.8
|
|
|
26
26
|
Requires-Dist: geojson>=3.1.0
|
|
27
27
|
Requires-Dist: google-api-core>=1.22.1
|
|
28
28
|
Requires-Dist: mypy==1.10.1
|
|
29
|
-
Requires-Dist: pydantic>=
|
|
29
|
+
Requires-Dist: pydantic>=2.0
|
|
30
30
|
Requires-Dist: python-dateutil<2.10.0,>=2.8.2
|
|
31
31
|
Requires-Dist: requests>=2.22.0
|
|
32
32
|
Requires-Dist: strenum>=0.4.15
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "labelbox"
|
|
3
|
-
version = "
|
|
3
|
+
version = "5.0.0"
|
|
4
4
|
description = "Labelbox Python API"
|
|
5
5
|
authors = [{ name = "Labelbox", email = "engineering@labelbox.com" }]
|
|
6
6
|
dependencies = [
|
|
7
7
|
"google-api-core>=1.22.1",
|
|
8
|
-
"pydantic>=
|
|
8
|
+
"pydantic>=2.0",
|
|
9
9
|
"python-dateutil>=2.8.2, <2.10.0",
|
|
10
10
|
"requests>=2.22.0",
|
|
11
11
|
"strenum>=0.4.15",
|
|
@@ -64,7 +64,6 @@ build-backend = "hatchling.build"
|
|
|
64
64
|
[tool.rye]
|
|
65
65
|
managed = true
|
|
66
66
|
dev-dependencies = [
|
|
67
|
-
"yapf>=0.40.2",
|
|
68
67
|
"mypy>=1.9.0",
|
|
69
68
|
"types-pillow>=10.2.0.20240311",
|
|
70
69
|
"types-python-dateutil>=2.9.0.20240316",
|
|
@@ -72,6 +71,9 @@ dev-dependencies = [
|
|
|
72
71
|
"types-tqdm>=4.66.0.20240106",
|
|
73
72
|
]
|
|
74
73
|
|
|
74
|
+
[tool.ruff]
|
|
75
|
+
line-length = 80
|
|
76
|
+
|
|
75
77
|
[tool.rye.scripts]
|
|
76
78
|
unit = "pytest tests/unit"
|
|
77
79
|
# https://github.com/Labelbox/labelbox-python/blob/7c84fdffbc14fd1f69d2a6abdcc0087dc557fa4e/Makefile
|
|
@@ -87,9 +89,9 @@ unit = "pytest tests/unit"
|
|
|
87
89
|
# LABELBOX_TEST_BASE_URL="http://host.docker.internal:8080" \
|
|
88
90
|
integration = { cmd = "pytest tests/integration" }
|
|
89
91
|
data = { cmd = "pytest tests/data" }
|
|
90
|
-
|
|
92
|
+
rye-fmt-check = "rye fmt --check"
|
|
91
93
|
mypy-lint = "mypy src --pretty --show-error-codes --non-interactive --install-types"
|
|
92
|
-
lint = { chain = ["
|
|
94
|
+
lint = { chain = ["mypy-lint", "rye-fmt-check"] }
|
|
93
95
|
test = { chain = ["lint", "unit", "integration"] }
|
|
94
96
|
|
|
95
97
|
[tool.hatch.metadata]
|
|
@@ -1,73 +1,79 @@
|
|
|
1
1
|
name = "labelbox"
|
|
2
2
|
|
|
3
|
-
__version__ = "
|
|
3
|
+
__version__ = "5.0.0"
|
|
4
4
|
|
|
5
5
|
from labelbox.client import Client
|
|
6
|
+
from labelbox.schema.project import Project
|
|
7
|
+
from labelbox.schema.model import Model
|
|
8
|
+
from labelbox.schema.model_config import ModelConfig
|
|
9
|
+
from labelbox.schema.bulk_import_request import BulkImportRequest
|
|
6
10
|
from labelbox.schema.annotation_import import (
|
|
7
|
-
LabelImport,
|
|
8
11
|
MALPredictionImport,
|
|
9
12
|
MEAPredictionImport,
|
|
13
|
+
LabelImport,
|
|
10
14
|
MEAToMALPredictionImport,
|
|
11
15
|
)
|
|
12
|
-
from labelbox.schema.asset_attachment import AssetAttachment
|
|
13
|
-
from labelbox.schema.batch import Batch
|
|
14
|
-
from labelbox.schema.benchmark import Benchmark
|
|
15
|
-
from labelbox.schema.bulk_import_request import BulkImportRequest
|
|
16
|
-
from labelbox.schema.catalog import Catalog
|
|
17
|
-
from labelbox.schema.data_row import DataRow
|
|
18
|
-
from labelbox.schema.data_row_metadata import (
|
|
19
|
-
DataRowMetadata,
|
|
20
|
-
DataRowMetadataField,
|
|
21
|
-
DataRowMetadataOntology,
|
|
22
|
-
DeleteDataRowMetadata,
|
|
23
|
-
)
|
|
24
16
|
from labelbox.schema.dataset import Dataset
|
|
17
|
+
from labelbox.schema.data_row import DataRow
|
|
18
|
+
from labelbox.schema.catalog import Catalog
|
|
25
19
|
from labelbox.schema.enums import AnnotationImportState
|
|
20
|
+
from labelbox.schema.label import Label
|
|
21
|
+
from labelbox.schema.batch import Batch
|
|
22
|
+
from labelbox.schema.review import Review
|
|
23
|
+
from labelbox.schema.user import User
|
|
24
|
+
from labelbox.schema.organization import Organization
|
|
25
|
+
from labelbox.schema.task import Task
|
|
26
26
|
from labelbox.schema.export_task import (
|
|
27
|
-
|
|
27
|
+
StreamType,
|
|
28
28
|
ExportTask,
|
|
29
|
-
FileConverter,
|
|
30
|
-
FileConverterOutput,
|
|
31
29
|
JsonConverter,
|
|
32
30
|
JsonConverterOutput,
|
|
33
|
-
|
|
31
|
+
FileConverter,
|
|
32
|
+
FileConverterOutput,
|
|
33
|
+
BufferedJsonConverterOutput,
|
|
34
34
|
)
|
|
35
|
-
from labelbox.schema.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
from labelbox.schema.
|
|
40
|
-
from labelbox.schema.
|
|
41
|
-
from labelbox.schema.labeling_frontend import LabelingFrontend, LabelingFrontendOptions
|
|
42
|
-
from labelbox.schema.labeling_service import LabelingService
|
|
43
|
-
from labelbox.schema.labeling_service_dashboard import LabelingServiceDashboard
|
|
44
|
-
from labelbox.schema.labeling_service_status import LabelingServiceStatus
|
|
45
|
-
from labelbox.schema.media_type import MediaType
|
|
46
|
-
from labelbox.schema.model import Model
|
|
47
|
-
from labelbox.schema.model_config import ModelConfig
|
|
48
|
-
from labelbox.schema.model_run import DataSplit, ModelRun
|
|
35
|
+
from labelbox.schema.labeling_frontend import (
|
|
36
|
+
LabelingFrontend,
|
|
37
|
+
LabelingFrontendOptions,
|
|
38
|
+
)
|
|
39
|
+
from labelbox.schema.asset_attachment import AssetAttachment
|
|
40
|
+
from labelbox.schema.webhook import Webhook
|
|
49
41
|
from labelbox.schema.ontology import (
|
|
50
|
-
Classification,
|
|
51
|
-
FeatureSchema,
|
|
52
42
|
Ontology,
|
|
53
43
|
OntologyBuilder,
|
|
44
|
+
Classification,
|
|
54
45
|
Option,
|
|
55
|
-
PromptResponseClassification,
|
|
56
|
-
ResponseOption,
|
|
57
46
|
Tool,
|
|
47
|
+
FeatureSchema,
|
|
58
48
|
)
|
|
59
|
-
from labelbox.schema.
|
|
60
|
-
from labelbox.schema.
|
|
61
|
-
from labelbox.schema.
|
|
49
|
+
from labelbox.schema.ontology import PromptResponseClassification
|
|
50
|
+
from labelbox.schema.ontology import ResponseOption
|
|
51
|
+
from labelbox.schema.role import Role, ProjectRole
|
|
52
|
+
from labelbox.schema.invite import Invite, InviteLimit
|
|
53
|
+
from labelbox.schema.data_row_metadata import (
|
|
54
|
+
DataRowMetadataOntology,
|
|
55
|
+
DataRowMetadataField,
|
|
56
|
+
DataRowMetadata,
|
|
57
|
+
DeleteDataRowMetadata,
|
|
58
|
+
)
|
|
59
|
+
from labelbox.schema.model_run import ModelRun, DataSplit
|
|
60
|
+
from labelbox.schema.benchmark import Benchmark
|
|
61
|
+
from labelbox.schema.iam_integration import IAMIntegration
|
|
62
|
+
from labelbox.schema.resource_tag import ResourceTag
|
|
62
63
|
from labelbox.schema.project_model_config import ProjectModelConfig
|
|
63
|
-
from labelbox.schema.project_overview import ProjectOverview, ProjectOverviewDetailed
|
|
64
64
|
from labelbox.schema.project_resource_tag import ProjectResourceTag
|
|
65
|
+
from labelbox.schema.media_type import MediaType
|
|
66
|
+
from labelbox.schema.slice import Slice, CatalogSlice, ModelSlice
|
|
65
67
|
from labelbox.schema.queue_mode import QueueMode
|
|
66
|
-
from labelbox.schema.resource_tag import ResourceTag
|
|
67
|
-
from labelbox.schema.review import Review
|
|
68
|
-
from labelbox.schema.role import ProjectRole, Role
|
|
69
|
-
from labelbox.schema.slice import CatalogSlice, ModelSlice, Slice
|
|
70
|
-
from labelbox.schema.task import Task
|
|
71
68
|
from labelbox.schema.task_queue import TaskQueue
|
|
72
|
-
from labelbox.schema.
|
|
73
|
-
from labelbox.schema.
|
|
69
|
+
from labelbox.schema.label_score import LabelScore
|
|
70
|
+
from labelbox.schema.identifiables import UniqueIds, GlobalKeys, DataRowIds
|
|
71
|
+
from labelbox.schema.identifiable import UniqueId, GlobalKey
|
|
72
|
+
from labelbox.schema.ontology_kind import OntologyKind
|
|
73
|
+
from labelbox.schema.project_overview import (
|
|
74
|
+
ProjectOverview,
|
|
75
|
+
ProjectOverviewDetailed,
|
|
76
|
+
)
|
|
77
|
+
from labelbox.schema.labeling_service import LabelingService
|
|
78
|
+
from labelbox.schema.labeling_service_dashboard import LabelingServiceDashboard
|
|
79
|
+
from labelbox.schema.labeling_service_status import LabelingServiceStatus
|
|
@@ -12,7 +12,6 @@ logger = logging.getLogger(__name__)
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class AdvClient:
|
|
15
|
-
|
|
16
15
|
def __init__(self, endpoint: str, api_key: str):
|
|
17
16
|
self.endpoint = endpoint
|
|
18
17
|
self.api_key = api_key
|
|
@@ -32,8 +31,9 @@ class AdvClient:
|
|
|
32
31
|
return self._request("GET", "/adv/v1/embeddings").get("results", [])
|
|
33
32
|
|
|
34
33
|
def import_vectors_from_file(self, id: str, file_path: str, callback=None):
|
|
35
|
-
self._send_ndjson(
|
|
36
|
-
|
|
34
|
+
self._send_ndjson(
|
|
35
|
+
f"/adv/v1/embeddings/{id}/_import_ndjson", file_path, callback
|
|
36
|
+
)
|
|
37
37
|
|
|
38
38
|
def get_imported_vector_count(self, id: str) -> int:
|
|
39
39
|
data = self._request("GET", f"/adv/v1/embeddings/{id}/vectors/_count")
|
|
@@ -41,38 +41,42 @@ class AdvClient:
|
|
|
41
41
|
|
|
42
42
|
def _create_session(self) -> Session:
|
|
43
43
|
session = requests.session()
|
|
44
|
-
session.headers.update(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
session.headers.update(
|
|
45
|
+
{
|
|
46
|
+
"Authorization": f"Bearer {self.api_key}",
|
|
47
|
+
"Content-Type": "application/json",
|
|
48
|
+
}
|
|
49
|
+
)
|
|
48
50
|
return session
|
|
49
51
|
|
|
50
|
-
def _request(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
def _request(
|
|
53
|
+
self,
|
|
54
|
+
method: str,
|
|
55
|
+
path: str,
|
|
56
|
+
data: Optional[Dict[str, Any]] = None,
|
|
57
|
+
headers: Optional[Dict[str, Any]] = None,
|
|
58
|
+
) -> Dict[str, Any]:
|
|
55
59
|
url = f"{self.endpoint}{path}"
|
|
56
60
|
requests_data = None
|
|
57
61
|
if data:
|
|
58
62
|
requests_data = json.dumps(data)
|
|
59
|
-
response = self.session.request(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
headers=headers)
|
|
63
|
+
response = self.session.request(
|
|
64
|
+
method, url, data=requests_data, headers=headers
|
|
65
|
+
)
|
|
63
66
|
if response.status_code != requests.codes.ok:
|
|
64
|
-
message = response.json().get(
|
|
67
|
+
message = response.json().get("message")
|
|
65
68
|
if message:
|
|
66
69
|
raise LabelboxError(message)
|
|
67
70
|
else:
|
|
68
71
|
response.raise_for_status()
|
|
69
72
|
return response.json()
|
|
70
73
|
|
|
71
|
-
def _send_ndjson(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
def _send_ndjson(
|
|
75
|
+
self,
|
|
76
|
+
path: str,
|
|
77
|
+
file_path: str,
|
|
78
|
+
callback: Optional[Callable[[Dict[str, Any]], None]] = None,
|
|
79
|
+
):
|
|
76
80
|
"""
|
|
77
81
|
Sends an NDJson file in chunks.
|
|
78
82
|
|
|
@@ -87,7 +91,7 @@ class AdvClient:
|
|
|
87
91
|
_headers = {
|
|
88
92
|
"Content-Type": "application/x-ndjson",
|
|
89
93
|
"X-Content-Lines": str(_count),
|
|
90
|
-
"Content-Length": str(buffer.tell())
|
|
94
|
+
"Content-Length": str(buffer.tell()),
|
|
91
95
|
}
|
|
92
96
|
rsp = self._send_bytes(f"{self.endpoint}{path}", _buffer, _headers)
|
|
93
97
|
rsp.raise_for_status()
|
|
@@ -96,7 +100,7 @@ class AdvClient:
|
|
|
96
100
|
|
|
97
101
|
buffer = io.BytesIO()
|
|
98
102
|
count = 0
|
|
99
|
-
with open(file_path,
|
|
103
|
+
with open(file_path, "rb") as fp:
|
|
100
104
|
for line in fp:
|
|
101
105
|
buffer.write(line)
|
|
102
106
|
count += 1
|
|
@@ -107,10 +111,12 @@ class AdvClient:
|
|
|
107
111
|
if count:
|
|
108
112
|
upload_chunk(buffer, count)
|
|
109
113
|
|
|
110
|
-
def _send_bytes(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
+
def _send_bytes(
|
|
115
|
+
self,
|
|
116
|
+
url: str,
|
|
117
|
+
buffer: io.BytesIO,
|
|
118
|
+
headers: Optional[Dict[str, Any]] = None,
|
|
119
|
+
) -> Response:
|
|
114
120
|
buffer.seek(0)
|
|
115
121
|
return self.session.put(url, headers=headers, data=buffer)
|
|
116
122
|
|