From 2eaa7beefc67b4dc4e3f2eec2f8157945533b760 Mon Sep 17 00:00:00 2001 From: Marcel Canu Date: Fri, 29 Nov 2024 17:52:22 -0300 Subject: [PATCH 1/8] feat: OPTIC-1360: [BE] create Account settings endpoints that handle existing functionality in the django template From e2e6245bfc572c991cc219d550807a6b4fa6ec39 Mon Sep 17 00:00:00 2001 From: Marcel Canu Date: Fri, 29 Nov 2024 17:58:44 -0300 Subject: [PATCH 2/8] Added date_joined to whoami endpoint. Added created_at to organizations endpoint. --- label_studio/organizations/api.py | 22 ++++++++++++++++++-- label_studio/organizations/serializers.py | 25 ++++++++++++++++------- label_studio/users/serializers.py | 1 + 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/label_studio/organizations/api.py b/label_studio/organizations/api.py index 540febc52da2..ef060e50f838 100644 --- a/label_studio/organizations/api.py +++ b/label_studio/organizations/api.py @@ -14,6 +14,7 @@ from organizations.serializers import ( OrganizationIdSerializer, OrganizationInviteSerializer, + OrganizationMemberSerializer, OrganizationMemberUserSerializer, OrganizationSerializer, OrganizationsParamsSerializer, @@ -160,13 +161,30 @@ def get_queryset(self): ) class OrganizationMemberDetailAPI(GetParentObjectMixin, generics.RetrieveDestroyAPIView): permission_required = ViewClassPermission( + GET=all_permissions.organizations_view, DELETE=all_permissions.organizations_change, ) parent_queryset = Organization.objects.all() parser_classes = (JSONParser, FormParser, MultiPartParser) permission_classes = (IsAuthenticated, HasObjectPermission) - serializer_class = OrganizationMemberUserSerializer # Assuming this is the right serializer - http_method_names = ['delete'] + serializer_class = OrganizationMemberSerializer + http_method_names = ['delete', 'get'] + + def get_queryset(self): + return OrganizationMember.objects.filter(organization=self.get_parent_object()) + + def get_serializer_context(self): + return { + **super().get_serializer_context(), + 'organization': self.get_parent_object(), + } + + def get(self, request, pk, user_pk): + org = self.get_parent_object() + user = get_object_or_404(User, pk=user_pk) + member = get_object_or_404(OrganizationMember, user=user, organization=org) + serializer = self.get_serializer(member) + return Response(serializer.data) def delete(self, request, pk=None, user_pk=None): org = self.get_parent_object() diff --git a/label_studio/organizations/serializers.py b/label_studio/organizations/serializers.py index bf7312c7b6dc..3ff714748112 100644 --- a/label_studio/organizations/serializers.py +++ b/label_studio/organizations/serializers.py @@ -12,7 +12,7 @@ class OrganizationIdSerializer(DynamicFieldsMixin, serializers.ModelSerializer): class Meta: model = Organization - fields = ['id', 'title', 'contact_info'] + fields = ['id', 'title', 'contact_info', 'created_at'] class OrganizationSerializer(DynamicFieldsMixin, serializers.ModelSerializer): @@ -21,12 +21,6 @@ class Meta: fields = '__all__' -class OrganizationMemberSerializer(DynamicFieldsMixin, serializers.ModelSerializer): - class Meta: - model = OrganizationMember - fields = ['id', 'organization', 'user'] - - class UserSerializerWithProjects(UserSerializer): created_projects = serializers.SerializerMethodField(read_only=True) contributed_to_projects = serializers.SerializerMethodField(read_only=True) @@ -104,6 +98,23 @@ class Meta: fields = ['id', 'organization', 'user'] +class OrganizationMemberSerializer(DynamicFieldsMixin, serializers.ModelSerializer): + annotations_count = serializers.SerializerMethodField(read_only=True) + contributed_projects_count = serializers.SerializerMethodField(read_only=True) + + def get_annotations_count(self, member): + org = self.context.get('organization') + return member.user.annotations.filter(project__organization=org).count() + + def get_contributed_projects_count(self, member): + org = self.context.get('organization') + return member.user.annotations.filter(project__organization=org).values('project').distinct().count() + + class Meta: + model = OrganizationMember + fields = ['user', 'organization', 'contributed_projects_count', 'annotations_count', 'created_at'] + + class OrganizationInviteSerializer(serializers.Serializer): token = serializers.CharField(required=False) invite_url = serializers.CharField(required=False) diff --git a/label_studio/users/serializers.py b/label_studio/users/serializers.py index e3d0b7da28c5..14f64982c47d 100644 --- a/label_studio/users/serializers.py +++ b/label_studio/users/serializers.py @@ -85,6 +85,7 @@ class Meta: 'phone', 'active_organization', 'allow_newsletters', + 'date_joined', ) From 724b9d9d8ff8c1603162301d88ef930d2e771585 Mon Sep 17 00:00:00 2001 From: Marcel Canu Date: Mon, 2 Dec 2024 10:53:15 -0300 Subject: [PATCH 3/8] Fix permissions --- label_studio/organizations/api.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/label_studio/organizations/api.py b/label_studio/organizations/api.py index ef060e50f838..e948e611d738 100644 --- a/label_studio/organizations/api.py +++ b/label_studio/organizations/api.py @@ -26,6 +26,7 @@ from rest_framework.parsers import FormParser, JSONParser, MultiPartParser from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response +from rest_framework.settings import api_settings from rest_framework.views import APIView from users.models import User @@ -166,10 +167,15 @@ class OrganizationMemberDetailAPI(GetParentObjectMixin, generics.RetrieveDestroy ) parent_queryset = Organization.objects.all() parser_classes = (JSONParser, FormParser, MultiPartParser) - permission_classes = (IsAuthenticated, HasObjectPermission) serializer_class = OrganizationMemberSerializer http_method_names = ['delete', 'get'] + @property + def permission_classes(self): + if self.request.method == 'delete': + return [IsAuthenticated, HasObjectPermission] + return api_settings.DEFAULT_PERMISSION_CLASSES + def get_queryset(self): return OrganizationMember.objects.filter(organization=self.get_parent_object()) @@ -180,9 +186,10 @@ def get_serializer_context(self): } def get(self, request, pk, user_pk): - org = self.get_parent_object() + queryset = self.get_queryset() user = get_object_or_404(User, pk=user_pk) - member = get_object_or_404(OrganizationMember, user=user, organization=org) + member = get_object_or_404(queryset, user=user) + self.check_object_permissions(request, member) serializer = self.get_serializer(member) return Response(serializer.data) From 53aa73d876f0290319f223557e96eb0136c80bfd Mon Sep 17 00:00:00 2001 From: Marcel Canu Date: Mon, 2 Dec 2024 14:54:10 -0300 Subject: [PATCH 4/8] Added tests --- label_studio/organizations/api.py | 2 +- label_studio/tests/test_organizations.py | 42 +++++++++++++++++++ .../tests/webhooks/organizations.tavern.yml | 2 +- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/label_studio/organizations/api.py b/label_studio/organizations/api.py index e948e611d738..323edbd5b46d 100644 --- a/label_studio/organizations/api.py +++ b/label_studio/organizations/api.py @@ -172,7 +172,7 @@ class OrganizationMemberDetailAPI(GetParentObjectMixin, generics.RetrieveDestroy @property def permission_classes(self): - if self.request.method == 'delete': + if self.request.method == 'DELETE': return [IsAuthenticated, HasObjectPermission] return api_settings.DEFAULT_PERMISSION_CLASSES diff --git a/label_studio/tests/test_organizations.py b/label_studio/tests/test_organizations.py index c7aa53144a6f..87e4a9ab0825 100644 --- a/label_studio/tests/test_organizations.py +++ b/label_studio/tests/test_organizations.py @@ -1,6 +1,10 @@ """This file and its contents are licensed under the Apache License 2.0. Please see the included NOTICE for copyright information and LICENSE for a copy of the license. """ import pytest +from organizations.models import Organization, OrganizationMember +from tasks.models import Task +from tests.utils import make_annotation +from users.models import User @pytest.mark.django_db @@ -16,3 +20,41 @@ def test_api_list_organizations(business_client): response_data = response.json() assert len(response_data) == 1 assert response_data[0]['id'] == business_client.organization.id + + +@pytest.mark.django_db +def test_organization_member_retrieve_same_user(business_client, configured_project): + user = business_client.user + organization = business_client.organization + task = Task.objects.filter(project=configured_project).first() + make_annotation({'completed_by': user}, task_id=task.id) + response = business_client.get(f'/api/organizations/{organization.id}/memberships/{user.id}/') + response_data = response.json() + assert response_data['user'] == user.id + assert response_data['organization'] == organization.id + assert response_data['annotations_count'] == 1 + assert response_data['contributed_projects_count'] == 1 + + +@pytest.mark.django_db +def test_organization_member_retrieve_other_user_in_org(business_client): + organization = business_client.organization + other_user = User.objects.create(email='other_user@pytest.net') + OrganizationMember.objects.create(user=other_user, organization=organization) + response = business_client.get(f'/api/organizations/{organization.id}/memberships/{other_user.id}/') + response_data = response.json() + print(response_data) + assert response_data['user'] == other_user.id + assert response_data['organization'] == organization.id + assert response_data['annotations_count'] == 0 + assert response_data['contributed_projects_count'] == 0 + + +@pytest.mark.django_db +def test_organization_member_retrieve_not_active_org(business_client): + user = business_client.user + other_user = User.objects.create(email='other_user@pytest.net') + other_organization = Organization.create_organization(created_by=other_user) + OrganizationMember.objects.create(user=user, organization=other_organization) + response = business_client.get(f'/api/organizations/{other_organization.id}/memberships/{user.id}/') + assert response.status_code == 403 diff --git a/label_studio/tests/webhooks/organizations.tavern.yml b/label_studio/tests/webhooks/organizations.tavern.yml index d98a396f0e8c..5951a399ab7a 100644 --- a/label_studio/tests/webhooks/organizations.tavern.yml +++ b/label_studio/tests/webhooks/organizations.tavern.yml @@ -102,7 +102,7 @@ stages: - name: soft_delete_user_fails_second_deletion_attempt request: - url: "{django_live_url}/api/users/{user_pk}/soft-delete" + url: "{django_live_url}/api/organizations/{org_pk}/memberships/{user_pk}" method: DELETE response: status_code: 404 From 13ea0232a08fcaefea88de56902ed7a0307aef6d Mon Sep 17 00:00:00 2001 From: Marcel Canu Date: Mon, 2 Dec 2024 17:45:42 -0300 Subject: [PATCH 5/8] Added swagger schema --- label_studio/organizations/api.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/label_studio/organizations/api.py b/label_studio/organizations/api.py index 323edbd5b46d..c4c964c51afd 100644 --- a/label_studio/organizations/api.py +++ b/label_studio/organizations/api.py @@ -137,6 +137,25 @@ def get_queryset(self): return org.members.order_by('user__username') +@method_decorator( + name='get', + decorator=swagger_auto_schema( + tags=['Organizations'], + x_fern_sdk_group_name=['organizations', 'members'], + x_fern_sdk_method_name='get', + operation_summary='Get organization member details', + operation_description='Get organization member details by user ID.', + manual_parameters=[ + openapi.Parameter( + name='user_pk', + type=openapi.TYPE_INTEGER, + in_=openapi.IN_PATH, + description='A unique integer value identifying the user to get organization details for.', + ), + ], + responses={200: OrganizationMemberSerializer()}, + ), +) @method_decorator( name='delete', decorator=swagger_auto_schema( From 5e2c46f1c0e390360e6856946e5be34792038ce2 Mon Sep 17 00:00:00 2001 From: fern-api <115122769+fern-api[bot]@users.noreply.github.com> Date: Tue, 3 Dec 2024 17:53:03 +0000 Subject: [PATCH 6/8] [submodules] Bump HumanSignal/label-studio-sdk version Workflow run: https://github.com/HumanSignal/label-studio/actions/runs/12145328900 --- poetry.lock | 159 ++----------------------------------------------- pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 155 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8c07133dc9a0..28834dca3aa0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. [[package]] name = "annotated-types" @@ -1048,21 +1048,6 @@ files = [ [package.extras] tests = ["coverage", "coveralls", "dill", "mock", "nose"] -[[package]] -name = "faker" -version = "33.0.0" -description = "Faker is a Python package that generates fake data for you." -optional = false -python-versions = ">=3.8" -files = [ - {file = "Faker-33.0.0-py3-none-any.whl", hash = "sha256:68e5580cb6b4226710886e595eabc13127149d6e71e9d1db65506a7fbe2c7fce"}, - {file = "faker-33.0.0.tar.gz", hash = "sha256:9b01019c1ddaf2253ca2308c0472116e993f4ad8fc9905f82fa965e0c6f932e9"}, -] - -[package.dependencies] -python-dateutil = ">=2.4" -typing-extensions = "*" - [[package]] name = "fakeredis" version = "1.5.0" @@ -1852,28 +1837,6 @@ files = [ {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, ] -[[package]] -name = "jsf" -version = "0.11.2" -description = "Creates fake JSON files from a JSON schema" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jsf-0.11.2-py3-none-any.whl", hash = "sha256:b4472c8c2d776eb3e0bb08368caa6ae0ead7ea78b20653facc07b6d93768612c"}, - {file = "jsf-0.11.2.tar.gz", hash = "sha256:07055b363281d38ce871a9256a00587d8472802c5108721a7fe5884465104b5d"}, -] - -[package.dependencies] -faker = ">=15.3.4" -jsonschema = ">=4.17.3" -pydantic = ">=2.0.0" -rstr = ">=3.2.0" -smart-open = {version = ">=6.3.0", extras = ["http"]} -typing-extensions = ">=4.9.0" - -[package.extras] -cli = ["typer (>=0.7.0)"] - [[package]] name = "jsonschema" version = "4.23.0" @@ -1934,12 +1897,12 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", [[package]] name = "label-studio-sdk" -version = "1.0.8" +version = "1.0.9" description = "" optional = false python-versions = "^3.8" files = [ - {file = "179cec94896d615e6fa56deaaf14e782f052c877.zip", hash = "sha256:3a0649699f9f6de78ee79349772488543cb18eebb1256930c1de4487ded0539d"}, + {file = "d8730009801626f6026770ff80515cb175ae2c37.zip", hash = "sha256:ecf2cad22fb40f088aaba3d8be66a21e7d92c1deaf71a74bc1612dacb41c588b"}, ] [package.dependencies] @@ -1947,7 +1910,6 @@ appdirs = ">=1.4.3" datamodel-code-generator = "0.26.1" httpx = ">=0.21.2" ijson = ">=3.2.3" -jsf = ">=0.11.2,<0.12.0" jsonschema = ">=4.23.0" lxml = ">=4.2.5" nltk = ">=3.9.1,<4.0.0" @@ -1963,7 +1925,7 @@ xmljson = "0.2.1" [package.source] type = "url" -url = "https://github.com/HumanSignal/label-studio-sdk/archive/179cec94896d615e6fa56deaaf14e782f052c877.zip" +url = "https://github.com/HumanSignal/label-studio-sdk/archive/d8730009801626f6026770ff80515cb175ae2c37.zip" [[package]] name = "launchdarkly-server-sdk" @@ -3892,17 +3854,6 @@ files = [ [package.dependencies] pyasn1 = ">=0.1.3" -[[package]] -name = "rstr" -version = "3.2.2" -description = "Generate random strings in Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "rstr-3.2.2-py3-none-any.whl", hash = "sha256:f39195d38da1748331eeec52f1276e71eb6295e7949beea91a5e9af2340d7b3b"}, - {file = "rstr-3.2.2.tar.gz", hash = "sha256:c4a564d4dfb4472d931d145c43d1cf1ad78c24592142e7755b8866179eeac012"}, -] - [[package]] name = "ruamel-yaml" version = "0.18.5" @@ -4117,32 +4068,6 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -[[package]] -name = "smart-open" -version = "7.0.5" -description = "Utils for streaming large files (S3, HDFS, GCS, Azure Blob Storage, gzip, bz2...)" -optional = false -python-versions = "<4.0,>=3.7" -files = [ - {file = "smart_open-7.0.5-py3-none-any.whl", hash = "sha256:8523ed805c12dff3eaa50e9c903a6cb0ae78800626631c5fe7ea073439847b89"}, - {file = "smart_open-7.0.5.tar.gz", hash = "sha256:d3672003b1dbc85e2013e4983b88eb9a5ccfd389b0d4e5015f39a9ee5620ec18"}, -] - -[package.dependencies] -requests = {version = "*", optional = true, markers = "extra == \"http\""} -wrapt = "*" - -[package.extras] -all = ["azure-common", "azure-core", "azure-storage-blob", "boto3", "google-cloud-storage (>=2.6.0)", "paramiko", "requests", "zstandard"] -azure = ["azure-common", "azure-core", "azure-storage-blob"] -gcs = ["google-cloud-storage (>=2.6.0)"] -http = ["requests"] -s3 = ["boto3"] -ssh = ["paramiko"] -test = ["awscli", "azure-common", "azure-core", "azure-storage-blob", "boto3", "google-cloud-storage (>=2.6.0)", "moto[server]", "numpy", "paramiko", "pyopenssl", "pytest", "pytest-benchmark", "pytest-rerunfailures", "requests", "responses", "zstandard"] -webhdfs = ["requests"] -zst = ["zstandard"] - [[package]] name = "sniffio" version = "1.3.0" @@ -4500,80 +4425,6 @@ files = [ [package.extras] test = ["pytest (>=6.0.0)"] -[[package]] -name = "wrapt" -version = "1.17.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.8" -files = [ - {file = "wrapt-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a0c23b8319848426f305f9cb0c98a6e32ee68a36264f45948ccf8e7d2b941f8"}, - {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1ca5f060e205f72bec57faae5bd817a1560fcfc4af03f414b08fa29106b7e2d"}, - {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e185ec6060e301a7e5f8461c86fb3640a7beb1a0f0208ffde7a65ec4074931df"}, - {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb90765dd91aed05b53cd7a87bd7f5c188fcd95960914bae0d32c5e7f899719d"}, - {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:879591c2b5ab0a7184258274c42a126b74a2c3d5a329df16d69f9cee07bba6ea"}, - {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fce6fee67c318fdfb7f285c29a82d84782ae2579c0e1b385b7f36c6e8074fffb"}, - {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0698d3a86f68abc894d537887b9bbf84d29bcfbc759e23f4644be27acf6da301"}, - {file = "wrapt-1.17.0-cp310-cp310-win32.whl", hash = "sha256:69d093792dc34a9c4c8a70e4973a3361c7a7578e9cd86961b2bbf38ca71e4e22"}, - {file = "wrapt-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:f28b29dc158ca5d6ac396c8e0a2ef45c4e97bb7e65522bfc04c989e6fe814575"}, - {file = "wrapt-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74bf625b1b4caaa7bad51d9003f8b07a468a704e0644a700e936c357c17dd45a"}, - {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f2a28eb35cf99d5f5bd12f5dd44a0f41d206db226535b37b0c60e9da162c3ed"}, - {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81b1289e99cf4bad07c23393ab447e5e96db0ab50974a280f7954b071d41b489"}, - {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2939cd4a2a52ca32bc0b359015718472d7f6de870760342e7ba295be9ebaf9"}, - {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a9653131bda68a1f029c52157fd81e11f07d485df55410401f745007bd6d339"}, - {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4e4b4385363de9052dac1a67bfb535c376f3d19c238b5f36bddc95efae15e12d"}, - {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bdf62d25234290db1837875d4dceb2151e4ea7f9fff2ed41c0fde23ed542eb5b"}, - {file = "wrapt-1.17.0-cp311-cp311-win32.whl", hash = "sha256:5d8fd17635b262448ab8f99230fe4dac991af1dabdbb92f7a70a6afac8a7e346"}, - {file = "wrapt-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:92a3d214d5e53cb1db8b015f30d544bc9d3f7179a05feb8f16df713cecc2620a"}, - {file = "wrapt-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:89fc28495896097622c3fc238915c79365dd0ede02f9a82ce436b13bd0ab7569"}, - {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875d240fdbdbe9e11f9831901fb8719da0bd4e6131f83aa9f69b96d18fae7504"}, - {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ed16d95fd142e9c72b6c10b06514ad30e846a0d0917ab406186541fe68b451"}, - {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b956061b8db634120b58f668592a772e87e2e78bc1f6a906cfcaa0cc7991c1"}, - {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:daba396199399ccabafbfc509037ac635a6bc18510ad1add8fd16d4739cdd106"}, - {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4d63f4d446e10ad19ed01188d6c1e1bb134cde8c18b0aa2acfd973d41fcc5ada"}, - {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8a5e7cc39a45fc430af1aefc4d77ee6bad72c5bcdb1322cfde852c15192b8bd4"}, - {file = "wrapt-1.17.0-cp312-cp312-win32.whl", hash = "sha256:0a0a1a1ec28b641f2a3a2c35cbe86c00051c04fffcfcc577ffcdd707df3f8635"}, - {file = "wrapt-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c34f6896a01b84bab196f7119770fd8466c8ae3dfa73c59c0bb281e7b588ce7"}, - {file = "wrapt-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:714c12485aa52efbc0fc0ade1e9ab3a70343db82627f90f2ecbc898fdf0bb181"}, - {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da427d311782324a376cacb47c1a4adc43f99fd9d996ffc1b3e8529c4074d393"}, - {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba1739fb38441a27a676f4de4123d3e858e494fac05868b7a281c0a383c098f4"}, - {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e711fc1acc7468463bc084d1b68561e40d1eaa135d8c509a65dd534403d83d7b"}, - {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:140ea00c87fafc42739bd74a94a5a9003f8e72c27c47cd4f61d8e05e6dec8721"}, - {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:73a96fd11d2b2e77d623a7f26e004cc31f131a365add1ce1ce9a19e55a1eef90"}, - {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0b48554952f0f387984da81ccfa73b62e52817a4386d070c75e4db7d43a28c4a"}, - {file = "wrapt-1.17.0-cp313-cp313-win32.whl", hash = "sha256:498fec8da10e3e62edd1e7368f4b24aa362ac0ad931e678332d1b209aec93045"}, - {file = "wrapt-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:fd136bb85f4568fffca995bd3c8d52080b1e5b225dbf1c2b17b66b4c5fa02838"}, - {file = "wrapt-1.17.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:17fcf043d0b4724858f25b8826c36e08f9fb2e475410bece0ec44a22d533da9b"}, - {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4a557d97f12813dc5e18dad9fa765ae44ddd56a672bb5de4825527c847d6379"}, - {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0229b247b0fc7dee0d36176cbb79dbaf2a9eb7ecc50ec3121f40ef443155fb1d"}, - {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8425cfce27b8b20c9b89d77fb50e368d8306a90bf2b6eef2cdf5cd5083adf83f"}, - {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9c900108df470060174108012de06d45f514aa4ec21a191e7ab42988ff42a86c"}, - {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:4e547b447073fc0dbfcbff15154c1be8823d10dab4ad401bdb1575e3fdedff1b"}, - {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:914f66f3b6fc7b915d46c1cc424bc2441841083de01b90f9e81109c9759e43ab"}, - {file = "wrapt-1.17.0-cp313-cp313t-win32.whl", hash = "sha256:a4192b45dff127c7d69b3bdfb4d3e47b64179a0b9900b6351859f3001397dabf"}, - {file = "wrapt-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:4f643df3d4419ea3f856c5c3f40fec1d65ea2e89ec812c83f7767c8730f9827a"}, - {file = "wrapt-1.17.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:69c40d4655e078ede067a7095544bcec5a963566e17503e75a3a3e0fe2803b13"}, - {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f495b6754358979379f84534f8dd7a43ff8cff2558dcdea4a148a6e713a758f"}, - {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:baa7ef4e0886a6f482e00d1d5bcd37c201b383f1d314643dfb0367169f94f04c"}, - {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fc931382e56627ec4acb01e09ce66e5c03c384ca52606111cee50d931a342d"}, - {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8f8909cdb9f1b237786c09a810e24ee5e15ef17019f7cecb207ce205b9b5fcce"}, - {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ad47b095f0bdc5585bced35bd088cbfe4177236c7df9984b3cc46b391cc60627"}, - {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:948a9bd0fb2c5120457b07e59c8d7210cbc8703243225dbd78f4dfc13c8d2d1f"}, - {file = "wrapt-1.17.0-cp38-cp38-win32.whl", hash = "sha256:5ae271862b2142f4bc687bdbfcc942e2473a89999a54231aa1c2c676e28f29ea"}, - {file = "wrapt-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:f335579a1b485c834849e9075191c9898e0731af45705c2ebf70e0cd5d58beed"}, - {file = "wrapt-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d751300b94e35b6016d4b1e7d0e7bbc3b5e1751e2405ef908316c2a9024008a1"}, - {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7264cbb4a18dc4acfd73b63e4bcfec9c9802614572025bdd44d0721983fc1d9c"}, - {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33539c6f5b96cf0b1105a0ff4cf5db9332e773bb521cc804a90e58dc49b10578"}, - {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c30970bdee1cad6a8da2044febd824ef6dc4cc0b19e39af3085c763fdec7de33"}, - {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bc7f729a72b16ee21795a943f85c6244971724819819a41ddbaeb691b2dd85ad"}, - {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:6ff02a91c4fc9b6a94e1c9c20f62ea06a7e375f42fe57587f004d1078ac86ca9"}, - {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2dfb7cff84e72e7bf975b06b4989477873dcf160b2fd89959c629535df53d4e0"}, - {file = "wrapt-1.17.0-cp39-cp39-win32.whl", hash = "sha256:2399408ac33ffd5b200480ee858baa58d77dd30e0dd0cab6a8a9547135f30a88"}, - {file = "wrapt-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:4f763a29ee6a20c529496a20a7bcb16a73de27f5da6a843249c7047daf135977"}, - {file = "wrapt-1.17.0-py3-none-any.whl", hash = "sha256:d2c63b93548eda58abf5188e505ffed0229bf675f7c3090f8e36ad55b8cbc371"}, - {file = "wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801"}, -] - [[package]] name = "xmljson" version = "0.2.1" @@ -4617,4 +4468,4 @@ uwsgi = ["pyuwsgi", "uwsgitop"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<4" -content-hash = "e8f304ec7809fd3445cf97709a6be0fcca0d9217e85251b78921539b829ebdf8" +content-hash = "1eff5b3cd0350c0a2b1a619a42ce154cd94ddca4e076aa12ba4cea7c0708051b" diff --git a/pyproject.toml b/pyproject.toml index 83066691e5ac..458937545297 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -203,7 +203,7 @@ django-migration-linter = "^5.1.0" setuptools = ">=75.4.0" # Humansignal repo dependencies -label-studio-sdk = {url = "https://github.com/HumanSignal/label-studio-sdk/archive/179cec94896d615e6fa56deaaf14e782f052c877.zip"} +label-studio-sdk = {url = "https://github.com/HumanSignal/label-studio-sdk/archive/d8730009801626f6026770ff80515cb175ae2c37.zip"} [tool.poetry.group.test.dependencies] pytest = "7.2.2" From 03411c25ec7269390aa7441cd65fb2b7209da87c Mon Sep 17 00:00:00 2001 From: Marcel Canu Date: Tue, 3 Dec 2024 18:48:53 +0000 Subject: [PATCH 7/8] [submodules] Bump HumanSignal/label-studio-sdk version Workflow run: https://github.com/HumanSignal/label-studio/actions/runs/12146196095 --- poetry.lock | 159 +++++++++++++++++++++++++++++++++++++++++++++++-- pyproject.toml | 2 +- 2 files changed, 155 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index 28834dca3aa0..6bb73bfe8bb7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1048,6 +1048,21 @@ files = [ [package.extras] tests = ["coverage", "coveralls", "dill", "mock", "nose"] +[[package]] +name = "faker" +version = "33.1.0" +description = "Faker is a Python package that generates fake data for you." +optional = false +python-versions = ">=3.8" +files = [ + {file = "Faker-33.1.0-py3-none-any.whl", hash = "sha256:d30c5f0e2796b8970de68978365247657486eb0311c5abe88d0b895b68dff05d"}, + {file = "faker-33.1.0.tar.gz", hash = "sha256:1c925fc0e86a51fc46648b504078c88d0cd48da1da2595c4e712841cab43a1e4"}, +] + +[package.dependencies] +python-dateutil = ">=2.4" +typing-extensions = "*" + [[package]] name = "fakeredis" version = "1.5.0" @@ -1837,6 +1852,28 @@ files = [ {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, ] +[[package]] +name = "jsf" +version = "0.11.2" +description = "Creates fake JSON files from a JSON schema" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsf-0.11.2-py3-none-any.whl", hash = "sha256:b4472c8c2d776eb3e0bb08368caa6ae0ead7ea78b20653facc07b6d93768612c"}, + {file = "jsf-0.11.2.tar.gz", hash = "sha256:07055b363281d38ce871a9256a00587d8472802c5108721a7fe5884465104b5d"}, +] + +[package.dependencies] +faker = ">=15.3.4" +jsonschema = ">=4.17.3" +pydantic = ">=2.0.0" +rstr = ">=3.2.0" +smart-open = {version = ">=6.3.0", extras = ["http"]} +typing-extensions = ">=4.9.0" + +[package.extras] +cli = ["typer (>=0.7.0)"] + [[package]] name = "jsonschema" version = "4.23.0" @@ -1900,9 +1937,9 @@ name = "label-studio-sdk" version = "1.0.9" description = "" optional = false -python-versions = "^3.8" +python-versions = ">=3.9,<4" files = [ - {file = "d8730009801626f6026770ff80515cb175ae2c37.zip", hash = "sha256:ecf2cad22fb40f088aaba3d8be66a21e7d92c1deaf71a74bc1612dacb41c588b"}, + {file = "70fbc90d83effe65b9ba3804a3a1a395310e3a9f.zip", hash = "sha256:22715fe5009a44d6f0c2fc34db743a877e4b437360e0429a8d4ed1eaea0e72ae"}, ] [package.dependencies] @@ -1910,10 +1947,11 @@ appdirs = ">=1.4.3" datamodel-code-generator = "0.26.1" httpx = ">=0.21.2" ijson = ">=3.2.3" +jsf = ">=0.11.2,<0.12.0" jsonschema = ">=4.23.0" lxml = ">=4.2.5" nltk = ">=3.9.1,<4.0.0" -numpy = "<2.0.0" +numpy = ">=1.26.4,<2.0.0" pandas = ">=0.24.0" Pillow = ">=10.0.1" pydantic = ">=1.9.2" @@ -1925,7 +1963,7 @@ xmljson = "0.2.1" [package.source] type = "url" -url = "https://github.com/HumanSignal/label-studio-sdk/archive/d8730009801626f6026770ff80515cb175ae2c37.zip" +url = "https://github.com/HumanSignal/label-studio-sdk/archive/70fbc90d83effe65b9ba3804a3a1a395310e3a9f.zip" [[package]] name = "launchdarkly-server-sdk" @@ -3854,6 +3892,17 @@ files = [ [package.dependencies] pyasn1 = ">=0.1.3" +[[package]] +name = "rstr" +version = "3.2.2" +description = "Generate random strings in Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "rstr-3.2.2-py3-none-any.whl", hash = "sha256:f39195d38da1748331eeec52f1276e71eb6295e7949beea91a5e9af2340d7b3b"}, + {file = "rstr-3.2.2.tar.gz", hash = "sha256:c4a564d4dfb4472d931d145c43d1cf1ad78c24592142e7755b8866179eeac012"}, +] + [[package]] name = "ruamel-yaml" version = "0.18.5" @@ -4068,6 +4117,32 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] +[[package]] +name = "smart-open" +version = "7.0.5" +description = "Utils for streaming large files (S3, HDFS, GCS, Azure Blob Storage, gzip, bz2...)" +optional = false +python-versions = "<4.0,>=3.7" +files = [ + {file = "smart_open-7.0.5-py3-none-any.whl", hash = "sha256:8523ed805c12dff3eaa50e9c903a6cb0ae78800626631c5fe7ea073439847b89"}, + {file = "smart_open-7.0.5.tar.gz", hash = "sha256:d3672003b1dbc85e2013e4983b88eb9a5ccfd389b0d4e5015f39a9ee5620ec18"}, +] + +[package.dependencies] +requests = {version = "*", optional = true, markers = "extra == \"http\""} +wrapt = "*" + +[package.extras] +all = ["azure-common", "azure-core", "azure-storage-blob", "boto3", "google-cloud-storage (>=2.6.0)", "paramiko", "requests", "zstandard"] +azure = ["azure-common", "azure-core", "azure-storage-blob"] +gcs = ["google-cloud-storage (>=2.6.0)"] +http = ["requests"] +s3 = ["boto3"] +ssh = ["paramiko"] +test = ["awscli", "azure-common", "azure-core", "azure-storage-blob", "boto3", "google-cloud-storage (>=2.6.0)", "moto[server]", "numpy", "paramiko", "pyopenssl", "pytest", "pytest-benchmark", "pytest-rerunfailures", "requests", "responses", "zstandard"] +webhdfs = ["requests"] +zst = ["zstandard"] + [[package]] name = "sniffio" version = "1.3.0" @@ -4425,6 +4500,80 @@ files = [ [package.extras] test = ["pytest (>=6.0.0)"] +[[package]] +name = "wrapt" +version = "1.17.0" +description = "Module for decorators, wrappers and monkey patching." +optional = false +python-versions = ">=3.8" +files = [ + {file = "wrapt-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a0c23b8319848426f305f9cb0c98a6e32ee68a36264f45948ccf8e7d2b941f8"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1ca5f060e205f72bec57faae5bd817a1560fcfc4af03f414b08fa29106b7e2d"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e185ec6060e301a7e5f8461c86fb3640a7beb1a0f0208ffde7a65ec4074931df"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb90765dd91aed05b53cd7a87bd7f5c188fcd95960914bae0d32c5e7f899719d"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:879591c2b5ab0a7184258274c42a126b74a2c3d5a329df16d69f9cee07bba6ea"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fce6fee67c318fdfb7f285c29a82d84782ae2579c0e1b385b7f36c6e8074fffb"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0698d3a86f68abc894d537887b9bbf84d29bcfbc759e23f4644be27acf6da301"}, + {file = "wrapt-1.17.0-cp310-cp310-win32.whl", hash = "sha256:69d093792dc34a9c4c8a70e4973a3361c7a7578e9cd86961b2bbf38ca71e4e22"}, + {file = "wrapt-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:f28b29dc158ca5d6ac396c8e0a2ef45c4e97bb7e65522bfc04c989e6fe814575"}, + {file = "wrapt-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74bf625b1b4caaa7bad51d9003f8b07a468a704e0644a700e936c357c17dd45a"}, + {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f2a28eb35cf99d5f5bd12f5dd44a0f41d206db226535b37b0c60e9da162c3ed"}, + {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81b1289e99cf4bad07c23393ab447e5e96db0ab50974a280f7954b071d41b489"}, + {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2939cd4a2a52ca32bc0b359015718472d7f6de870760342e7ba295be9ebaf9"}, + {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a9653131bda68a1f029c52157fd81e11f07d485df55410401f745007bd6d339"}, + {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4e4b4385363de9052dac1a67bfb535c376f3d19c238b5f36bddc95efae15e12d"}, + {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bdf62d25234290db1837875d4dceb2151e4ea7f9fff2ed41c0fde23ed542eb5b"}, + {file = "wrapt-1.17.0-cp311-cp311-win32.whl", hash = "sha256:5d8fd17635b262448ab8f99230fe4dac991af1dabdbb92f7a70a6afac8a7e346"}, + {file = "wrapt-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:92a3d214d5e53cb1db8b015f30d544bc9d3f7179a05feb8f16df713cecc2620a"}, + {file = "wrapt-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:89fc28495896097622c3fc238915c79365dd0ede02f9a82ce436b13bd0ab7569"}, + {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875d240fdbdbe9e11f9831901fb8719da0bd4e6131f83aa9f69b96d18fae7504"}, + {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ed16d95fd142e9c72b6c10b06514ad30e846a0d0917ab406186541fe68b451"}, + {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b956061b8db634120b58f668592a772e87e2e78bc1f6a906cfcaa0cc7991c1"}, + {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:daba396199399ccabafbfc509037ac635a6bc18510ad1add8fd16d4739cdd106"}, + {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4d63f4d446e10ad19ed01188d6c1e1bb134cde8c18b0aa2acfd973d41fcc5ada"}, + {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8a5e7cc39a45fc430af1aefc4d77ee6bad72c5bcdb1322cfde852c15192b8bd4"}, + {file = "wrapt-1.17.0-cp312-cp312-win32.whl", hash = "sha256:0a0a1a1ec28b641f2a3a2c35cbe86c00051c04fffcfcc577ffcdd707df3f8635"}, + {file = "wrapt-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c34f6896a01b84bab196f7119770fd8466c8ae3dfa73c59c0bb281e7b588ce7"}, + {file = "wrapt-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:714c12485aa52efbc0fc0ade1e9ab3a70343db82627f90f2ecbc898fdf0bb181"}, + {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da427d311782324a376cacb47c1a4adc43f99fd9d996ffc1b3e8529c4074d393"}, + {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba1739fb38441a27a676f4de4123d3e858e494fac05868b7a281c0a383c098f4"}, + {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e711fc1acc7468463bc084d1b68561e40d1eaa135d8c509a65dd534403d83d7b"}, + {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:140ea00c87fafc42739bd74a94a5a9003f8e72c27c47cd4f61d8e05e6dec8721"}, + {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:73a96fd11d2b2e77d623a7f26e004cc31f131a365add1ce1ce9a19e55a1eef90"}, + {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0b48554952f0f387984da81ccfa73b62e52817a4386d070c75e4db7d43a28c4a"}, + {file = "wrapt-1.17.0-cp313-cp313-win32.whl", hash = "sha256:498fec8da10e3e62edd1e7368f4b24aa362ac0ad931e678332d1b209aec93045"}, + {file = "wrapt-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:fd136bb85f4568fffca995bd3c8d52080b1e5b225dbf1c2b17b66b4c5fa02838"}, + {file = "wrapt-1.17.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:17fcf043d0b4724858f25b8826c36e08f9fb2e475410bece0ec44a22d533da9b"}, + {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4a557d97f12813dc5e18dad9fa765ae44ddd56a672bb5de4825527c847d6379"}, + {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0229b247b0fc7dee0d36176cbb79dbaf2a9eb7ecc50ec3121f40ef443155fb1d"}, + {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8425cfce27b8b20c9b89d77fb50e368d8306a90bf2b6eef2cdf5cd5083adf83f"}, + {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9c900108df470060174108012de06d45f514aa4ec21a191e7ab42988ff42a86c"}, + {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:4e547b447073fc0dbfcbff15154c1be8823d10dab4ad401bdb1575e3fdedff1b"}, + {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:914f66f3b6fc7b915d46c1cc424bc2441841083de01b90f9e81109c9759e43ab"}, + {file = "wrapt-1.17.0-cp313-cp313t-win32.whl", hash = "sha256:a4192b45dff127c7d69b3bdfb4d3e47b64179a0b9900b6351859f3001397dabf"}, + {file = "wrapt-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:4f643df3d4419ea3f856c5c3f40fec1d65ea2e89ec812c83f7767c8730f9827a"}, + {file = "wrapt-1.17.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:69c40d4655e078ede067a7095544bcec5a963566e17503e75a3a3e0fe2803b13"}, + {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f495b6754358979379f84534f8dd7a43ff8cff2558dcdea4a148a6e713a758f"}, + {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:baa7ef4e0886a6f482e00d1d5bcd37c201b383f1d314643dfb0367169f94f04c"}, + {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fc931382e56627ec4acb01e09ce66e5c03c384ca52606111cee50d931a342d"}, + {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8f8909cdb9f1b237786c09a810e24ee5e15ef17019f7cecb207ce205b9b5fcce"}, + {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ad47b095f0bdc5585bced35bd088cbfe4177236c7df9984b3cc46b391cc60627"}, + {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:948a9bd0fb2c5120457b07e59c8d7210cbc8703243225dbd78f4dfc13c8d2d1f"}, + {file = "wrapt-1.17.0-cp38-cp38-win32.whl", hash = "sha256:5ae271862b2142f4bc687bdbfcc942e2473a89999a54231aa1c2c676e28f29ea"}, + {file = "wrapt-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:f335579a1b485c834849e9075191c9898e0731af45705c2ebf70e0cd5d58beed"}, + {file = "wrapt-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d751300b94e35b6016d4b1e7d0e7bbc3b5e1751e2405ef908316c2a9024008a1"}, + {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7264cbb4a18dc4acfd73b63e4bcfec9c9802614572025bdd44d0721983fc1d9c"}, + {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33539c6f5b96cf0b1105a0ff4cf5db9332e773bb521cc804a90e58dc49b10578"}, + {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c30970bdee1cad6a8da2044febd824ef6dc4cc0b19e39af3085c763fdec7de33"}, + {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bc7f729a72b16ee21795a943f85c6244971724819819a41ddbaeb691b2dd85ad"}, + {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:6ff02a91c4fc9b6a94e1c9c20f62ea06a7e375f42fe57587f004d1078ac86ca9"}, + {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2dfb7cff84e72e7bf975b06b4989477873dcf160b2fd89959c629535df53d4e0"}, + {file = "wrapt-1.17.0-cp39-cp39-win32.whl", hash = "sha256:2399408ac33ffd5b200480ee858baa58d77dd30e0dd0cab6a8a9547135f30a88"}, + {file = "wrapt-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:4f763a29ee6a20c529496a20a7bcb16a73de27f5da6a843249c7047daf135977"}, + {file = "wrapt-1.17.0-py3-none-any.whl", hash = "sha256:d2c63b93548eda58abf5188e505ffed0229bf675f7c3090f8e36ad55b8cbc371"}, + {file = "wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801"}, +] + [[package]] name = "xmljson" version = "0.2.1" @@ -4468,4 +4617,4 @@ uwsgi = ["pyuwsgi", "uwsgitop"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<4" -content-hash = "1eff5b3cd0350c0a2b1a619a42ce154cd94ddca4e076aa12ba4cea7c0708051b" +content-hash = "1277d49fedc4e5f2cc6e13f3c65dd78b896dc74f475324206a06de800798a84c" diff --git a/pyproject.toml b/pyproject.toml index 458937545297..06f959c213bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -203,7 +203,7 @@ django-migration-linter = "^5.1.0" setuptools = ">=75.4.0" # Humansignal repo dependencies -label-studio-sdk = {url = "https://github.com/HumanSignal/label-studio-sdk/archive/d8730009801626f6026770ff80515cb175ae2c37.zip"} +label-studio-sdk = {url = "https://github.com/HumanSignal/label-studio-sdk/archive/70fbc90d83effe65b9ba3804a3a1a395310e3a9f.zip"} [tool.poetry.group.test.dependencies] pytest = "7.2.2" From 3050b1de1900c75c84f6891360bfd8c337ea15c9 Mon Sep 17 00:00:00 2001 From: robot-ci-heartex <87703623+robot-ci-heartex@users.noreply.github.com> Date: Wed, 4 Dec 2024 19:16:37 +0000 Subject: [PATCH 8/8] [submodules] Bump HumanSignal/label-studio-sdk version Workflow run: https://github.com/HumanSignal/label-studio/actions/runs/12166670839 --- poetry.lock | 6 +++--- pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6bb73bfe8bb7..aa3797371010 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1939,7 +1939,7 @@ description = "" optional = false python-versions = ">=3.9,<4" files = [ - {file = "70fbc90d83effe65b9ba3804a3a1a395310e3a9f.zip", hash = "sha256:22715fe5009a44d6f0c2fc34db743a877e4b437360e0429a8d4ed1eaea0e72ae"}, + {file = "83ec0f8a270e86ceabe8a8b846d404f1113ebd33.zip", hash = "sha256:76d38c321b8604276815edced9fbb0dfc52806b2b15d6be8027388e44cfb922f"}, ] [package.dependencies] @@ -1963,7 +1963,7 @@ xmljson = "0.2.1" [package.source] type = "url" -url = "https://github.com/HumanSignal/label-studio-sdk/archive/70fbc90d83effe65b9ba3804a3a1a395310e3a9f.zip" +url = "https://github.com/HumanSignal/label-studio-sdk/archive/83ec0f8a270e86ceabe8a8b846d404f1113ebd33.zip" [[package]] name = "launchdarkly-server-sdk" @@ -4617,4 +4617,4 @@ uwsgi = ["pyuwsgi", "uwsgitop"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<4" -content-hash = "1277d49fedc4e5f2cc6e13f3c65dd78b896dc74f475324206a06de800798a84c" +content-hash = "e1c8b40991e5f75e3898d00bcc4542f0f798d227bcf973b99c62431861692cc0" diff --git a/pyproject.toml b/pyproject.toml index 06f959c213bc..7c777bf1e8cc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -203,7 +203,7 @@ django-migration-linter = "^5.1.0" setuptools = ">=75.4.0" # Humansignal repo dependencies -label-studio-sdk = {url = "https://github.com/HumanSignal/label-studio-sdk/archive/70fbc90d83effe65b9ba3804a3a1a395310e3a9f.zip"} +label-studio-sdk = {url = "https://github.com/HumanSignal/label-studio-sdk/archive/83ec0f8a270e86ceabe8a8b846d404f1113ebd33.zip"} [tool.poetry.group.test.dependencies] pytest = "7.2.2"