From d3a0f131aec0aed4776a6c609cbf6425739d3c2a Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Fri, 24 Oct 2025 21:21:48 +0000 Subject: [PATCH 1/5] SDK regeneration --- .mock/definition/__package__.yml | 42 +- .mock/definition/actions.yml | 11 +- .mock/definition/analytics.yml | 97 ++++ .mock/definition/billing.yml | 6 +- .mock/definition/exportStorage/azure.yml | 6 +- .mock/definition/exportStorage/azureSpi.yml | 6 +- .mock/definition/exportStorage/databricks.yml | 6 +- .mock/definition/exportStorage/gcs.yml | 6 +- .mock/definition/exportStorage/gcswif.yml | 6 +- .mock/definition/exportStorage/local.yml | 6 +- .mock/definition/exportStorage/redis.yml | 6 +- .mock/definition/exportStorage/s3.yml | 6 +- .mock/definition/exportStorage/s3S.yml | 6 +- .mock/definition/importStorage/azure.yml | 6 +- .mock/definition/importStorage/azureSpi.yml | 6 +- .mock/definition/importStorage/databricks.yml | 6 +- .mock/definition/importStorage/gcs.yml | 6 +- .mock/definition/importStorage/gcswif.yml | 6 +- .mock/definition/importStorage/local.yml | 6 +- .mock/definition/importStorage/redis.yml | 6 +- .mock/definition/importStorage/s3.yml | 6 +- .mock/definition/importStorage/s3S.yml | 6 +- .mock/openapi/openapi.yaml | 186 +++++++- poetry.lock | 451 ++++++++++-------- reference.md | 144 +++--- src/label_studio_sdk/__init__.py | 2 + src/label_studio_sdk/actions/__init__.py | 2 + .../actions/types/__init__.py | 2 + .../types/actions_list_response_item.py | 3 +- .../actions_list_response_item_permission.py | 5 + .../export_storage/azure/client.py | 24 +- .../export_storage/azure_spi/client.py | 24 +- .../export_storage/databricks/client.py | 24 +- .../export_storage/gcs/client.py | 24 +- .../export_storage/gcswif/client.py | 24 +- .../export_storage/local/client.py | 24 +- .../export_storage/redis/client.py | 24 +- .../export_storage/s3/client.py | 24 +- .../export_storage/s3s/client.py | 24 +- .../import_storage/azure/client.py | 24 +- .../import_storage/azure_spi/client.py | 24 +- .../import_storage/databricks/client.py | 24 +- .../import_storage/gcs/client.py | 24 +- .../import_storage/gcswif/client.py | 24 +- .../import_storage/local/client.py | 24 +- .../import_storage/redis/client.py | 24 +- .../import_storage/s3/client.py | 24 +- .../import_storage/s3s/client.py | 24 +- src/label_studio_sdk/types/activity_log.py | 1 + src/label_studio_sdk/types/billing_flags.py | 2 +- tests/export_storage/test_azure.py | 4 +- tests/export_storage/test_azure_spi.py | 4 +- tests/export_storage/test_databricks.py | 4 +- tests/export_storage/test_gcs.py | 4 +- tests/export_storage/test_gcswif.py | 4 +- tests/export_storage/test_local.py | 4 +- tests/export_storage/test_redis.py | 4 +- tests/export_storage/test_s3.py | 4 +- tests/export_storage/test_s3s.py | 4 +- tests/import_storage/test_azure.py | 4 +- tests/import_storage/test_azure_spi.py | 4 +- tests/import_storage/test_databricks.py | 4 +- tests/import_storage/test_gcs.py | 4 +- tests/import_storage/test_gcswif.py | 4 +- tests/import_storage/test_local.py | 4 +- tests/import_storage/test_redis.py | 4 +- tests/import_storage/test_s3.py | 4 +- tests/import_storage/test_s3s.py | 4 +- tests/test_billing.py | 4 +- 69 files changed, 1036 insertions(+), 534 deletions(-) create mode 100644 .mock/definition/analytics.yml create mode 100644 src/label_studio_sdk/actions/types/actions_list_response_item_permission.py diff --git a/.mock/definition/__package__.yml b/.mock/definition/__package__.yml index 4c8fefa96..e7ecedb7a 100644 --- a/.mock/definition/__package__.yml +++ b/.mock/definition/__package__.yml @@ -146,6 +146,10 @@ types: validation: min: -2147483648 max: 2147483647 + user_session: + type: optional + validation: + maxLength: 8 workspace_owner_id: type: optional docs: Owner id of workspace where action performed @@ -688,6 +692,28 @@ types: started_at: optional source: openapi: openapi/openapi.yaml + AnnotatorPerformance: + docs: |- + Response serializer for annotator performance data. + Returns user info and all performance metrics. + properties: + accepted: integer + assigned: integer + avg_time_seconds: optional + fix_accepted: integer + median_time_seconds: optional + pending: integer + performance_score: optional + rejected: integer + skipped: integer + submitted: integer + time_submitting_seconds: optional + time_updating_seconds: optional + total_time_seconds: optional + updated: integer + user: LseUser + source: + openapi: openapi/openapi.yaml AssignmentSettingsLabelStreamTaskDistribution: discriminated: false docs: >- @@ -1429,6 +1455,7 @@ types: allow_data_credentials: boolean allow_invite_people: boolean allow_invite_project_experts: boolean + allow_nda: boolean allow_organization_webhooks: boolean allow_sso: boolean allow_storage_proxy: boolean @@ -1441,7 +1468,6 @@ types: embed_domains: optional>> embed_enabled: boolean embed_settings: optional> - hide_storage_settings_for_manager: boolean manual_role_management: boolean manual_workspace_management: boolean secure_mode: boolean @@ -6012,6 +6038,20 @@ types: results: list source: openapi: openapi/openapi.yaml + PaginatedAnnotatorPerformanceList: + properties: + count: integer + next: + type: optional + validation: + format: uri + previous: + type: optional + validation: + format: uri + results: list + source: + openapi: openapi/openapi.yaml PaginatedLabelCreateList: properties: count: integer diff --git a/.mock/definition/actions.yml b/.mock/definition/actions.yml index 747504855..e80fe6d09 100644 --- a/.mock/definition/actions.yml +++ b/.mock/definition/actions.yml @@ -12,6 +12,15 @@ types: source: openapi: openapi/openapi.yaml inline: true + ActionsListResponseItemPermission: + discriminated: false + union: + - string + - docs: List of permissions (user needs any all of them) + type: list + source: + openapi: openapi/openapi.yaml + inline: true ActionsListResponseItem: properties: dialog: @@ -23,7 +32,7 @@ types: order: type: optional permission: - type: optional + type: optional title: type: optional source: diff --git a/.mock/definition/analytics.yml b/.mock/definition/analytics.yml new file mode 100644 index 000000000..935f14ecc --- /dev/null +++ b/.mock/definition/analytics.yml @@ -0,0 +1,97 @@ +imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + api_analytics_annotator_performance_list: + path: /api/analytics/annotator-performance/ + method: GET + auth: true + docs: >- + Retrieve performance metrics for all annotators in the active + organization. Returns metrics including submitted, pending, accepted, + rejected annotations, performance scores, and time statistics. Supports + filtering by date range, projects, and specific members. Implements + query-level pagination for optimal performance with large organizations. + source: + openapi: openapi/openapi.yaml + display-name: Get annotator performance metrics + request: + name: ApiAnalyticsAnnotatorPerformanceListRequest + query-parameters: + end: + type: optional + docs: End date for filtering (ISO format) + members: + type: optional + docs: Comma-separated list of user IDs to filter by + ordering: + type: optional + docs: >- + Field to order by. Prefix with - for descending. User fields + (efficient): email, username, first_name, last_name. Metric + fields: assigned, pending, submitted, updated, skipped, + performance_score, accepted, rejected, fix_accepted, + total_time_seconds, avg_time_seconds, median_time_seconds. + Default: email + page: + type: optional + docs: A page number within the paginated result set. + page_size: + type: optional + docs: Number of results to return per page. + projects: + type: optional + docs: Comma-separated list of project IDs to filter by + start: + type: optional + docs: Start date for filtering (ISO format) + response: + docs: Annotator performance metrics + type: root.PaginatedAnnotatorPerformanceList + errors: + - root.NotFoundError + examples: + - response: + body: + count: 123 + next: http://api.example.org/accounts/?page=4 + previous: http://api.example.org/accounts/?page=2 + results: + - accepted: 1 + assigned: 1 + avg_time_seconds: 1.1 + fix_accepted: 1 + median_time_seconds: 1.1 + pending: 1 + performance_score: 1.1 + rejected: 1 + skipped: 1 + submitted: 1 + time_submitting_seconds: 1.1 + time_updating_seconds: 1.1 + total_time_seconds: 1.1 + updated: 1 + user: + active_organization_meta: active_organization_meta + avatar: avatar + id: 1 + initials: initials + last_activity: '2024-01-15T09:30:00Z' + lse_fields: + email_notification_settings: email_notification_settings + invite_expired: invite_expired + invite_expired_at: invite_expired_at + org_membership: + - active: active + organization_id: 1 + role: role + organization_membership: + active: active + organization_id: 1 + role: role + pause: pause + username: username + source: + openapi: openapi/openapi.yaml diff --git a/.mock/definition/billing.yml b/.mock/definition/billing.yml index 6b336f5cc..cc35a479d 100644 --- a/.mock/definition/billing.yml +++ b/.mock/definition/billing.yml @@ -74,6 +74,7 @@ service: allow_data_credentials: true allow_invite_people: true allow_invite_project_experts: true + allow_nda: true allow_organization_webhooks: true allow_sso: false allow_storage_proxy: true @@ -91,7 +92,6 @@ service: public_verify_alg: - RS256 public_verify_key: .... - hide_storage_settings_for_manager: false manual_role_management: false manual_workspace_management: false secure_mode: false @@ -148,6 +148,7 @@ service: allow_data_credentials: true allow_invite_people: true allow_invite_project_experts: true + allow_nda: true allow_organization_webhooks: true allow_sso: true allow_storage_proxy: true @@ -165,7 +166,6 @@ service: public_verify_alg: - RS256 public_verify_key: .... - hide_storage_settings_for_manager: false manual_role_management: false manual_workspace_management: false secure_mode: false @@ -222,6 +222,7 @@ service: allow_data_credentials: false allow_invite_people: true allow_invite_project_experts: true + allow_nda: true allow_organization_webhooks: false allow_sso: true allow_storage_proxy: true @@ -239,7 +240,6 @@ service: public_verify_alg: - RS256 public_verify_key: .... - hide_storage_settings_for_manager: false manual_role_management: true manual_workspace_management: true secure_mode: false diff --git a/.mock/definition/exportStorage/azure.yml b/.mock/definition/exportStorage/azure.yml index 0e26ee5f1..61f76099a 100644 --- a/.mock/definition/exportStorage/azure.yml +++ b/.mock/definition/exportStorage/azure.yml @@ -19,13 +19,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - account_key: account_key account_name: account_name diff --git a/.mock/definition/exportStorage/azureSpi.yml b/.mock/definition/exportStorage/azureSpi.yml index f81682186..e204a1c02 100644 --- a/.mock/definition/exportStorage/azureSpi.yml +++ b/.mock/definition/exportStorage/azureSpi.yml @@ -27,13 +27,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - account_name: account_name can_delete_objects: true diff --git a/.mock/definition/exportStorage/databricks.yml b/.mock/definition/exportStorage/databricks.yml index b02ed8d4b..25f4cfaa8 100644 --- a/.mock/definition/exportStorage/databricks.yml +++ b/.mock/definition/exportStorage/databricks.yml @@ -26,13 +26,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - can_delete_objects: true catalog: catalog diff --git a/.mock/definition/exportStorage/gcs.yml b/.mock/definition/exportStorage/gcs.yml index c00e8b713..f8cf379fe 100644 --- a/.mock/definition/exportStorage/gcs.yml +++ b/.mock/definition/exportStorage/gcs.yml @@ -19,13 +19,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - bucket: bucket can_delete_objects: true diff --git a/.mock/definition/exportStorage/gcswif.yml b/.mock/definition/exportStorage/gcswif.yml index ab3ea4605..9d419f439 100644 --- a/.mock/definition/exportStorage/gcswif.yml +++ b/.mock/definition/exportStorage/gcswif.yml @@ -27,13 +27,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - bucket: bucket can_delete_objects: true diff --git a/.mock/definition/exportStorage/local.yml b/.mock/definition/exportStorage/local.yml index 49b888aed..0a340bd61 100644 --- a/.mock/definition/exportStorage/local.yml +++ b/.mock/definition/exportStorage/local.yml @@ -19,13 +19,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - can_delete_objects: true created_at: '2024-01-15T09:30:00Z' diff --git a/.mock/definition/exportStorage/redis.yml b/.mock/definition/exportStorage/redis.yml index a17299458..c68268935 100644 --- a/.mock/definition/exportStorage/redis.yml +++ b/.mock/definition/exportStorage/redis.yml @@ -19,13 +19,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - can_delete_objects: true created_at: '2024-01-15T09:30:00Z' diff --git a/.mock/definition/exportStorage/s3.yml b/.mock/definition/exportStorage/s3.yml index 964181a38..ec1598392 100644 --- a/.mock/definition/exportStorage/s3.yml +++ b/.mock/definition/exportStorage/s3.yml @@ -19,13 +19,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - aws_access_key_id: aws_access_key_id aws_secret_access_key: aws_secret_access_key diff --git a/.mock/definition/exportStorage/s3S.yml b/.mock/definition/exportStorage/s3S.yml index fab37b8d1..0f882015b 100644 --- a/.mock/definition/exportStorage/s3S.yml +++ b/.mock/definition/exportStorage/s3S.yml @@ -27,13 +27,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - aws_access_key_id: aws_access_key_id aws_secret_access_key: aws_secret_access_key diff --git a/.mock/definition/importStorage/azure.yml b/.mock/definition/importStorage/azure.yml index cadeca972..e915df875 100644 --- a/.mock/definition/importStorage/azure.yml +++ b/.mock/definition/importStorage/azure.yml @@ -19,13 +19,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - account_key: account_key account_name: account_name diff --git a/.mock/definition/importStorage/azureSpi.yml b/.mock/definition/importStorage/azureSpi.yml index 60a57a14f..50d59ae9d 100644 --- a/.mock/definition/importStorage/azureSpi.yml +++ b/.mock/definition/importStorage/azureSpi.yml @@ -27,13 +27,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - account_name: account_name client_id: client_id diff --git a/.mock/definition/importStorage/databricks.yml b/.mock/definition/importStorage/databricks.yml index e08ce65c2..1c73e5759 100644 --- a/.mock/definition/importStorage/databricks.yml +++ b/.mock/definition/importStorage/databricks.yml @@ -26,13 +26,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - catalog: catalog created_at: '2024-01-15T09:30:00Z' diff --git a/.mock/definition/importStorage/gcs.yml b/.mock/definition/importStorage/gcs.yml index bfc71e315..735cb56a0 100644 --- a/.mock/definition/importStorage/gcs.yml +++ b/.mock/definition/importStorage/gcs.yml @@ -19,13 +19,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - bucket: bucket created_at: '2024-01-15T09:30:00Z' diff --git a/.mock/definition/importStorage/gcswif.yml b/.mock/definition/importStorage/gcswif.yml index 81399f634..7c60350f6 100644 --- a/.mock/definition/importStorage/gcswif.yml +++ b/.mock/definition/importStorage/gcswif.yml @@ -27,13 +27,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - bucket: bucket created_at: '2024-01-15T09:30:00Z' diff --git a/.mock/definition/importStorage/local.yml b/.mock/definition/importStorage/local.yml index 0d654969c..274fd3694 100644 --- a/.mock/definition/importStorage/local.yml +++ b/.mock/definition/importStorage/local.yml @@ -19,13 +19,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - created_at: '2024-01-15T09:30:00Z' description: description diff --git a/.mock/definition/importStorage/redis.yml b/.mock/definition/importStorage/redis.yml index 02d5a0e59..b0697a79c 100644 --- a/.mock/definition/importStorage/redis.yml +++ b/.mock/definition/importStorage/redis.yml @@ -19,13 +19,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - created_at: '2024-01-15T09:30:00Z' db: 1 diff --git a/.mock/definition/importStorage/s3.yml b/.mock/definition/importStorage/s3.yml index de67ea85b..9db70e7f4 100644 --- a/.mock/definition/importStorage/s3.yml +++ b/.mock/definition/importStorage/s3.yml @@ -19,13 +19,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - aws_access_key_id: aws_access_key_id aws_secret_access_key: aws_secret_access_key diff --git a/.mock/definition/importStorage/s3S.yml b/.mock/definition/importStorage/s3S.yml index fc8d725a1..e8c3afdce 100644 --- a/.mock/definition/importStorage/s3S.yml +++ b/.mock/definition/importStorage/s3S.yml @@ -27,13 +27,15 @@ service: type: optional docs: Which field to use when ordering the results. project: - type: optional + type: integer docs: Project ID response: docs: '' type: list examples: - - response: + - query-parameters: + project: 1 + response: body: - aws_access_key_id: aws_access_key_id aws_secret_access_key: aws_secret_access_key diff --git a/.mock/openapi/openapi.yaml b/.mock/openapi/openapi.yaml index 7e7f6c402..ff0a9f950 100644 --- a/.mock/openapi/openapi.yaml +++ b/.mock/openapi/openapi.yaml @@ -97,6 +97,64 @@ paths: - public x-fern-sdk-group-name: activity_logs x-fern-sdk-method-name: list + /api/analytics/annotator-performance/: + get: + description: Retrieve performance metrics for all annotators in the active organization. Returns metrics including submitted, pending, accepted, rejected annotations, performance scores, and time statistics. Supports filtering by date range, projects, and specific members. Implements query-level pagination for optimal performance with large organizations. + operationId: api_analytics_annotator_performance_list + parameters: + - description: End date for filtering (ISO format) + in: query + name: end + schema: + format: date-time + type: string + - description: Comma-separated list of user IDs to filter by + in: query + name: members + schema: + type: string + - description: 'Field to order by. Prefix with - for descending. User fields (efficient): email, username, first_name, last_name. Metric fields: assigned, pending, submitted, updated, skipped, performance_score, accepted, rejected, fix_accepted, total_time_seconds, avg_time_seconds, median_time_seconds. Default: email' + in: query + name: ordering + schema: + type: string + - description: A page number within the paginated result set. + in: query + name: page + required: false + schema: + type: integer + - description: Number of results to return per page. + in: query + name: page_size + required: false + schema: + type: integer + - description: Comma-separated list of project IDs to filter by + in: query + name: projects + schema: + type: string + - description: Start date for filtering (ISO format) + in: query + name: start + schema: + format: date-time + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedAnnotatorPerformanceList' + description: Annotator performance metrics + '404': + description: Organization not found + security: + - Token: [] + summary: Get annotator performance metrics + tags: + - Analytics /api/annotation-history/: delete: description: |- @@ -758,7 +816,6 @@ paths: public_verify_alg: - RS256 public_verify_key: '....' - hide_storage_settings_for_manager: false manual_role_management: false manual_workspace_management: false secure_mode: false @@ -828,7 +885,6 @@ paths: public_verify_alg: - RS256 public_verify_key: '....' - hide_storage_settings_for_manager: false manual_role_management: false manual_workspace_management: false secure_mode: false @@ -898,7 +954,6 @@ paths: public_verify_alg: - RS256 public_verify_key: '....' - hide_storage_settings_for_manager: false manual_role_management: true manual_workspace_management: true secure_mode: false @@ -2971,8 +3026,12 @@ paths: title: Order type: integer permission: - title: Permission - type: string + oneOf: + - type: string + - description: List of permissions (user needs any all of them) + items: + type: string + type: array title: title: Title type: string @@ -11775,6 +11834,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -12099,6 +12159,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -12364,6 +12425,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -12654,6 +12716,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -12944,6 +13007,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -13209,6 +13273,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -13467,6 +13532,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -13757,6 +13823,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -14015,6 +14082,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -14280,6 +14348,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -14572,6 +14641,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -14898,6 +14968,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -15184,6 +15255,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -15508,6 +15580,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -15766,6 +15839,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -16032,6 +16106,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -16325,6 +16400,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -16694,6 +16770,7 @@ paths: - description: Project ID in: query name: project + required: true schema: type: integer responses: @@ -18950,6 +19027,10 @@ components: maximum: 2147483647 minimum: -2147483648 type: integer + user_session: + maxLength: 8 + nullable: true + type: string workspace_owner_id: description: Owner id of workspace where action performed maximum: 2147483647 @@ -19764,6 +19845,72 @@ components: required: - annotation type: object + AnnotatorPerformance: + description: |- + Response serializer for annotator performance data. + Returns user info and all performance metrics. + properties: + accepted: + type: integer + assigned: + type: integer + avg_time_seconds: + format: double + nullable: true + type: number + fix_accepted: + type: integer + median_time_seconds: + format: double + nullable: true + type: number + pending: + type: integer + performance_score: + format: double + nullable: true + type: number + rejected: + type: integer + skipped: + type: integer + submitted: + type: integer + time_submitting_seconds: + format: double + nullable: true + type: number + time_updating_seconds: + format: double + nullable: true + type: number + total_time_seconds: + format: double + nullable: true + type: number + updated: + type: integer + user: + allOf: + - $ref: '#/components/schemas/LseUser' + readOnly: true + required: + - accepted + - assigned + - avg_time_seconds + - fix_accepted + - median_time_seconds + - pending + - performance_score + - rejected + - skipped + - submitted + - time_submitting_seconds + - time_updating_seconds + - total_time_seconds + - updated + - user + type: object AssignmentSettings: properties: id: @@ -20728,6 +20875,8 @@ components: type: boolean allow_invite_project_experts: type: boolean + allow_nda: + type: boolean allow_organization_webhooks: type: boolean allow_sso: @@ -20756,8 +20905,6 @@ components: embed_settings: additionalProperties: {} type: object - hide_storage_settings_for_manager: - type: boolean manual_role_management: type: boolean manual_workspace_management: @@ -20777,6 +20924,7 @@ components: - allow_data_credentials - allow_invite_people - allow_invite_project_experts + - allow_nda - allow_organization_webhooks - allow_sso - allow_storage_proxy @@ -20787,7 +20935,6 @@ components: - disable_project_imports - early_adopter - embed_enabled - - hide_storage_settings_for_manager - manual_role_management - manual_workspace_management - secure_mode @@ -27235,6 +27382,29 @@ components: - count - results type: object + PaginatedAnnotatorPerformanceList: + properties: + count: + example: 123 + type: integer + next: + example: http://api.example.org/accounts/?page=4 + format: uri + nullable: true + type: string + previous: + example: http://api.example.org/accounts/?page=2 + format: uri + nullable: true + type: string + results: + items: + $ref: '#/components/schemas/AnnotatorPerformance' + type: array + required: + - count + - results + type: object PaginatedLabelCreateList: properties: count: diff --git a/poetry.lock b/poetry.lock index 8c7dfef09..979e869e7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -44,13 +44,13 @@ files = [ [[package]] name = "argcomplete" -version = "3.6.2" +version = "3.6.3" description = "Bash tab completion for argparse" optional = false python-versions = ">=3.8" files = [ - {file = "argcomplete-3.6.2-py3-none-any.whl", hash = "sha256:65b3133a29ad53fb42c48cf5114752c7ab66c1c38544fdf6460f450c09b42591"}, - {file = "argcomplete-3.6.2.tar.gz", hash = "sha256:d0519b1bc867f5f4f4713c41ad0aba73a4a5f007449716b16f385f2166dc6adf"}, + {file = "argcomplete-3.6.3-py3-none-any.whl", hash = "sha256:f5007b3a600ccac5d25bbce33089211dfd49eab4a7718da3f10e3082525a92ce"}, + {file = "argcomplete-3.6.3.tar.gz", hash = "sha256:62e8ed4fd6a45864acc8235409461b72c9a28ee785a2011cc5eb78318786c89c"}, ] [package.extras] @@ -360,13 +360,13 @@ test = ["pytest (>=6)"] [[package]] name = "faker" -version = "37.11.0" +version = "37.12.0" description = "Faker is a Python package that generates fake data for you." optional = false python-versions = ">=3.9" files = [ - {file = "faker-37.11.0-py3-none-any.whl", hash = "sha256:1508d2da94dfd1e0087b36f386126d84f8583b3de19ac18e392a2831a6676c57"}, - {file = "faker-37.11.0.tar.gz", hash = "sha256:22969803849ba0618be8eee2dd01d0d9e2cd3b75e6ff1a291fa9abcdb34da5e6"}, + {file = "faker-37.12.0-py3-none-any.whl", hash = "sha256:afe7ccc038da92f2fbae30d8e16d19d91e92e242f8401ce9caf44de892bab4c4"}, + {file = "faker-37.12.0.tar.gz", hash = "sha256:7505e59a7e02fa9010f06c3e1e92f8250d4cfbb30632296140c2d6dbef09b0fa"}, ] [package.dependencies] @@ -1713,126 +1713,126 @@ typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""} [[package]] name = "regex" -version = "2025.9.18" +version = "2025.10.23" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.9" files = [ - {file = "regex-2025.9.18-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:12296202480c201c98a84aecc4d210592b2f55e200a1d193235c4db92b9f6788"}, - {file = "regex-2025.9.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:220381f1464a581f2ea988f2220cf2a67927adcef107d47d6897ba5a2f6d51a4"}, - {file = "regex-2025.9.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:87f681bfca84ebd265278b5daa1dcb57f4db315da3b5d044add7c30c10442e61"}, - {file = "regex-2025.9.18-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:34d674cbba70c9398074c8a1fcc1a79739d65d1105de2a3c695e2b05ea728251"}, - {file = "regex-2025.9.18-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:385c9b769655cb65ea40b6eea6ff763cbb6d69b3ffef0b0db8208e1833d4e746"}, - {file = "regex-2025.9.18-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8900b3208e022570ae34328712bef6696de0804c122933414014bae791437ab2"}, - {file = "regex-2025.9.18-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c204e93bf32cd7a77151d44b05eb36f469d0898e3fba141c026a26b79d9914a0"}, - {file = "regex-2025.9.18-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3acc471d1dd7e5ff82e6cacb3b286750decd949ecd4ae258696d04f019817ef8"}, - {file = "regex-2025.9.18-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6479d5555122433728760e5f29edb4c2b79655a8deb681a141beb5c8a025baea"}, - {file = "regex-2025.9.18-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:431bd2a8726b000eb6f12429c9b438a24062a535d06783a93d2bcbad3698f8a8"}, - {file = "regex-2025.9.18-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0cc3521060162d02bd36927e20690129200e5ac9d2c6d32b70368870b122db25"}, - {file = "regex-2025.9.18-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a021217b01be2d51632ce056d7a837d3fa37c543ede36e39d14063176a26ae29"}, - {file = "regex-2025.9.18-cp310-cp310-win32.whl", hash = "sha256:4a12a06c268a629cb67cc1d009b7bb0be43e289d00d5111f86a2efd3b1949444"}, - {file = "regex-2025.9.18-cp310-cp310-win_amd64.whl", hash = "sha256:47acd811589301298c49db2c56bde4f9308d6396da92daf99cba781fa74aa450"}, - {file = "regex-2025.9.18-cp310-cp310-win_arm64.whl", hash = "sha256:16bd2944e77522275e5ee36f867e19995bcaa533dcb516753a26726ac7285442"}, - {file = "regex-2025.9.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:51076980cd08cd13c88eb7365427ae27f0d94e7cebe9ceb2bb9ffdae8fc4d82a"}, - {file = "regex-2025.9.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:828446870bd7dee4e0cbeed767f07961aa07f0ea3129f38b3ccecebc9742e0b8"}, - {file = "regex-2025.9.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c28821d5637866479ec4cc23b8c990f5bc6dd24e5e4384ba4a11d38a526e1414"}, - {file = "regex-2025.9.18-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:726177ade8e481db669e76bf99de0b278783be8acd11cef71165327abd1f170a"}, - {file = "regex-2025.9.18-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f5cca697da89b9f8ea44115ce3130f6c54c22f541943ac8e9900461edc2b8bd4"}, - {file = "regex-2025.9.18-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:dfbde38f38004703c35666a1e1c088b778e35d55348da2b7b278914491698d6a"}, - {file = "regex-2025.9.18-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f2f422214a03fab16bfa495cfec72bee4aaa5731843b771860a471282f1bf74f"}, - {file = "regex-2025.9.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a295916890f4df0902e4286bc7223ee7f9e925daa6dcdec4192364255b70561a"}, - {file = "regex-2025.9.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:5db95ff632dbabc8c38c4e82bf545ab78d902e81160e6e455598014f0abe66b9"}, - {file = "regex-2025.9.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb967eb441b0f15ae610b7069bdb760b929f267efbf522e814bbbfffdf125ce2"}, - {file = "regex-2025.9.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f04d2f20da4053d96c08f7fde6e1419b7ec9dbcee89c96e3d731fca77f411b95"}, - {file = "regex-2025.9.18-cp311-cp311-win32.whl", hash = "sha256:895197241fccf18c0cea7550c80e75f185b8bd55b6924fcae269a1a92c614a07"}, - {file = "regex-2025.9.18-cp311-cp311-win_amd64.whl", hash = "sha256:7e2b414deae99166e22c005e154a5513ac31493db178d8aec92b3269c9cce8c9"}, - {file = "regex-2025.9.18-cp311-cp311-win_arm64.whl", hash = "sha256:fb137ec7c5c54f34a25ff9b31f6b7b0c2757be80176435bf367111e3f71d72df"}, - {file = "regex-2025.9.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:436e1b31d7efd4dcd52091d076482031c611dde58bf9c46ca6d0a26e33053a7e"}, - {file = "regex-2025.9.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c190af81e5576b9c5fdc708f781a52ff20f8b96386c6e2e0557a78402b029f4a"}, - {file = "regex-2025.9.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e4121f1ce2b2b5eec4b397cc1b277686e577e658d8f5870b7eb2d726bd2300ab"}, - {file = "regex-2025.9.18-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:300e25dbbf8299d87205e821a201057f2ef9aa3deb29caa01cd2cac669e508d5"}, - {file = "regex-2025.9.18-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7b47fcf9f5316c0bdaf449e879407e1b9937a23c3b369135ca94ebc8d74b1742"}, - {file = "regex-2025.9.18-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:57a161bd3acaa4b513220b49949b07e252165e6b6dc910ee7617a37ff4f5b425"}, - {file = "regex-2025.9.18-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f130c3a7845ba42de42f380fff3c8aebe89a810747d91bcf56d40a069f15352"}, - {file = "regex-2025.9.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f96fa342b6f54dcba928dd452e8d8cb9f0d63e711d1721cd765bb9f73bb048d"}, - {file = "regex-2025.9.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f0d676522d68c207828dcd01fb6f214f63f238c283d9f01d85fc664c7c85b56"}, - {file = "regex-2025.9.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:40532bff8a1a0621e7903ae57fce88feb2e8a9a9116d341701302c9302aef06e"}, - {file = "regex-2025.9.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:039f11b618ce8d71a1c364fdee37da1012f5a3e79b1b2819a9f389cd82fd6282"}, - {file = "regex-2025.9.18-cp312-cp312-win32.whl", hash = "sha256:e1dd06f981eb226edf87c55d523131ade7285137fbde837c34dc9d1bf309f459"}, - {file = "regex-2025.9.18-cp312-cp312-win_amd64.whl", hash = "sha256:3d86b5247bf25fa3715e385aa9ff272c307e0636ce0c9595f64568b41f0a9c77"}, - {file = "regex-2025.9.18-cp312-cp312-win_arm64.whl", hash = "sha256:032720248cbeeae6444c269b78cb15664458b7bb9ed02401d3da59fe4d68c3a5"}, - {file = "regex-2025.9.18-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2a40f929cd907c7e8ac7566ac76225a77701a6221bca937bdb70d56cb61f57b2"}, - {file = "regex-2025.9.18-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c90471671c2cdf914e58b6af62420ea9ecd06d1554d7474d50133ff26ae88feb"}, - {file = "regex-2025.9.18-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a351aff9e07a2dabb5022ead6380cff17a4f10e4feb15f9100ee56c4d6d06af"}, - {file = "regex-2025.9.18-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bc4b8e9d16e20ddfe16430c23468a8707ccad3365b06d4536142e71823f3ca29"}, - {file = "regex-2025.9.18-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4b8cdbddf2db1c5e80338ba2daa3cfa3dec73a46fff2a7dda087c8efbf12d62f"}, - {file = "regex-2025.9.18-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a276937d9d75085b2c91fb48244349c6954f05ee97bba0963ce24a9d915b8b68"}, - {file = "regex-2025.9.18-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:92a8e375ccdc1256401c90e9dc02b8642894443d549ff5e25e36d7cf8a80c783"}, - {file = "regex-2025.9.18-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0dc6893b1f502d73037cf807a321cdc9be29ef3d6219f7970f842475873712ac"}, - {file = "regex-2025.9.18-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a61e85bfc63d232ac14b015af1261f826260c8deb19401c0597dbb87a864361e"}, - {file = "regex-2025.9.18-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:1ef86a9ebc53f379d921fb9a7e42b92059ad3ee800fcd9e0fe6181090e9f6c23"}, - {file = "regex-2025.9.18-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d3bc882119764ba3a119fbf2bd4f1b47bc56c1da5d42df4ed54ae1e8e66fdf8f"}, - {file = "regex-2025.9.18-cp313-cp313-win32.whl", hash = "sha256:3810a65675845c3bdfa58c3c7d88624356dd6ee2fc186628295e0969005f928d"}, - {file = "regex-2025.9.18-cp313-cp313-win_amd64.whl", hash = "sha256:16eaf74b3c4180ede88f620f299e474913ab6924d5c4b89b3833bc2345d83b3d"}, - {file = "regex-2025.9.18-cp313-cp313-win_arm64.whl", hash = "sha256:4dc98ba7dd66bd1261927a9f49bd5ee2bcb3660f7962f1ec02617280fc00f5eb"}, - {file = "regex-2025.9.18-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:fe5d50572bc885a0a799410a717c42b1a6b50e2f45872e2b40f4f288f9bce8a2"}, - {file = "regex-2025.9.18-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b9d9a2d6cda6621551ca8cf7a06f103adf72831153f3c0d982386110870c4d3"}, - {file = "regex-2025.9.18-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:13202e4c4ac0ef9a317fff817674b293c8f7e8c68d3190377d8d8b749f566e12"}, - {file = "regex-2025.9.18-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:874ff523b0fecffb090f80ae53dc93538f8db954c8bb5505f05b7787ab3402a0"}, - {file = "regex-2025.9.18-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d13ab0490128f2bb45d596f754148cd750411afc97e813e4b3a61cf278a23bb6"}, - {file = "regex-2025.9.18-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:05440bc172bc4b4b37fb9667e796597419404dbba62e171e1f826d7d2a9ebcef"}, - {file = "regex-2025.9.18-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5514b8e4031fdfaa3d27e92c75719cbe7f379e28cacd939807289bce76d0e35a"}, - {file = "regex-2025.9.18-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:65d3c38c39efce73e0d9dc019697b39903ba25b1ad45ebbd730d2cf32741f40d"}, - {file = "regex-2025.9.18-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:ae77e447ebc144d5a26d50055c6ddba1d6ad4a865a560ec7200b8b06bc529368"}, - {file = "regex-2025.9.18-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e3ef8cf53dc8df49d7e28a356cf824e3623764e9833348b655cfed4524ab8a90"}, - {file = "regex-2025.9.18-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9feb29817df349c976da9a0debf775c5c33fc1c8ad7b9f025825da99374770b7"}, - {file = "regex-2025.9.18-cp313-cp313t-win32.whl", hash = "sha256:168be0d2f9b9d13076940b1ed774f98595b4e3c7fc54584bba81b3cc4181742e"}, - {file = "regex-2025.9.18-cp313-cp313t-win_amd64.whl", hash = "sha256:d59ecf3bb549e491c8104fea7313f3563c7b048e01287db0a90485734a70a730"}, - {file = "regex-2025.9.18-cp313-cp313t-win_arm64.whl", hash = "sha256:dbef80defe9fb21310948a2595420b36c6d641d9bea4c991175829b2cc4bc06a"}, - {file = "regex-2025.9.18-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:c6db75b51acf277997f3adcd0ad89045d856190d13359f15ab5dda21581d9129"}, - {file = "regex-2025.9.18-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8f9698b6f6895d6db810e0bda5364f9ceb9e5b11328700a90cae573574f61eea"}, - {file = "regex-2025.9.18-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:29cd86aa7cb13a37d0f0d7c21d8d949fe402ffa0ea697e635afedd97ab4b69f1"}, - {file = "regex-2025.9.18-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7c9f285a071ee55cd9583ba24dde006e53e17780bb309baa8e4289cd472bcc47"}, - {file = "regex-2025.9.18-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5adf266f730431e3be9021d3e5b8d5ee65e563fec2883ea8093944d21863b379"}, - {file = "regex-2025.9.18-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1137cabc0f38807de79e28d3f6e3e3f2cc8cfb26bead754d02e6d1de5f679203"}, - {file = "regex-2025.9.18-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7cc9e5525cada99699ca9223cce2d52e88c52a3d2a0e842bd53de5497c604164"}, - {file = "regex-2025.9.18-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bbb9246568f72dce29bcd433517c2be22c7791784b223a810225af3b50d1aafb"}, - {file = "regex-2025.9.18-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:6a52219a93dd3d92c675383efff6ae18c982e2d7651c792b1e6d121055808743"}, - {file = "regex-2025.9.18-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:ae9b3840c5bd456780e3ddf2f737ab55a79b790f6409182012718a35c6d43282"}, - {file = "regex-2025.9.18-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d488c236ac497c46a5ac2005a952c1a0e22a07be9f10c3e735bc7d1209a34773"}, - {file = "regex-2025.9.18-cp314-cp314-win32.whl", hash = "sha256:0c3506682ea19beefe627a38872d8da65cc01ffa25ed3f2e422dffa1474f0788"}, - {file = "regex-2025.9.18-cp314-cp314-win_amd64.whl", hash = "sha256:57929d0f92bebb2d1a83af372cd0ffba2263f13f376e19b1e4fa32aec4efddc3"}, - {file = "regex-2025.9.18-cp314-cp314-win_arm64.whl", hash = "sha256:6a4b44df31d34fa51aa5c995d3aa3c999cec4d69b9bd414a8be51984d859f06d"}, - {file = "regex-2025.9.18-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:b176326bcd544b5e9b17d6943f807697c0cb7351f6cfb45bf5637c95ff7e6306"}, - {file = "regex-2025.9.18-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:0ffd9e230b826b15b369391bec167baed57c7ce39efc35835448618860995946"}, - {file = "regex-2025.9.18-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ec46332c41add73f2b57e2f5b642f991f6b15e50e9f86285e08ffe3a512ac39f"}, - {file = "regex-2025.9.18-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b80fa342ed1ea095168a3f116637bd1030d39c9ff38dc04e54ef7c521e01fc95"}, - {file = "regex-2025.9.18-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f4d97071c0ba40f0cf2a93ed76e660654c399a0a04ab7d85472239460f3da84b"}, - {file = "regex-2025.9.18-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0ac936537ad87cef9e0e66c5144484206c1354224ee811ab1519a32373e411f3"}, - {file = "regex-2025.9.18-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dec57f96d4def58c422d212d414efe28218d58537b5445cf0c33afb1b4768571"}, - {file = "regex-2025.9.18-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:48317233294648bf7cd068857f248e3a57222259a5304d32c7552e2284a1b2ad"}, - {file = "regex-2025.9.18-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:274687e62ea3cf54846a9b25fc48a04459de50af30a7bd0b61a9e38015983494"}, - {file = "regex-2025.9.18-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:a78722c86a3e7e6aadf9579e3b0ad78d955f2d1f1a8ca4f67d7ca258e8719d4b"}, - {file = "regex-2025.9.18-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:06104cd203cdef3ade989a1c45b6215bf42f8b9dd705ecc220c173233f7cba41"}, - {file = "regex-2025.9.18-cp314-cp314t-win32.whl", hash = "sha256:2e1eddc06eeaffd249c0adb6fafc19e2118e6308c60df9db27919e96b5656096"}, - {file = "regex-2025.9.18-cp314-cp314t-win_amd64.whl", hash = "sha256:8620d247fb8c0683ade51217b459cb4a1081c0405a3072235ba43a40d355c09a"}, - {file = "regex-2025.9.18-cp314-cp314t-win_arm64.whl", hash = "sha256:b7531a8ef61de2c647cdf68b3229b071e46ec326b3138b2180acb4275f470b01"}, - {file = "regex-2025.9.18-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3dbcfcaa18e9480669030d07371713c10b4f1a41f791ffa5cb1a99f24e777f40"}, - {file = "regex-2025.9.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1e85f73ef7095f0380208269055ae20524bfde3f27c5384126ddccf20382a638"}, - {file = "regex-2025.9.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9098e29b3ea4ffffeade423f6779665e2a4f8db64e699c0ed737ef0db6ba7b12"}, - {file = "regex-2025.9.18-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90b6b7a2d0f45b7ecaaee1aec6b362184d6596ba2092dd583ffba1b78dd0231c"}, - {file = "regex-2025.9.18-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c81b892af4a38286101502eae7aec69f7cd749a893d9987a92776954f3943408"}, - {file = "regex-2025.9.18-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3b524d010973f2e1929aeb635418d468d869a5f77b52084d9f74c272189c251d"}, - {file = "regex-2025.9.18-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6b498437c026a3d5d0be0020023ff76d70ae4d77118e92f6f26c9d0423452446"}, - {file = "regex-2025.9.18-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0716e4d6e58853d83f6563f3cf25c281ff46cf7107e5f11879e32cb0b59797d9"}, - {file = "regex-2025.9.18-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:065b6956749379d41db2625f880b637d4acc14c0a4de0d25d609a62850e96d36"}, - {file = "regex-2025.9.18-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d4a691494439287c08ddb9b5793da605ee80299dd31e95fa3f323fac3c33d9d4"}, - {file = "regex-2025.9.18-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ef8d10cc0989565bcbe45fb4439f044594d5c2b8919d3d229ea2c4238f1d55b0"}, - {file = "regex-2025.9.18-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4baeb1b16735ac969a7eeecc216f1f8b7caf60431f38a2671ae601f716a32d25"}, - {file = "regex-2025.9.18-cp39-cp39-win32.whl", hash = "sha256:8e5f41ad24a1e0b5dfcf4c4e5d9f5bd54c895feb5708dd0c1d0d35693b24d478"}, - {file = "regex-2025.9.18-cp39-cp39-win_amd64.whl", hash = "sha256:50e8290707f2fb8e314ab3831e594da71e062f1d623b05266f8cfe4db4949afd"}, - {file = "regex-2025.9.18-cp39-cp39-win_arm64.whl", hash = "sha256:039a9d7195fd88c943d7c777d4941e8ef736731947becce773c31a1009cb3c35"}, - {file = "regex-2025.9.18.tar.gz", hash = "sha256:c5ba23274c61c6fef447ba6a39333297d0c247f53059dba0bca415cac511edc4"}, + {file = "regex-2025.10.23-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:17bbcde374bef1c5fad9b131f0e28a6a24856dd90368d8c0201e2b5a69533daa"}, + {file = "regex-2025.10.23-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b4e10434279cc8567f99ca6e018e9025d14f2fded2a603380b6be2090f476426"}, + {file = "regex-2025.10.23-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c9bb421cbe7012c744a5a56cf4d6c80829c72edb1a2991677299c988d6339c8"}, + {file = "regex-2025.10.23-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:275cd1c2ed8c4a78ebfa489618d7aee762e8b4732da73573c3e38236ec5f65de"}, + {file = "regex-2025.10.23-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7b426ae7952f3dc1e73a86056d520bd4e5f021397484a6835902fc5648bcacce"}, + {file = "regex-2025.10.23-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c5cdaf5b6d37c7da1967dbe729d819461aab6a98a072feef65bbcff0a6e60649"}, + {file = "regex-2025.10.23-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3bfeff0b08f296ab28b4332a7e03ca31c437ee78b541ebc874bbf540e5932f8d"}, + {file = "regex-2025.10.23-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5f97236a67307b775f30a74ef722b64b38b7ab7ba3bb4a2508518a5de545459c"}, + {file = "regex-2025.10.23-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:be19e7de499940cd72475fb8e46ab2ecb1cf5906bebdd18a89f9329afb1df82f"}, + {file = "regex-2025.10.23-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:883df76ee42d9ecb82b37ff8d01caea5895b3f49630a64d21111078bbf8ef64c"}, + {file = "regex-2025.10.23-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2e9117d1d35fc2addae6281019ecc70dc21c30014b0004f657558b91c6a8f1a7"}, + {file = "regex-2025.10.23-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0ff1307f531a5d8cf5c20ea517254551ff0a8dc722193aab66c656c5a900ea68"}, + {file = "regex-2025.10.23-cp310-cp310-win32.whl", hash = "sha256:7888475787cbfee4a7cd32998eeffe9a28129fa44ae0f691b96cb3939183ef41"}, + {file = "regex-2025.10.23-cp310-cp310-win_amd64.whl", hash = "sha256:ec41a905908496ce4906dab20fb103c814558db1d69afc12c2f384549c17936a"}, + {file = "regex-2025.10.23-cp310-cp310-win_arm64.whl", hash = "sha256:b2b7f19a764d5e966d5a62bf2c28a8b4093cc864c6734510bdb4aeb840aec5e6"}, + {file = "regex-2025.10.23-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6c531155bf9179345e85032052a1e5fe1a696a6abf9cea54b97e8baefff970fd"}, + {file = "regex-2025.10.23-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:912e9df4e89d383681268d38ad8f5780d7cccd94ba0e9aa09ca7ab7ab4f8e7eb"}, + {file = "regex-2025.10.23-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f375c61bfc3138b13e762fe0ae76e3bdca92497816936534a0177201666f44f"}, + {file = "regex-2025.10.23-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e248cc9446081119128ed002a3801f8031e0c219b5d3c64d3cc627da29ac0a33"}, + {file = "regex-2025.10.23-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b52bf9282fdf401e4f4e721f0f61fc4b159b1307244517789702407dd74e38ca"}, + {file = "regex-2025.10.23-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5c084889ab2c59765a0d5ac602fd1c3c244f9b3fcc9a65fdc7ba6b74c5287490"}, + {file = "regex-2025.10.23-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d80e8eb79009bdb0936658c44ca06e2fbbca67792013e3818eea3f5f228971c2"}, + {file = "regex-2025.10.23-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b6f259118ba87b814a8ec475380aee5f5ae97a75852a3507cf31d055b01b5b40"}, + {file = "regex-2025.10.23-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9b8c72a242683dcc72d37595c4f1278dfd7642b769e46700a8df11eab19dfd82"}, + {file = "regex-2025.10.23-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a8d7b7a0a3df9952f9965342159e0c1f05384c0f056a47ce8b61034f8cecbe83"}, + {file = "regex-2025.10.23-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:413bfea20a484c524858125e92b9ce6ffdd0a4b97d4ff96b5859aa119b0f1bdd"}, + {file = "regex-2025.10.23-cp311-cp311-win32.whl", hash = "sha256:f76deef1f1019a17dad98f408b8f7afc4bd007cbe835ae77b737e8c7f19ae575"}, + {file = "regex-2025.10.23-cp311-cp311-win_amd64.whl", hash = "sha256:59bba9f7125536f23fdab5deeea08da0c287a64c1d3acc1c7e99515809824de8"}, + {file = "regex-2025.10.23-cp311-cp311-win_arm64.whl", hash = "sha256:b103a752b6f1632ca420225718d6ed83f6a6ced3016dd0a4ab9a6825312de566"}, + {file = "regex-2025.10.23-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7a44d9c00f7a0a02d3b777429281376370f3d13d2c75ae74eb94e11ebcf4a7fc"}, + {file = "regex-2025.10.23-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b83601f84fde939ae3478bb32a3aef36f61b58c3208d825c7e8ce1a735f143f2"}, + {file = "regex-2025.10.23-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ec13647907bb9d15fd192bbfe89ff06612e098a5709e7d6ecabbdd8f7908fc45"}, + {file = "regex-2025.10.23-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78d76dd2957d62501084e7012ddafc5fcd406dd982b7a9ca1ea76e8eaaf73e7e"}, + {file = "regex-2025.10.23-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8668e5f067e31a47699ebb354f43aeb9c0ef136f915bd864243098524482ac43"}, + {file = "regex-2025.10.23-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a32433fe3deb4b2d8eda88790d2808fed0dc097e84f5e683b4cd4f42edef6cca"}, + {file = "regex-2025.10.23-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d97d73818c642c938db14c0668167f8d39520ca9d983604575ade3fda193afcc"}, + {file = "regex-2025.10.23-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bca7feecc72ee33579e9f6ddf8babbe473045717a0e7dbc347099530f96e8b9a"}, + {file = "regex-2025.10.23-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7e24af51e907d7457cc4a72691ec458320b9ae67dc492f63209f01eecb09de32"}, + {file = "regex-2025.10.23-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d10bcde58bbdf18146f3a69ec46dd03233b94a4a5632af97aa5378da3a47d288"}, + {file = "regex-2025.10.23-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:44383bc0c933388516c2692c9a7503e1f4a67e982f20b9a29d2fb70c6494f147"}, + {file = "regex-2025.10.23-cp312-cp312-win32.whl", hash = "sha256:6040a86f95438a0114bba16e51dfe27f1bc004fd29fe725f54a586f6d522b079"}, + {file = "regex-2025.10.23-cp312-cp312-win_amd64.whl", hash = "sha256:436b4c4352fe0762e3bfa34a5567079baa2ef22aa9c37cf4d128979ccfcad842"}, + {file = "regex-2025.10.23-cp312-cp312-win_arm64.whl", hash = "sha256:f4b1b1991617055b46aff6f6db24888c1f05f4db9801349d23f09ed0714a9335"}, + {file = "regex-2025.10.23-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:b7690f95404a1293923a296981fd943cca12c31a41af9c21ba3edd06398fc193"}, + {file = "regex-2025.10.23-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1a32d77aeaea58a13230100dd8797ac1a84c457f3af2fdf0d81ea689d5a9105b"}, + {file = "regex-2025.10.23-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b24b29402f264f70a3c81f45974323b41764ff7159655360543b7cabb73e7d2f"}, + {file = "regex-2025.10.23-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:563824a08c7c03d96856d84b46fdb3bbb7cfbdf79da7ef68725cda2ce169c72a"}, + {file = "regex-2025.10.23-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a0ec8bdd88d2e2659c3518087ee34b37e20bd169419ffead4240a7004e8ed03b"}, + {file = "regex-2025.10.23-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b577601bfe1d33913fcd9276d7607bbac827c4798d9e14d04bf37d417a6c41cb"}, + {file = "regex-2025.10.23-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c9f2c68ac6cb3de94eea08a437a75eaa2bd33f9e97c84836ca0b610a5804368"}, + {file = "regex-2025.10.23-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:89f8b9ea3830c79468e26b0e21c3585f69f105157c2154a36f6b7839f8afb351"}, + {file = "regex-2025.10.23-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:98fd84c4e4ea185b3bb5bf065261ab45867d8875032f358a435647285c722673"}, + {file = "regex-2025.10.23-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:1e11d3e5887b8b096f96b4154dfb902f29c723a9556639586cd140e77e28b313"}, + {file = "regex-2025.10.23-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f13450328a6634348d47a88367e06b64c9d84980ef6a748f717b13f8ce64e87"}, + {file = "regex-2025.10.23-cp313-cp313-win32.whl", hash = "sha256:37be9296598a30c6a20236248cb8b2c07ffd54d095b75d3a2a2ee5babdc51df1"}, + {file = "regex-2025.10.23-cp313-cp313-win_amd64.whl", hash = "sha256:ea7a3c283ce0f06fe789365841e9174ba05f8db16e2fd6ae00a02df9572c04c0"}, + {file = "regex-2025.10.23-cp313-cp313-win_arm64.whl", hash = "sha256:d9a4953575f300a7bab71afa4cd4ac061c7697c89590a2902b536783eeb49a4f"}, + {file = "regex-2025.10.23-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:7d6606524fa77b3912c9ef52a42ef63c6cfbfc1077e9dc6296cd5da0da286044"}, + {file = "regex-2025.10.23-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c037aadf4d64bdc38af7db3dbd34877a057ce6524eefcb2914d6d41c56f968cc"}, + {file = "regex-2025.10.23-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:99018c331fb2529084a0c9b4c713dfa49fafb47c7712422e49467c13a636c656"}, + {file = "regex-2025.10.23-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fd8aba965604d70306eb90a35528f776e59112a7114a5162824d43b76fa27f58"}, + {file = "regex-2025.10.23-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:238e67264b4013e74136c49f883734f68656adf8257bfa13b515626b31b20f8e"}, + {file = "regex-2025.10.23-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b2eb48bd9848d66fd04826382f5e8491ae633de3233a3d64d58ceb4ecfa2113a"}, + {file = "regex-2025.10.23-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d36591ce06d047d0c0fe2fc5f14bfbd5b4525d08a7b6a279379085e13f0e3d0e"}, + {file = "regex-2025.10.23-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b5d4ece8628d6e364302006366cea3ee887db397faebacc5dacf8ef19e064cf8"}, + {file = "regex-2025.10.23-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:39a7e8083959cb1c4ff74e483eecb5a65d3b3e1d821b256e54baf61782c906c6"}, + {file = "regex-2025.10.23-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:842d449a8fefe546f311656cf8c0d6729b08c09a185f1cad94c756210286d6a8"}, + {file = "regex-2025.10.23-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d614986dc68506be8f00474f4f6960e03e4ca9883f7df47744800e7d7c08a494"}, + {file = "regex-2025.10.23-cp313-cp313t-win32.whl", hash = "sha256:a5b7a26b51a9df473ec16a1934d117443a775ceb7b39b78670b2e21893c330c9"}, + {file = "regex-2025.10.23-cp313-cp313t-win_amd64.whl", hash = "sha256:ce81c5544a5453f61cb6f548ed358cfb111e3b23f3cd42d250a4077a6be2a7b6"}, + {file = "regex-2025.10.23-cp313-cp313t-win_arm64.whl", hash = "sha256:e9bf7f6699f490e4e43c44757aa179dab24d1960999c84ab5c3d5377714ed473"}, + {file = "regex-2025.10.23-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:5b5cb5b6344c4c4c24b2dc87b0bfee78202b07ef7633385df70da7fcf6f7cec6"}, + {file = "regex-2025.10.23-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:a6ce7973384c37bdf0f371a843f95a6e6f4e1489e10e0cf57330198df72959c5"}, + {file = "regex-2025.10.23-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2ee3663f2c334959016b56e3bd0dd187cbc73f948e3a3af14c3caaa0c3035d10"}, + {file = "regex-2025.10.23-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2003cc82a579107e70d013482acce8ba773293f2db534fb532738395c557ff34"}, + {file = "regex-2025.10.23-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:182c452279365a93a9f45874f7f191ec1c51e1f1eb41bf2b16563f1a40c1da3a"}, + {file = "regex-2025.10.23-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b1249e9ff581c5b658c8f0437f883b01f1edcf424a16388591e7c05e5e9e8b0c"}, + {file = "regex-2025.10.23-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b841698f93db3ccc36caa1900d2a3be281d9539b822dc012f08fc80b46a3224"}, + {file = "regex-2025.10.23-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:956d89e0c92d471e8f7eee73f73fdff5ed345886378c45a43175a77538a1ffe4"}, + {file = "regex-2025.10.23-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5c259cb363299a0d90d63b5c0d7568ee98419861618a95ee9d91a41cb9954462"}, + {file = "regex-2025.10.23-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:185d2b18c062820b3a40d8fefa223a83f10b20a674bf6e8c4a432e8dfd844627"}, + {file = "regex-2025.10.23-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:281d87fa790049c2b7c1b4253121edd80b392b19b5a3d28dc2a77579cb2a58ec"}, + {file = "regex-2025.10.23-cp314-cp314-win32.whl", hash = "sha256:63b81eef3656072e4ca87c58084c7a9c2b81d41a300b157be635a8a675aacfb8"}, + {file = "regex-2025.10.23-cp314-cp314-win_amd64.whl", hash = "sha256:0967c5b86f274800a34a4ed862dfab56928144d03cb18821c5153f8777947796"}, + {file = "regex-2025.10.23-cp314-cp314-win_arm64.whl", hash = "sha256:c70dfe58b0a00b36aa04cdb0f798bf3e0adc31747641f69e191109fd8572c9a9"}, + {file = "regex-2025.10.23-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:1f5799ea1787aa6de6c150377d11afad39a38afd033f0c5247aecb997978c422"}, + {file = "regex-2025.10.23-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:a9639ab7540cfea45ef57d16dcbea2e22de351998d614c3ad2f9778fa3bdd788"}, + {file = "regex-2025.10.23-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:08f52122c352eb44c3421dab78b9b73a8a77a282cc8314ae576fcaa92b780d10"}, + {file = "regex-2025.10.23-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ebf1baebef1c4088ad5a5623decec6b52950f0e4d7a0ae4d48f0a99f8c9cb7d7"}, + {file = "regex-2025.10.23-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:16b0f1c2e2d566c562d5c384c2b492646be0a19798532fdc1fdedacc66e3223f"}, + {file = "regex-2025.10.23-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f7ada5d9dceafaab92646aa00c10a9efd9b09942dd9b0d7c5a4b73db92cc7e61"}, + {file = "regex-2025.10.23-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a36b4005770044bf08edecc798f0e41a75795b9e7c9c12fe29da8d792ef870c"}, + {file = "regex-2025.10.23-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:af7b2661dcc032da1fae82069b5ebf2ac1dfcd5359ef8b35e1367bfc92181432"}, + {file = "regex-2025.10.23-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:1cb976810ac1416a67562c2e5ba0accf6f928932320fef302e08100ed681b38e"}, + {file = "regex-2025.10.23-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:1a56a54be3897d62f54290190fbcd754bff6932934529fbf5b29933da28fcd43"}, + {file = "regex-2025.10.23-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8f3e6d202fb52c2153f532043bbcf618fd177df47b0b306741eb9b60ba96edc3"}, + {file = "regex-2025.10.23-cp314-cp314t-win32.whl", hash = "sha256:1fa1186966b2621b1769fd467c7b22e317e6ba2d2cdcecc42ea3089ef04a8521"}, + {file = "regex-2025.10.23-cp314-cp314t-win_amd64.whl", hash = "sha256:08a15d40ce28362eac3e78e83d75475147869c1ff86bc93285f43b4f4431a741"}, + {file = "regex-2025.10.23-cp314-cp314t-win_arm64.whl", hash = "sha256:a93e97338e1c8ea2649e130dcfbe8cd69bba5e1e163834752ab64dcb4de6d5ed"}, + {file = "regex-2025.10.23-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d8d286760ee5b77fd21cf6b33cc45e0bffd1deeda59ca65b9be996f590a9828a"}, + {file = "regex-2025.10.23-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e72e3b84b170fec02193d32620a0a7060a22e52c46e45957dcd14742e0d28fb"}, + {file = "regex-2025.10.23-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ec506e8114fa12d21616deb44800f536d6bf2e1a69253dbf611f69af92395c99"}, + {file = "regex-2025.10.23-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d7e481f9710e8e24228ce2c77b41db7662a3f68853395da86a292b49dadca2aa"}, + {file = "regex-2025.10.23-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4663ff2fc367735ae7b90b4f0e05b25554446df4addafc76fdaacaaa0ba852b5"}, + {file = "regex-2025.10.23-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0879dd3251a42d2e9b938e1e03b1e9f60de90b4d153015193f5077a376a18439"}, + {file = "regex-2025.10.23-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:651c58aecbab7e97bdf8ec76298a28d2bf2b6238c099ec6bf32e6d41e2f9a9cb"}, + {file = "regex-2025.10.23-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ceabc62a0e879169cd1bf066063bd6991c3e41e437628936a2ce66e0e2071c32"}, + {file = "regex-2025.10.23-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bfdf4e9aa3e7b7d02fda97509b4ceeed34542361694ecc0a81db1688373ecfbd"}, + {file = "regex-2025.10.23-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:92f565ff9beb9f51bc7cc8c578a7e92eb5c4576b69043a4c58cd05d73fda83c5"}, + {file = "regex-2025.10.23-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:abbea548b1076eaf8635caf1071c9d86efdf0fa74abe71fca26c05a2d64cda80"}, + {file = "regex-2025.10.23-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:33535dcf34f47821381e341f7b715cbd027deda4223af4d3932adcd371d3192a"}, + {file = "regex-2025.10.23-cp39-cp39-win32.whl", hash = "sha256:345c9df49a15bf6460534b104b336581bc5f35c286cac526416e7a63d389b09b"}, + {file = "regex-2025.10.23-cp39-cp39-win_amd64.whl", hash = "sha256:f668fe1fd3358c5423355a289a4a003e58005ce829d217b828f80bd605a90145"}, + {file = "regex-2025.10.23-cp39-cp39-win_arm64.whl", hash = "sha256:07a3fd25d9074923e4d7258b551ae35ab6bdfe01904b8f0d5341c7d8b20eb18d"}, + {file = "regex-2025.10.23.tar.gz", hash = "sha256:8cbaf8ceb88f96ae2356d01b9adf5e6306fa42fa6f7eab6b97794e37c959ac26"}, ] [[package]] @@ -2102,13 +2102,13 @@ files = [ [[package]] name = "smart-open" -version = "7.3.1" +version = "7.4.1" description = "Utils for streaming large files (S3, HDFS, GCS, SFTP, Azure Blob Storage, gzip, bz2, zst...)" optional = false -python-versions = "<4.0,>=3.8" +python-versions = "<4.0,>=3.9" files = [ - {file = "smart_open-7.3.1-py3-none-any.whl", hash = "sha256:e243b2e7f69d6c0c96dd763d6fbbedbb4e0e4fc6d74aa007acc5b018d523858c"}, - {file = "smart_open-7.3.1.tar.gz", hash = "sha256:b33fee8dffd206f189d5e704106a8723afb4210d2ff47e0e1f7fbe436187a990"}, + {file = "smart_open-7.4.1-py3-none-any.whl", hash = "sha256:f52cb9bc897c7676dfc6996735332bd2465dfb048c73bfa9dfcdc829f48018cc"}, + {file = "smart_open-7.4.1.tar.gz", hash = "sha256:5c20f09026875e6dec708e9610e0cd13d24d91f0a2c12e6511b9e478a566b4a0"}, ] [package.dependencies] @@ -2120,11 +2120,11 @@ all = ["smart_open[azure,gcs,http,s3,ssh,webhdfs,zst]"] azure = ["azure-common", "azure-core", "azure-storage-blob"] gcs = ["google-cloud-storage (>=2.6.0)"] http = ["requests"] -s3 = ["boto3"] +s3 = ["boto3 (>=1.9.17)"] ssh = ["paramiko"] -test = ["awscli", "moto[server]", "numpy", "pyopenssl", "pytest", "pytest-rerunfailures", "pytest_benchmark", "responses", "smart_open[all]"] +test = ["awscli", "flake8", "moto[server]", "numpy", "pyopenssl", "pytest", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist[psutil]", "pytest_benchmark", "responses", "smart_open[all]"] webhdfs = ["requests"] -zst = ["zstandard"] +zst = ["backports.zstd (>=1.0.0)"] [[package]] name = "sniffio" @@ -2379,94 +2379,123 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "wrapt" -version = "1.17.3" +version = "2.0.0" description = "Module for decorators, wrappers and monkey patching." optional = false python-versions = ">=3.8" files = [ - {file = "wrapt-1.17.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88bbae4d40d5a46142e70d58bf664a89b6b4befaea7b2ecc14e03cedb8e06c04"}, - {file = "wrapt-1.17.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6b13af258d6a9ad602d57d889f83b9d5543acd471eee12eb51f5b01f8eb1bc2"}, - {file = "wrapt-1.17.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd341868a4b6714a5962c1af0bd44f7c404ef78720c7de4892901e540417111c"}, - {file = "wrapt-1.17.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f9b2601381be482f70e5d1051a5965c25fb3625455a2bf520b5a077b22afb775"}, - {file = "wrapt-1.17.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:343e44b2a8e60e06a7e0d29c1671a0d9951f59174f3709962b5143f60a2a98bd"}, - {file = "wrapt-1.17.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:33486899acd2d7d3066156b03465b949da3fd41a5da6e394ec49d271baefcf05"}, - {file = "wrapt-1.17.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e6f40a8aa5a92f150bdb3e1c44b7e98fb7113955b2e5394122fa5532fec4b418"}, - {file = "wrapt-1.17.3-cp310-cp310-win32.whl", hash = "sha256:a36692b8491d30a8c75f1dfee65bef119d6f39ea84ee04d9f9311f83c5ad9390"}, - {file = "wrapt-1.17.3-cp310-cp310-win_amd64.whl", hash = "sha256:afd964fd43b10c12213574db492cb8f73b2f0826c8df07a68288f8f19af2ebe6"}, - {file = "wrapt-1.17.3-cp310-cp310-win_arm64.whl", hash = "sha256:af338aa93554be859173c39c85243970dc6a289fa907402289eeae7543e1ae18"}, - {file = "wrapt-1.17.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:273a736c4645e63ac582c60a56b0acb529ef07f78e08dc6bfadf6a46b19c0da7"}, - {file = "wrapt-1.17.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5531d911795e3f935a9c23eb1c8c03c211661a5060aab167065896bbf62a5f85"}, - {file = "wrapt-1.17.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0610b46293c59a3adbae3dee552b648b984176f8562ee0dba099a56cfbe4df1f"}, - {file = "wrapt-1.17.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b32888aad8b6e68f83a8fdccbf3165f5469702a7544472bdf41f582970ed3311"}, - {file = "wrapt-1.17.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8cccf4f81371f257440c88faed6b74f1053eef90807b77e31ca057b2db74edb1"}, - {file = "wrapt-1.17.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8a210b158a34164de8bb68b0e7780041a903d7b00c87e906fb69928bf7890d5"}, - {file = "wrapt-1.17.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:79573c24a46ce11aab457b472efd8d125e5a51da2d1d24387666cd85f54c05b2"}, - {file = "wrapt-1.17.3-cp311-cp311-win32.whl", hash = "sha256:c31eebe420a9a5d2887b13000b043ff6ca27c452a9a22fa71f35f118e8d4bf89"}, - {file = "wrapt-1.17.3-cp311-cp311-win_amd64.whl", hash = "sha256:0b1831115c97f0663cb77aa27d381237e73ad4f721391a9bfb2fe8bc25fa6e77"}, - {file = "wrapt-1.17.3-cp311-cp311-win_arm64.whl", hash = "sha256:5a7b3c1ee8265eb4c8f1b7d29943f195c00673f5ab60c192eba2d4a7eae5f46a"}, - {file = "wrapt-1.17.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ab232e7fdb44cdfbf55fc3afa31bcdb0d8980b9b95c38b6405df2acb672af0e0"}, - {file = "wrapt-1.17.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9baa544e6acc91130e926e8c802a17f3b16fbea0fd441b5a60f5cf2cc5c3deba"}, - {file = "wrapt-1.17.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6b538e31eca1a7ea4605e44f81a48aa24c4632a277431a6ed3f328835901f4fd"}, - {file = "wrapt-1.17.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:042ec3bb8f319c147b1301f2393bc19dba6e176b7da446853406d041c36c7828"}, - {file = "wrapt-1.17.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3af60380ba0b7b5aeb329bc4e402acd25bd877e98b3727b0135cb5c2efdaefe9"}, - {file = "wrapt-1.17.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b02e424deef65c9f7326d8c19220a2c9040c51dc165cddb732f16198c168396"}, - {file = "wrapt-1.17.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:74afa28374a3c3a11b3b5e5fca0ae03bef8450d6aa3ab3a1e2c30e3a75d023dc"}, - {file = "wrapt-1.17.3-cp312-cp312-win32.whl", hash = "sha256:4da9f45279fff3543c371d5ababc57a0384f70be244de7759c85a7f989cb4ebe"}, - {file = "wrapt-1.17.3-cp312-cp312-win_amd64.whl", hash = "sha256:e71d5c6ebac14875668a1e90baf2ea0ef5b7ac7918355850c0908ae82bcb297c"}, - {file = "wrapt-1.17.3-cp312-cp312-win_arm64.whl", hash = "sha256:604d076c55e2fdd4c1c03d06dc1a31b95130010517b5019db15365ec4a405fc6"}, - {file = "wrapt-1.17.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a47681378a0439215912ef542c45a783484d4dd82bac412b71e59cf9c0e1cea0"}, - {file = "wrapt-1.17.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a30837587c6ee3cd1a4d1c2ec5d24e77984d44e2f34547e2323ddb4e22eb77"}, - {file = "wrapt-1.17.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:16ecf15d6af39246fe33e507105d67e4b81d8f8d2c6598ff7e3ca1b8a37213f7"}, - {file = "wrapt-1.17.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6fd1ad24dc235e4ab88cda009e19bf347aabb975e44fd5c2fb22a3f6e4141277"}, - {file = "wrapt-1.17.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ed61b7c2d49cee3c027372df5809a59d60cf1b6c2f81ee980a091f3afed6a2d"}, - {file = "wrapt-1.17.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:423ed5420ad5f5529db9ce89eac09c8a2f97da18eb1c870237e84c5a5c2d60aa"}, - {file = "wrapt-1.17.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e01375f275f010fcbf7f643b4279896d04e571889b8a5b3f848423d91bf07050"}, - {file = "wrapt-1.17.3-cp313-cp313-win32.whl", hash = "sha256:53e5e39ff71b3fc484df8a522c933ea2b7cdd0d5d15ae82e5b23fde87d44cbd8"}, - {file = "wrapt-1.17.3-cp313-cp313-win_amd64.whl", hash = "sha256:1f0b2f40cf341ee8cc1a97d51ff50dddb9fcc73241b9143ec74b30fc4f44f6cb"}, - {file = "wrapt-1.17.3-cp313-cp313-win_arm64.whl", hash = "sha256:7425ac3c54430f5fc5e7b6f41d41e704db073309acfc09305816bc6a0b26bb16"}, - {file = "wrapt-1.17.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cf30f6e3c077c8e6a9a7809c94551203c8843e74ba0c960f4a98cd80d4665d39"}, - {file = "wrapt-1.17.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e228514a06843cae89621384cfe3a80418f3c04aadf8a3b14e46a7be704e4235"}, - {file = "wrapt-1.17.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:5ea5eb3c0c071862997d6f3e02af1d055f381b1d25b286b9d6644b79db77657c"}, - {file = "wrapt-1.17.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:281262213373b6d5e4bb4353bc36d1ba4084e6d6b5d242863721ef2bf2c2930b"}, - {file = "wrapt-1.17.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dc4a8d2b25efb6681ecacad42fca8859f88092d8732b170de6a5dddd80a1c8fa"}, - {file = "wrapt-1.17.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:373342dd05b1d07d752cecbec0c41817231f29f3a89aa8b8843f7b95992ed0c7"}, - {file = "wrapt-1.17.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d40770d7c0fd5cbed9d84b2c3f2e156431a12c9a37dc6284060fb4bec0b7ffd4"}, - {file = "wrapt-1.17.3-cp314-cp314-win32.whl", hash = "sha256:fbd3c8319de8e1dc79d346929cd71d523622da527cca14e0c1d257e31c2b8b10"}, - {file = "wrapt-1.17.3-cp314-cp314-win_amd64.whl", hash = "sha256:e1a4120ae5705f673727d3253de3ed0e016f7cd78dc463db1b31e2463e1f3cf6"}, - {file = "wrapt-1.17.3-cp314-cp314-win_arm64.whl", hash = "sha256:507553480670cab08a800b9463bdb881b2edeed77dc677b0a5915e6106e91a58"}, - {file = "wrapt-1.17.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:ed7c635ae45cfbc1a7371f708727bf74690daedc49b4dba310590ca0bd28aa8a"}, - {file = "wrapt-1.17.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:249f88ed15503f6492a71f01442abddd73856a0032ae860de6d75ca62eed8067"}, - {file = "wrapt-1.17.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a03a38adec8066d5a37bea22f2ba6bbf39fcdefbe2d91419ab864c3fb515454"}, - {file = "wrapt-1.17.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5d4478d72eb61c36e5b446e375bbc49ed002430d17cdec3cecb36993398e1a9e"}, - {file = "wrapt-1.17.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:223db574bb38637e8230eb14b185565023ab624474df94d2af18f1cdb625216f"}, - {file = "wrapt-1.17.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e405adefb53a435f01efa7ccdec012c016b5a1d3f35459990afc39b6be4d5056"}, - {file = "wrapt-1.17.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:88547535b787a6c9ce4086917b6e1d291aa8ed914fdd3a838b3539dc95c12804"}, - {file = "wrapt-1.17.3-cp314-cp314t-win32.whl", hash = "sha256:41b1d2bc74c2cac6f9074df52b2efbef2b30bdfe5f40cb78f8ca22963bc62977"}, - {file = "wrapt-1.17.3-cp314-cp314t-win_amd64.whl", hash = "sha256:73d496de46cd2cdbdbcce4ae4bcdb4afb6a11234a1df9c085249d55166b95116"}, - {file = "wrapt-1.17.3-cp314-cp314t-win_arm64.whl", hash = "sha256:f38e60678850c42461d4202739f9bf1e3a737c7ad283638251e79cc49effb6b6"}, - {file = "wrapt-1.17.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:70d86fa5197b8947a2fa70260b48e400bf2ccacdcab97bb7de47e3d1e6312225"}, - {file = "wrapt-1.17.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:df7d30371a2accfe4013e90445f6388c570f103d61019b6b7c57e0265250072a"}, - {file = "wrapt-1.17.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:caea3e9c79d5f0d2c6d9ab96111601797ea5da8e6d0723f77eabb0d4068d2b2f"}, - {file = "wrapt-1.17.3-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:758895b01d546812d1f42204bd443b8c433c44d090248bf22689df673ccafe00"}, - {file = "wrapt-1.17.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:02b551d101f31694fc785e58e0720ef7d9a10c4e62c1c9358ce6f63f23e30a56"}, - {file = "wrapt-1.17.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:656873859b3b50eeebe6db8b1455e99d90c26ab058db8e427046dbc35c3140a5"}, - {file = "wrapt-1.17.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a9a2203361a6e6404f80b99234fe7fb37d1fc73487b5a78dc1aa5b97201e0f22"}, - {file = "wrapt-1.17.3-cp38-cp38-win32.whl", hash = "sha256:55cbbc356c2842f39bcc553cf695932e8b30e30e797f961860afb308e6b1bb7c"}, - {file = "wrapt-1.17.3-cp38-cp38-win_amd64.whl", hash = "sha256:ad85e269fe54d506b240d2d7b9f5f2057c2aa9a2ea5b32c66f8902f768117ed2"}, - {file = "wrapt-1.17.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:30ce38e66630599e1193798285706903110d4f057aab3168a34b7fdc85569afc"}, - {file = "wrapt-1.17.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:65d1d00fbfb3ea5f20add88bbc0f815150dbbde3b026e6c24759466c8b5a9ef9"}, - {file = "wrapt-1.17.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7c06742645f914f26c7f1fa47b8bc4c91d222f76ee20116c43d5ef0912bba2d"}, - {file = "wrapt-1.17.3-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7e18f01b0c3e4a07fe6dfdb00e29049ba17eadbc5e7609a2a3a4af83ab7d710a"}, - {file = "wrapt-1.17.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f5f51a6466667a5a356e6381d362d259125b57f059103dd9fdc8c0cf1d14139"}, - {file = "wrapt-1.17.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:59923aa12d0157f6b82d686c3fd8e1166fa8cdfb3e17b42ce3b6147ff81528df"}, - {file = "wrapt-1.17.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:46acc57b331e0b3bcb3e1ca3b421d65637915cfcd65eb783cb2f78a511193f9b"}, - {file = "wrapt-1.17.3-cp39-cp39-win32.whl", hash = "sha256:3e62d15d3cfa26e3d0788094de7b64efa75f3a53875cdbccdf78547aed547a81"}, - {file = "wrapt-1.17.3-cp39-cp39-win_amd64.whl", hash = "sha256:1f23fa283f51c890eda8e34e4937079114c74b4c81d2b2f1f1d94948f5cc3d7f"}, - {file = "wrapt-1.17.3-cp39-cp39-win_arm64.whl", hash = "sha256:24c2ed34dc222ed754247a2702b1e1e89fdbaa4016f324b4b8f1a802d4ffe87f"}, - {file = "wrapt-1.17.3-py3-none-any.whl", hash = "sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22"}, - {file = "wrapt-1.17.3.tar.gz", hash = "sha256:f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0"}, + {file = "wrapt-2.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a7cebcee61f21b1e46aa32db8d9d93826d0fbf1ad85defc2ccfb93b4adef1435"}, + {file = "wrapt-2.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:827e6e3a3a560f6ec1f5ee92d4319c21a0549384f896ec692f3201eda31ebd11"}, + {file = "wrapt-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a91075a5383a7cbfe46aed1845ef7c3f027e8e20e7d9a8a75e36ebc9b0dd15e"}, + {file = "wrapt-2.0.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b6a18c813196e18146b8d041e20875bdb0cb09b94ac1d1e1146e0fa87b2deb0d"}, + {file = "wrapt-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec5028d26011a53c76bd91bb6198b30b438c6e0f7adb45f2ad84fe2655b6a104"}, + {file = "wrapt-2.0.0-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bed9b04900204721a24bcefc652ca267b01c1e8ad8bc8c0cff81558a45a3aadc"}, + {file = "wrapt-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:03442f2b45fa3f2b98a94a1917f52fb34670de8f96c0a009c02dbd512d855a3d"}, + {file = "wrapt-2.0.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:17d0b5c42495ba142a1cee52b76414f9210591c84aae94dffda70240753bfb3c"}, + {file = "wrapt-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ee44215e7d13e112a8fc74e12ed1a1f41cab2bc07b11cc703f2398cd114b261c"}, + {file = "wrapt-2.0.0-cp310-cp310-win32.whl", hash = "sha256:fe6eafac3bc3c957ab6597a0c0654a0a308868458d00d218743e5b5fae51951c"}, + {file = "wrapt-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:9e070c3491397fba0445b8977900271eca9656570cca7c900d9b9352186703a0"}, + {file = "wrapt-2.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:806e2e73186eb5e3546f39fb5d0405040e0088db0fc8b2f667fd1863de2b3c99"}, + {file = "wrapt-2.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b7e221abb6c5387819db9323dac3c875b459695057449634f1111955d753c621"}, + {file = "wrapt-2.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1147a84c8fc852426580af8b6e33138461ddbc65aa459a25ea539374d32069fa"}, + {file = "wrapt-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5d6691d4a711504a0bc10de789842ad6ac627bed22937b10f37a1211a8ab7bb3"}, + {file = "wrapt-2.0.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f460e1eb8e75a17c3918c8e35ba57625721eef2439ef0bcf05304ac278a65e1d"}, + {file = "wrapt-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:12c37784b77bf043bf65cc96c7195a5db474b8e54173208af076bdbb61df7b3e"}, + {file = "wrapt-2.0.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:75e5c049eb583835f7a0e0e311d9dde9bfbaac723a6dd89d052540f9b2809977"}, + {file = "wrapt-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e50bcbd5b65dac21b82319fcf18486e6ac439947e9305034b00704eb7405f553"}, + {file = "wrapt-2.0.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:06b78cb6b9320f57737a52fede882640d93cface98332d1a3df0c5696ec9ae9f"}, + {file = "wrapt-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8c8349ebfc3cd98bc9105e0112dd8c8ac1f3c7cb5601f9d02248cae83a63f748"}, + {file = "wrapt-2.0.0-cp311-cp311-win32.whl", hash = "sha256:028f19ec29e204fe725139d4a8b09f77ecfb64f8f02b7ab5ee822c85e330b68b"}, + {file = "wrapt-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:c6961f05e58d919153ba311b397b7b904b907132b7b8344dde47865d4bb5ec89"}, + {file = "wrapt-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:be7e316c2accd5a31dbcc230de19e2a846a325f8967fdea72704d00e38e6af06"}, + {file = "wrapt-2.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73c6f734aecb1a030d9a265c13a425897e1ea821b73249bb14471445467ca71c"}, + {file = "wrapt-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b4a7f8023b8ce8a36370154733c747f8d65c8697cb977d8b6efeb89291fff23e"}, + {file = "wrapt-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a1cb62f686c50e9dab5983c68f6c8e9cbf14a6007935e683662898a7d892fa69"}, + {file = "wrapt-2.0.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:43dc0550ae15e33e6bb45a82a5e1b5495be2587fbaa996244b509921810ee49f"}, + {file = "wrapt-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39c5b45b056d630545e40674d1f5e1b51864b3546f25ab6a4a331943de96262e"}, + {file = "wrapt-2.0.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:804e88f824b76240a1b670330637ccfd2d18b9efa3bb4f02eb20b2f64880b324"}, + {file = "wrapt-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c2c476aa3fc2b9899c3f7b20963fac4f952e7edb74a31fc92f7745389a2e3618"}, + {file = "wrapt-2.0.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:8d851e526891216f89fcb7a1820dad9bd503ba3468fb9635ee28e93c781aa98e"}, + {file = "wrapt-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b95733c2360c4a8656ee93c7af78e84c0bd617da04a236d7a456c8faa34e7a2d"}, + {file = "wrapt-2.0.0-cp312-cp312-win32.whl", hash = "sha256:ea56817176834edf143df1109ae8fdaa087be82fdad3492648de0baa8ae82bf2"}, + {file = "wrapt-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c7d3bee7be7a2665286103f4d1f15405c8074e6e1f89dac5774f9357c9a3809"}, + {file = "wrapt-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:680f707e1d26acbc60926659799b15659f077df5897a6791c7c598a5d4a211c4"}, + {file = "wrapt-2.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e2ea096db28d5eb64d381af0e93464621ace38a7003a364b6b5ffb7dd713aabe"}, + {file = "wrapt-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c92b5a82d28491e3f14f037e1aae99a27a5e6e0bb161e65f52c0445a3fa7c940"}, + {file = "wrapt-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:81d234718aabe632d179fac52c7f69f0f99fbaac4d4bcd670e62462bbcbfcad7"}, + {file = "wrapt-2.0.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:db2eea83c43f84e4e41dbbb4c1de371a53166e55f900a6b130c3ef51c6345c1a"}, + {file = "wrapt-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:65f50e356c425c061e1e17fe687ff30e294fed9bf3441dc1f13ef73859c2a817"}, + {file = "wrapt-2.0.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:887f2a667e3cbfb19e204032d42ad7dedaa43972e4861dc7a3d51ae951d9b578"}, + {file = "wrapt-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9054829da4be461e3ad3192e4b6bbf1fc18af64c9975ce613aec191924e004dc"}, + {file = "wrapt-2.0.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:b952ffd77133a5a2798ee3feb18e51b0a299d2f440961e5bb7737dbb02e57289"}, + {file = "wrapt-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e25fde03c480061b8234d8ee4863eb5f40a9be4fb258ce105b364de38fc6bcf9"}, + {file = "wrapt-2.0.0-cp313-cp313-win32.whl", hash = "sha256:49e982b7860d325094978292a49e0418833fc7fc42c0dc7cd0b7524d7d06ee74"}, + {file = "wrapt-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:6e5c86389d9964050ce50babe247d172a5e3911d59a64023b90db2b4fa00ae7c"}, + {file = "wrapt-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:b96fdaa4611e05c7231937930567d3c16782be9dbcf03eb9f60d83e57dd2f129"}, + {file = "wrapt-2.0.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:f2c7b7fead096dbf1dcc455b7f59facb05de3f5bfb04f60a69f98cdfe6049e5f"}, + {file = "wrapt-2.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:04c7c8393f25b11c0faa5d907dd9eb462e87e4e7ba55e308a046d7ed37f4bbe2"}, + {file = "wrapt-2.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a93e0f8b376c0735b2f4daf58018b4823614d2b896cb72b6641c4d3dbdca1d75"}, + {file = "wrapt-2.0.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b42d13603da4416c43c430dbc6313c8d7ff745c40942f146ed4f6dd02c7d2547"}, + {file = "wrapt-2.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8bbd2472abf8c33480ad2314b1f8fac45d592aba6cc093e8839a7b2045660e6"}, + {file = "wrapt-2.0.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e64a3a1fd9a308ab9b815a2ad7a65b679730629dbf85f8fc3f7f970d634ee5df"}, + {file = "wrapt-2.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d61214525eaf88e0d0edf3d1ad5b5889863c6f88e588c6cdc6aa4ee5d1f10a4a"}, + {file = "wrapt-2.0.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:04f7a5f92c5f7324a1735043cc467b1295a1c5b4e0c1395472b7c44706e3dc61"}, + {file = "wrapt-2.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2356f76cb99b3de5b4e5b8210367fbbb81c7309fe39b622f5d199dd88eb7f765"}, + {file = "wrapt-2.0.0-cp313-cp313t-win32.whl", hash = "sha256:0a921b657a224e40e4bc161b5d33934583b34f0c9c5bdda4e6ac66f9d2fcb849"}, + {file = "wrapt-2.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:c16f6d4eea98080f6659a8a7fc559d4a0a337ee66960659265cad2c8a40f7c0f"}, + {file = "wrapt-2.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:52878edc13dc151c58a9966621d67163a80654bc6cff4b2e1c79fa62d0352b26"}, + {file = "wrapt-2.0.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:79a53d86c2aff7b32cc77267e3a308365d1fcb881e74bc9cbe26f63ee90e37f0"}, + {file = "wrapt-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d731a4f22ed6ffa4cb551b4d2b0c24ff940c27a88edaf8e3490a5ee3a05aef71"}, + {file = "wrapt-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3e02ab8c0ac766a5a6e81cd3b6cc39200c69051826243182175555872522bd5a"}, + {file = "wrapt-2.0.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:895870602d65d7338edb3b6a717d856632ad9f14f7ff566214e4fb11f0816649"}, + {file = "wrapt-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b9ad4fab76a0086dc364c4f17f39ad289600e73ef5c6e9ab529aff22cac1ac3"}, + {file = "wrapt-2.0.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e7ca0562606d7bad2736b2c18f61295d61f50cd3f4bfc51753df13614dbcce1b"}, + {file = "wrapt-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fe089d9f5a4a3dea0108a8ae34bced114d0c4cca417bada1c5e8f42d98af9050"}, + {file = "wrapt-2.0.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e761f2d2f8dbc80384af3d547b522a80e67db3e319c7b02e7fd97aded0a8a678"}, + {file = "wrapt-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:17ba1bdc52d0c783481850996aa26cea5237720769197335abea2ae6b4c23bc0"}, + {file = "wrapt-2.0.0-cp314-cp314-win32.whl", hash = "sha256:f73318741b141223a4674ba96992aa2291b1b3f7a5e85cb3c2c964f86171eb45"}, + {file = "wrapt-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:8e08d4edb13cafe7b3260f31d4de033f73d3205774540cf583bffaa4bec97db9"}, + {file = "wrapt-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:af01695c2b7bbd8d67b869d8e3de2b123a7bfbee0185bdd138c2775f75373b83"}, + {file = "wrapt-2.0.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:057f02c13cce7b26c79624c06a3e1c2353e6dc9708525232232f6768118042ca"}, + {file = "wrapt-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:79bdd84570267f3f43d609c892ae2d30b91ee4b8614c2cbfd311a2965f1c9bdb"}, + {file = "wrapt-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:93c8b4f4d54fd401a817abbfc9bf482aa72fd447f8adf19ce81d035b3f5c762c"}, + {file = "wrapt-2.0.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5e09ffd31001dce71c2c2a4fc201bdba9a2f9f62b23700cf24af42266e784741"}, + {file = "wrapt-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d87c285ff04e26083c4b03546e7b74df7ba4f1f32f1dcb92e9ac13c2dbb4c379"}, + {file = "wrapt-2.0.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e52e50ea0a72ea48d1291cf8b8aaedcc99072d9dc5baba6b820486dcf4c67da8"}, + {file = "wrapt-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1fd4c95536975895f32571073446e614d5e2810b666b64955586dcddfd438fd3"}, + {file = "wrapt-2.0.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:d6ebfe9283209220ed9de80a3e9442aab8fc2be5a9bbf8491b99e02ca9349a89"}, + {file = "wrapt-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5d3ebd784804f146b7ea55359beb138e23cc18e5a5cc2cf26ad438723c00ce3a"}, + {file = "wrapt-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:9b15940ae9debc8b40b15dc57e1ce4433f7fb9d3f8761c7fab1ddd94cb999d99"}, + {file = "wrapt-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:7a0efbbc06d3e2077476a04f55859819d23206600b4c33f791359a8e6fa3c362"}, + {file = "wrapt-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:7fec8a9455c029c8cf4ff143a53b6e7c463268d42be6c17efa847ebd2f809965"}, + {file = "wrapt-2.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ac3d8beac68e4863c703b844fcc82693f83f933b37d2a54e9d513b2aab9c76aa"}, + {file = "wrapt-2.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f4b8f8644602803add6848c81b7d214cfd397b1ebab2130dc8530570d888155c"}, + {file = "wrapt-2.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:93cb5bff1fcd89b75f869e4f69566a91ab2c9f13e8edf0241fd5777b2fa6d48e"}, + {file = "wrapt-2.0.0-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e0eb6d155d02c7525b7ec09856cda5e611fc6eb9ab40d140e1f35f27ac7d5eae"}, + {file = "wrapt-2.0.0-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:309dd467a94ee38a7aa5752bda64e660aeab5723b26200d0b65a375dad9add09"}, + {file = "wrapt-2.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a55e8edd08e2eece131d90d82cd1521962d9152829b22c56e68539526d605825"}, + {file = "wrapt-2.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:1724dd7b84d419c80ba839da81ad78b02ac30df626e5aefcb18e94632a965f13"}, + {file = "wrapt-2.0.0-cp38-cp38-win32.whl", hash = "sha256:f8255c380a79f6752d0b920e69a5d656d863675d9c433eeb5548518ee2c8d9da"}, + {file = "wrapt-2.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:829c8d46465dbae49dba91516f11200a2b5ea91eae8afaccbc035f0b651eb9c4"}, + {file = "wrapt-2.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:094d348ce7e6ce37bf6ed9a6ecc11886c96f447b3ffebc7539ca197daa9a997e"}, + {file = "wrapt-2.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:98223acaa25b1449d993a3f4ffc8b5a03535e4041b37bf6a25459a0c74ee4cfc"}, + {file = "wrapt-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b79bf04c722035b1c474980dc1a64369feab7b703d6fe67da2d8664ed0bc980"}, + {file = "wrapt-2.0.0-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:623242959cb0c53f76baeb929be79f5f6a9a1673ef51628072b91bf299af2212"}, + {file = "wrapt-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:59dc94afc4542c7d9b9447fb2ae1168b5a29064eca4061dbbf3b3c26df268334"}, + {file = "wrapt-2.0.0-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d7c532cc9f0a9e6017f8d3c37f478a3e3a5dffa955ebba556274e5e916c058f7"}, + {file = "wrapt-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9d72c725cefbcc8ebab85c8352e5062ae87b6e323858e934e16b54ced580435a"}, + {file = "wrapt-2.0.0-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:2ca35b83497276c2ca0b072d2c00da2edde4c2a6c8c650eafcd1a006c17ab231"}, + {file = "wrapt-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2fc55d0da29318a5da33c2827aef8946bba046ac609a4784a90faff73c511174"}, + {file = "wrapt-2.0.0-cp39-cp39-win32.whl", hash = "sha256:9c100b0598f3763274f2033bcc0454de7486409f85bc6da58b49e5971747eb36"}, + {file = "wrapt-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:1316972a72c67936a07dbb48e2464356d91dd9674335aaec087b60094d87750b"}, + {file = "wrapt-2.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:5aad54ff45da9784573099696fd84841c7e559ce312f02afa6aa7e89b58e2c2f"}, + {file = "wrapt-2.0.0-py3-none-any.whl", hash = "sha256:02482fb0df89857e35427dfb844319417e14fae05878f295ee43fa3bf3b15502"}, + {file = "wrapt-2.0.0.tar.gz", hash = "sha256:35a542cc7a962331d0279735c30995b024e852cf40481e384fd63caaa391cbb9"}, ] +[package.extras] +dev = ["pytest", "setuptools"] + [[package]] name = "xmljson" version = "0.2.1" diff --git a/reference.md b/reference.md index c77786453..d9808fac8 100644 --- a/reference.md +++ b/reference.md @@ -13056,7 +13056,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.export_storage.azure.list() +client.export_storage.azure.list( + project=1, +) ``` @@ -13072,7 +13074,7 @@ client.export_storage.azure.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -13080,7 +13082,7 @@ client.export_storage.azure.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -13739,7 +13741,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.export_storage.azure_spi.list() +client.export_storage.azure_spi.list( + project=1, +) ``` @@ -13755,7 +13759,7 @@ client.export_storage.azure_spi.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -13763,7 +13767,7 @@ client.export_storage.azure_spi.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -14742,7 +14746,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.export_storage.databricks.list() +client.export_storage.databricks.list( + project=1, +) ``` @@ -14758,7 +14764,7 @@ client.export_storage.databricks.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -14766,7 +14772,7 @@ client.export_storage.databricks.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -15795,7 +15801,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.export_storage.gcs.list() +client.export_storage.gcs.list( + project=1, +) ``` @@ -15811,7 +15819,7 @@ client.export_storage.gcs.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -15819,7 +15827,7 @@ client.export_storage.gcs.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -16478,7 +16486,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.export_storage.gcswif.list() +client.export_storage.gcswif.list( + project=1, +) ``` @@ -16494,7 +16504,7 @@ client.export_storage.gcswif.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -16502,7 +16512,7 @@ client.export_storage.gcswif.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -17499,7 +17509,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.export_storage.local.list() +client.export_storage.local.list( + project=1, +) ``` @@ -17515,7 +17527,7 @@ client.export_storage.local.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -17523,7 +17535,7 @@ client.export_storage.local.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -18128,7 +18140,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.export_storage.redis.list() +client.export_storage.redis.list( + project=1, +) ``` @@ -18144,7 +18158,7 @@ client.export_storage.redis.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -18152,7 +18166,7 @@ client.export_storage.redis.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -18829,7 +18843,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.export_storage.s3.list() +client.export_storage.s3.list( + project=1, +) ``` @@ -18845,7 +18861,7 @@ client.export_storage.s3.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -18853,7 +18869,7 @@ client.export_storage.s3.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -19608,7 +19624,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.export_storage.s3s.list() +client.export_storage.s3s.list( + project=1, +) ``` @@ -19624,7 +19642,7 @@ client.export_storage.s3s.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -19632,7 +19650,7 @@ client.export_storage.s3s.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -20703,7 +20721,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.import_storage.azure.list() +client.import_storage.azure.list( + project=1, +) ``` @@ -20719,7 +20739,7 @@ client.import_storage.azure.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -20727,7 +20747,7 @@ client.import_storage.azure.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -21458,7 +21478,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.import_storage.azure_spi.list() +client.import_storage.azure_spi.list( + project=1, +) ``` @@ -21474,7 +21496,7 @@ client.import_storage.azure_spi.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -21482,7 +21504,7 @@ client.import_storage.azure_spi.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -22509,7 +22531,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.import_storage.databricks.list() +client.import_storage.databricks.list( + project=1, +) ``` @@ -22525,7 +22549,7 @@ client.import_storage.databricks.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -22533,7 +22557,7 @@ client.import_storage.databricks.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -23610,7 +23634,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.import_storage.gcs.list() +client.import_storage.gcs.list( + project=1, +) ``` @@ -23626,7 +23652,7 @@ client.import_storage.gcs.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -23634,7 +23660,7 @@ client.import_storage.gcs.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -24365,7 +24391,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.import_storage.gcswif.list() +client.import_storage.gcswif.list( + project=1, +) ``` @@ -24381,7 +24409,7 @@ client.import_storage.gcswif.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -24389,7 +24417,7 @@ client.import_storage.gcswif.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -25434,7 +25462,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.import_storage.local.list() +client.import_storage.local.list( + project=1, +) ``` @@ -25450,7 +25480,7 @@ client.import_storage.local.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -25458,7 +25488,7 @@ client.import_storage.local.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -26063,7 +26093,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.import_storage.redis.list() +client.import_storage.redis.list( + project=1, +) ``` @@ -26079,7 +26111,7 @@ client.import_storage.redis.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -26087,7 +26119,7 @@ client.import_storage.redis.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -26764,7 +26796,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.import_storage.s3.list() +client.import_storage.s3.list( + project=1, +) ``` @@ -26780,7 +26814,7 @@ client.import_storage.s3.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -26788,7 +26822,7 @@ client.import_storage.s3.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
@@ -27639,7 +27673,9 @@ from label_studio_sdk import LabelStudio client = LabelStudio( api_key="YOUR_API_KEY", ) -client.import_storage.s3s.list() +client.import_storage.s3s.list( + project=1, +) ``` @@ -27655,7 +27691,7 @@ client.import_storage.s3s.list()
-**ordering:** `typing.Optional[str]` — Which field to use when ordering the results. +**project:** `int` — Project ID
@@ -27663,7 +27699,7 @@ client.import_storage.s3s.list()
-**project:** `typing.Optional[int]` — Project ID +**ordering:** `typing.Optional[str]` — Which field to use when ordering the results.
diff --git a/src/label_studio_sdk/__init__.py b/src/label_studio_sdk/__init__.py index e2282e146..0f2fe8c54 100644 --- a/src/label_studio_sdk/__init__.py +++ b/src/label_studio_sdk/__init__.py @@ -291,6 +291,7 @@ ActionsCreateRequestSelectedItemsIncluded, ActionsListResponseItem, ActionsListResponseItemDialog, + ActionsListResponseItemPermission, ) from .activity_logs import ActivityLogsListRequestMethod from .annotation_history import AnnotationHistoryDeleteResponse @@ -367,6 +368,7 @@ "ActionsEnum", "ActionsListResponseItem", "ActionsListResponseItemDialog", + "ActionsListResponseItemPermission", "ActivityLog", "ActivityLogResponse", "ActivityLogsListRequestMethod", diff --git a/src/label_studio_sdk/actions/__init__.py b/src/label_studio_sdk/actions/__init__.py index 4ae776910..dc9fc2a14 100644 --- a/src/label_studio_sdk/actions/__init__.py +++ b/src/label_studio_sdk/actions/__init__.py @@ -14,6 +14,7 @@ ActionsCreateRequestSelectedItemsIncluded, ActionsListResponseItem, ActionsListResponseItemDialog, + ActionsListResponseItemPermission, ) __all__ = [ @@ -30,4 +31,5 @@ "ActionsCreateRequestSelectedItemsIncluded", "ActionsListResponseItem", "ActionsListResponseItemDialog", + "ActionsListResponseItemPermission", ] diff --git a/src/label_studio_sdk/actions/types/__init__.py b/src/label_studio_sdk/actions/types/__init__.py index 06d908df8..36bc01b51 100644 --- a/src/label_studio_sdk/actions/types/__init__.py +++ b/src/label_studio_sdk/actions/types/__init__.py @@ -13,6 +13,7 @@ from .actions_create_request_selected_items_included import ActionsCreateRequestSelectedItemsIncluded from .actions_list_response_item import ActionsListResponseItem from .actions_list_response_item_dialog import ActionsListResponseItemDialog +from .actions_list_response_item_permission import ActionsListResponseItemPermission __all__ = [ "ActionsCreateRequestFilters", @@ -28,4 +29,5 @@ "ActionsCreateRequestSelectedItemsIncluded", "ActionsListResponseItem", "ActionsListResponseItemDialog", + "ActionsListResponseItemPermission", ] diff --git a/src/label_studio_sdk/actions/types/actions_list_response_item.py b/src/label_studio_sdk/actions/types/actions_list_response_item.py index 9934b183b..db72c1342 100644 --- a/src/label_studio_sdk/actions/types/actions_list_response_item.py +++ b/src/label_studio_sdk/actions/types/actions_list_response_item.py @@ -3,6 +3,7 @@ from ...core.unchecked_base_model import UncheckedBaseModel import typing from .actions_list_response_item_dialog import ActionsListResponseItemDialog +from .actions_list_response_item_permission import ActionsListResponseItemPermission from ...core.pydantic_utilities import IS_PYDANTIC_V2 import pydantic @@ -12,7 +13,7 @@ class ActionsListResponseItem(UncheckedBaseModel): experimental: typing.Optional[bool] = None id: typing.Optional[str] = None order: typing.Optional[int] = None - permission: typing.Optional[str] = None + permission: typing.Optional[ActionsListResponseItemPermission] = None title: typing.Optional[str] = None if IS_PYDANTIC_V2: diff --git a/src/label_studio_sdk/actions/types/actions_list_response_item_permission.py b/src/label_studio_sdk/actions/types/actions_list_response_item_permission.py new file mode 100644 index 000000000..e9747cf09 --- /dev/null +++ b/src/label_studio_sdk/actions/types/actions_list_response_item_permission.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ActionsListResponseItemPermission = typing.Union[str, typing.List[str]] diff --git a/src/label_studio_sdk/export_storage/azure/client.py b/src/label_studio_sdk/export_storage/azure/client.py index ff98d0b76..5e41c45f6 100644 --- a/src/label_studio_sdk/export_storage/azure/client.py +++ b/src/label_studio_sdk/export_storage/azure/client.py @@ -21,8 +21,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[AzureBlobExportStorage]: """ @@ -30,12 +30,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -51,7 +51,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.export_storage.azure.list() + client.export_storage.azure.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/export/azure", @@ -494,8 +496,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[AzureBlobExportStorage]: """ @@ -503,12 +505,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -529,7 +531,9 @@ async def list( async def main() -> None: - await client.export_storage.azure.list() + await client.export_storage.azure.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/export_storage/azure_spi/client.py b/src/label_studio_sdk/export_storage/azure_spi/client.py index b159dd175..697a8b8b2 100644 --- a/src/label_studio_sdk/export_storage/azure_spi/client.py +++ b/src/label_studio_sdk/export_storage/azure_spi/client.py @@ -23,8 +23,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[AzureServicePrincipalExportStorage]: """ @@ -38,12 +38,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -59,7 +59,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.export_storage.azure_spi.list() + client.export_storage.azure_spi.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/export/azure_spi", @@ -706,8 +708,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[AzureServicePrincipalExportStorage]: """ @@ -721,12 +723,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -747,7 +749,9 @@ async def list( async def main() -> None: - await client.export_storage.azure_spi.list() + await client.export_storage.azure_spi.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/export_storage/databricks/client.py b/src/label_studio_sdk/export_storage/databricks/client.py index a350c8100..3213481cc 100644 --- a/src/label_studio_sdk/export_storage/databricks/client.py +++ b/src/label_studio_sdk/export_storage/databricks/client.py @@ -23,8 +23,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[DatabricksExportStorage]: """ @@ -38,12 +38,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -59,7 +59,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.export_storage.databricks.list() + client.export_storage.databricks.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/export/databricks", @@ -731,8 +733,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[DatabricksExportStorage]: """ @@ -746,12 +748,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -772,7 +774,9 @@ async def list( async def main() -> None: - await client.export_storage.databricks.list() + await client.export_storage.databricks.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/export_storage/gcs/client.py b/src/label_studio_sdk/export_storage/gcs/client.py index 1ce654e97..bda9d15cc 100644 --- a/src/label_studio_sdk/export_storage/gcs/client.py +++ b/src/label_studio_sdk/export_storage/gcs/client.py @@ -21,8 +21,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[GcsExportStorage]: """ @@ -30,12 +30,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -51,7 +51,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.export_storage.gcs.list() + client.export_storage.gcs.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/export/gcs", @@ -494,8 +496,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[GcsExportStorage]: """ @@ -503,12 +505,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -529,7 +531,9 @@ async def list( async def main() -> None: - await client.export_storage.gcs.list() + await client.export_storage.gcs.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/export_storage/gcswif/client.py b/src/label_studio_sdk/export_storage/gcswif/client.py index b8fdb8f8d..e02c26854 100644 --- a/src/label_studio_sdk/export_storage/gcswif/client.py +++ b/src/label_studio_sdk/export_storage/gcswif/client.py @@ -23,8 +23,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[GcswifExportStorage]: """ @@ -38,12 +38,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -59,7 +59,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.export_storage.gcswif.list() + client.export_storage.gcswif.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/export/gcswif", @@ -717,8 +719,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[GcswifExportStorage]: """ @@ -732,12 +734,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -758,7 +760,9 @@ async def list( async def main() -> None: - await client.export_storage.gcswif.list() + await client.export_storage.gcswif.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/export_storage/local/client.py b/src/label_studio_sdk/export_storage/local/client.py index ae55c6fe3..14eacac10 100644 --- a/src/label_studio_sdk/export_storage/local/client.py +++ b/src/label_studio_sdk/export_storage/local/client.py @@ -21,8 +21,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[LocalFilesExportStorage]: """ @@ -30,12 +30,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -51,7 +51,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.export_storage.local.list() + client.export_storage.local.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/export/localfiles", @@ -464,8 +466,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[LocalFilesExportStorage]: """ @@ -473,12 +475,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -499,7 +501,9 @@ async def list( async def main() -> None: - await client.export_storage.local.list() + await client.export_storage.local.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/export_storage/redis/client.py b/src/label_studio_sdk/export_storage/redis/client.py index 30684bc96..5893e39bd 100644 --- a/src/label_studio_sdk/export_storage/redis/client.py +++ b/src/label_studio_sdk/export_storage/redis/client.py @@ -21,8 +21,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[RedisExportStorage]: """ @@ -30,12 +30,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -51,7 +51,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.export_storage.redis.list() + client.export_storage.redis.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/export/redis", @@ -509,8 +511,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[RedisExportStorage]: """ @@ -518,12 +520,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -544,7 +546,9 @@ async def list( async def main() -> None: - await client.export_storage.redis.list() + await client.export_storage.redis.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/export_storage/s3/client.py b/src/label_studio_sdk/export_storage/s3/client.py index 1f72b5258..91134e979 100644 --- a/src/label_studio_sdk/export_storage/s3/client.py +++ b/src/label_studio_sdk/export_storage/s3/client.py @@ -21,8 +21,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[S3ExportStorage]: """ @@ -30,12 +30,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -51,7 +51,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.export_storage.s3.list() + client.export_storage.s3.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/export/s3", @@ -554,8 +556,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[S3ExportStorage]: """ @@ -563,12 +565,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -589,7 +591,9 @@ async def list( async def main() -> None: - await client.export_storage.s3.list() + await client.export_storage.s3.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/export_storage/s3s/client.py b/src/label_studio_sdk/export_storage/s3s/client.py index 234e90af2..ef2656e41 100644 --- a/src/label_studio_sdk/export_storage/s3s/client.py +++ b/src/label_studio_sdk/export_storage/s3s/client.py @@ -23,8 +23,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[LseS3ExportStorage]: """ @@ -38,12 +38,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -59,7 +59,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.export_storage.s3s.list() + client.export_storage.s3s.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/export/s3s", @@ -761,8 +763,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[LseS3ExportStorage]: """ @@ -776,12 +778,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -802,7 +804,9 @@ async def list( async def main() -> None: - await client.export_storage.s3s.list() + await client.export_storage.s3s.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/import_storage/azure/client.py b/src/label_studio_sdk/import_storage/azure/client.py index bf31f88bd..f363650b2 100644 --- a/src/label_studio_sdk/import_storage/azure/client.py +++ b/src/label_studio_sdk/import_storage/azure/client.py @@ -21,8 +21,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[AzureBlobImportStorage]: """ @@ -30,12 +30,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -51,7 +51,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.import_storage.azure.list() + client.import_storage.azure.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/azure/", @@ -540,8 +542,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[AzureBlobImportStorage]: """ @@ -549,12 +551,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -575,7 +577,9 @@ async def list( async def main() -> None: - await client.import_storage.azure.list() + await client.import_storage.azure.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/import_storage/azure_spi/client.py b/src/label_studio_sdk/import_storage/azure_spi/client.py index 804a02e20..fde8f0de8 100644 --- a/src/label_studio_sdk/import_storage/azure_spi/client.py +++ b/src/label_studio_sdk/import_storage/azure_spi/client.py @@ -23,8 +23,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[AzureServicePrincipalImportStorage]: """ @@ -38,12 +38,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -59,7 +59,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.import_storage.azure_spi.list() + client.import_storage.azure_spi.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/azure_spi/", @@ -733,8 +735,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[AzureServicePrincipalImportStorage]: """ @@ -748,12 +750,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -774,7 +776,9 @@ async def list( async def main() -> None: - await client.import_storage.azure_spi.list() + await client.import_storage.azure_spi.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/import_storage/databricks/client.py b/src/label_studio_sdk/import_storage/databricks/client.py index e8203005e..a71e8a6b6 100644 --- a/src/label_studio_sdk/import_storage/databricks/client.py +++ b/src/label_studio_sdk/import_storage/databricks/client.py @@ -23,8 +23,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[DatabricksImportStorage]: """ @@ -38,12 +38,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -59,7 +59,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.import_storage.databricks.list() + client.import_storage.databricks.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/databricks/", @@ -761,8 +763,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[DatabricksImportStorage]: """ @@ -776,12 +778,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -802,7 +804,9 @@ async def list( async def main() -> None: - await client.import_storage.databricks.list() + await client.import_storage.databricks.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/import_storage/gcs/client.py b/src/label_studio_sdk/import_storage/gcs/client.py index 08c63bdf8..faf08e42f 100644 --- a/src/label_studio_sdk/import_storage/gcs/client.py +++ b/src/label_studio_sdk/import_storage/gcs/client.py @@ -21,8 +21,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[GcsImportStorage]: """ @@ -30,12 +30,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -51,7 +51,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.import_storage.gcs.list() + client.import_storage.gcs.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/gcs/", @@ -540,8 +542,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[GcsImportStorage]: """ @@ -549,12 +551,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -575,7 +577,9 @@ async def list( async def main() -> None: - await client.import_storage.gcs.list() + await client.import_storage.gcs.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/import_storage/gcswif/client.py b/src/label_studio_sdk/import_storage/gcswif/client.py index 23fab0927..84e859b32 100644 --- a/src/label_studio_sdk/import_storage/gcswif/client.py +++ b/src/label_studio_sdk/import_storage/gcswif/client.py @@ -23,8 +23,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[GcswifImportStorage]: """ @@ -38,12 +38,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -59,7 +59,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.import_storage.gcswif.list() + client.import_storage.gcswif.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/gcswif/", @@ -744,8 +746,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[GcswifImportStorage]: """ @@ -759,12 +761,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -785,7 +787,9 @@ async def list( async def main() -> None: - await client.import_storage.gcswif.list() + await client.import_storage.gcswif.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/import_storage/local/client.py b/src/label_studio_sdk/import_storage/local/client.py index 94bbd5ff6..863305372 100644 --- a/src/label_studio_sdk/import_storage/local/client.py +++ b/src/label_studio_sdk/import_storage/local/client.py @@ -21,8 +21,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[LocalFilesImportStorage]: """ @@ -30,12 +30,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -51,7 +51,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.import_storage.local.list() + client.import_storage.local.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/localfiles/", @@ -465,8 +467,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[LocalFilesImportStorage]: """ @@ -474,12 +476,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -500,7 +502,9 @@ async def list( async def main() -> None: - await client.import_storage.local.list() + await client.import_storage.local.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/import_storage/redis/client.py b/src/label_studio_sdk/import_storage/redis/client.py index c3d44bd64..b0b053a91 100644 --- a/src/label_studio_sdk/import_storage/redis/client.py +++ b/src/label_studio_sdk/import_storage/redis/client.py @@ -21,8 +21,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[RedisImportStorage]: """ @@ -30,12 +30,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -51,7 +51,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.import_storage.redis.list() + client.import_storage.redis.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/redis/", @@ -510,8 +512,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[RedisImportStorage]: """ @@ -519,12 +521,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -545,7 +547,9 @@ async def list( async def main() -> None: - await client.import_storage.redis.list() + await client.import_storage.redis.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/import_storage/s3/client.py b/src/label_studio_sdk/import_storage/s3/client.py index 045afea0a..5625c04f0 100644 --- a/src/label_studio_sdk/import_storage/s3/client.py +++ b/src/label_studio_sdk/import_storage/s3/client.py @@ -21,8 +21,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[S3ImportStorage]: """ @@ -30,12 +30,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -51,7 +51,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.import_storage.s3.list() + client.import_storage.s3.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/s3/", @@ -615,8 +617,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[S3ImportStorage]: """ @@ -624,12 +626,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -650,7 +652,9 @@ async def list( async def main() -> None: - await client.import_storage.s3.list() + await client.import_storage.s3.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/import_storage/s3s/client.py b/src/label_studio_sdk/import_storage/s3s/client.py index 04f80e07d..ef530a84a 100644 --- a/src/label_studio_sdk/import_storage/s3s/client.py +++ b/src/label_studio_sdk/import_storage/s3s/client.py @@ -23,8 +23,8 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[LseS3ImportStorage]: """ @@ -38,12 +38,12 @@ def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -59,7 +59,9 @@ def list( client = LabelStudio( api_key="YOUR_API_KEY", ) - client.import_storage.s3s.list() + client.import_storage.s3s.list( + project=1, + ) """ _response = self._client_wrapper.httpx_client.request( "api/storages/s3s/", @@ -788,8 +790,8 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): async def list( self, *, + project: int, ordering: typing.Optional[str] = None, - project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None, ) -> typing.List[LseS3ImportStorage]: """ @@ -803,12 +805,12 @@ async def list( Parameters ---------- + project : int + Project ID + ordering : typing.Optional[str] Which field to use when ordering the results. - project : typing.Optional[int] - Project ID - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -829,7 +831,9 @@ async def list( async def main() -> None: - await client.import_storage.s3s.list() + await client.import_storage.s3s.list( + project=1, + ) asyncio.run(main()) diff --git a/src/label_studio_sdk/types/activity_log.py b/src/label_studio_sdk/types/activity_log.py index 4044f6174..8ff5ec8c9 100644 --- a/src/label_studio_sdk/types/activity_log.py +++ b/src/label_studio_sdk/types/activity_log.py @@ -34,6 +34,7 @@ class ActivityLog(UncheckedBaseModel): response_code: str user_agent: typing.Optional[str] = None user_id: int + user_session: typing.Optional[str] = None workspace_owner_id: typing.Optional[int] = pydantic.Field(default=None) """ Owner id of workspace where action performed diff --git a/src/label_studio_sdk/types/billing_flags.py b/src/label_studio_sdk/types/billing_flags.py index 2b818143f..498e20228 100644 --- a/src/label_studio_sdk/types/billing_flags.py +++ b/src/label_studio_sdk/types/billing_flags.py @@ -15,6 +15,7 @@ class BillingFlags(UncheckedBaseModel): allow_data_credentials: bool allow_invite_people: bool allow_invite_project_experts: bool + allow_nda: bool allow_organization_webhooks: bool allow_sso: bool allow_storage_proxy: bool @@ -27,7 +28,6 @@ class BillingFlags(UncheckedBaseModel): embed_domains: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None embed_enabled: bool embed_settings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None - hide_storage_settings_for_manager: bool manual_role_management: bool manual_workspace_management: bool secure_mode: bool diff --git a/tests/export_storage/test_azure.py b/tests/export_storage/test_azure.py index 4ab874e64..a6bdbeef4 100644 --- a/tests/export_storage/test_azure.py +++ b/tests/export_storage/test_azure.py @@ -58,10 +58,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.export_storage.azure.list() + response = client.export_storage.azure.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.export_storage.azure.list() + async_response = await async_client.export_storage.azure.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/export_storage/test_azure_spi.py b/tests/export_storage/test_azure_spi.py index 29c899c60..17994bfe6 100644 --- a/tests/export_storage/test_azure_spi.py +++ b/tests/export_storage/test_azure_spi.py @@ -64,10 +64,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.export_storage.azure_spi.list() + response = client.export_storage.azure_spi.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.export_storage.azure_spi.list() + async_response = await async_client.export_storage.azure_spi.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/export_storage/test_databricks.py b/tests/export_storage/test_databricks.py index 8bd2a5d20..ecc6f56da 100644 --- a/tests/export_storage/test_databricks.py +++ b/tests/export_storage/test_databricks.py @@ -66,10 +66,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.export_storage.databricks.list() + response = client.export_storage.databricks.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.export_storage.databricks.list() + async_response = await async_client.export_storage.databricks.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/export_storage/test_gcs.py b/tests/export_storage/test_gcs.py index aca0c7f56..5cc240b8d 100644 --- a/tests/export_storage/test_gcs.py +++ b/tests/export_storage/test_gcs.py @@ -58,10 +58,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.export_storage.gcs.list() + response = client.export_storage.gcs.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.export_storage.gcs.list() + async_response = await async_client.export_storage.gcs.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/export_storage/test_gcswif.py b/tests/export_storage/test_gcswif.py index eab72e819..00196887d 100644 --- a/tests/export_storage/test_gcswif.py +++ b/tests/export_storage/test_gcswif.py @@ -66,10 +66,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.export_storage.gcswif.list() + response = client.export_storage.gcswif.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.export_storage.gcswif.list() + async_response = await async_client.export_storage.gcswif.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/export_storage/test_local.py b/tests/export_storage/test_local.py index 206e4f682..0d3e3de38 100644 --- a/tests/export_storage/test_local.py +++ b/tests/export_storage/test_local.py @@ -52,10 +52,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.export_storage.local.list() + response = client.export_storage.local.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.export_storage.local.list() + async_response = await async_client.export_storage.local.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/export_storage/test_redis.py b/tests/export_storage/test_redis.py index 1486f83a7..873807d93 100644 --- a/tests/export_storage/test_redis.py +++ b/tests/export_storage/test_redis.py @@ -60,10 +60,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.export_storage.redis.list() + response = client.export_storage.redis.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.export_storage.redis.list() + async_response = await async_client.export_storage.redis.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/export_storage/test_s3.py b/tests/export_storage/test_s3.py index 1f1f29ce0..33163e35c 100644 --- a/tests/export_storage/test_s3.py +++ b/tests/export_storage/test_s3.py @@ -66,10 +66,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.export_storage.s3.list() + response = client.export_storage.s3.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.export_storage.s3.list() + async_response = await async_client.export_storage.s3.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/export_storage/test_s3s.py b/tests/export_storage/test_s3s.py index dfae7d9fe..31c521019 100644 --- a/tests/export_storage/test_s3s.py +++ b/tests/export_storage/test_s3s.py @@ -72,10 +72,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.export_storage.s3s.list() + response = client.export_storage.s3s.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.export_storage.s3s.list() + async_response = await async_client.export_storage.s3s.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/import_storage/test_azure.py b/tests/import_storage/test_azure.py index 76a6b1901..9b181def8 100644 --- a/tests/import_storage/test_azure.py +++ b/tests/import_storage/test_azure.py @@ -62,10 +62,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.import_storage.azure.list() + response = client.import_storage.azure.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.import_storage.azure.list() + async_response = await async_client.import_storage.azure.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/import_storage/test_azure_spi.py b/tests/import_storage/test_azure_spi.py index 71d9828cd..bcd9238bf 100644 --- a/tests/import_storage/test_azure_spi.py +++ b/tests/import_storage/test_azure_spi.py @@ -68,10 +68,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.import_storage.azure_spi.list() + response = client.import_storage.azure_spi.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.import_storage.azure_spi.list() + async_response = await async_client.import_storage.azure_spi.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/import_storage/test_databricks.py b/tests/import_storage/test_databricks.py index 7b77d6411..1a0b61bf2 100644 --- a/tests/import_storage/test_databricks.py +++ b/tests/import_storage/test_databricks.py @@ -70,10 +70,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.import_storage.databricks.list() + response = client.import_storage.databricks.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.import_storage.databricks.list() + async_response = await async_client.import_storage.databricks.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/import_storage/test_gcs.py b/tests/import_storage/test_gcs.py index a54df8978..028b8d28e 100644 --- a/tests/import_storage/test_gcs.py +++ b/tests/import_storage/test_gcs.py @@ -62,10 +62,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.import_storage.gcs.list() + response = client.import_storage.gcs.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.import_storage.gcs.list() + async_response = await async_client.import_storage.gcs.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/import_storage/test_gcswif.py b/tests/import_storage/test_gcswif.py index cedc92fbd..b169ab051 100644 --- a/tests/import_storage/test_gcswif.py +++ b/tests/import_storage/test_gcswif.py @@ -70,10 +70,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.import_storage.gcswif.list() + response = client.import_storage.gcswif.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.import_storage.gcswif.list() + async_response = await async_client.import_storage.gcswif.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/import_storage/test_local.py b/tests/import_storage/test_local.py index 03dd8014d..e3d3fcb6a 100644 --- a/tests/import_storage/test_local.py +++ b/tests/import_storage/test_local.py @@ -52,10 +52,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.import_storage.local.list() + response = client.import_storage.local.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.import_storage.local.list() + async_response = await async_client.import_storage.local.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/import_storage/test_redis.py b/tests/import_storage/test_redis.py index 62714bb8a..23794607b 100644 --- a/tests/import_storage/test_redis.py +++ b/tests/import_storage/test_redis.py @@ -58,10 +58,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.import_storage.redis.list() + response = client.import_storage.redis.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.import_storage.redis.list() + async_response = await async_client.import_storage.redis.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/import_storage/test_s3.py b/tests/import_storage/test_s3.py index 505e0a2b6..e530e008a 100644 --- a/tests/import_storage/test_s3.py +++ b/tests/import_storage/test_s3.py @@ -70,10 +70,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.import_storage.s3.list() + response = client.import_storage.s3.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.import_storage.s3.list() + async_response = await async_client.import_storage.s3.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/import_storage/test_s3s.py b/tests/import_storage/test_s3s.py index adde2563d..3a6f7ac80 100644 --- a/tests/import_storage/test_s3s.py +++ b/tests/import_storage/test_s3s.py @@ -76,10 +76,10 @@ async def test_list_(client: LabelStudio, async_client: AsyncLabelStudio) -> Non } }, ) - response = client.import_storage.s3s.list() + response = client.import_storage.s3s.list(project=1) validate_response(response, expected_response, expected_types) - async_response = await async_client.import_storage.s3s.list() + async_response = await async_client.import_storage.s3s.list(project=1) validate_response(async_response, expected_response, expected_types) diff --git a/tests/test_billing.py b/tests/test_billing.py index eb52f077d..cf36b7487 100644 --- a/tests/test_billing.py +++ b/tests/test_billing.py @@ -37,6 +37,7 @@ async def test_info(client: LabelStudio, async_client: AsyncLabelStudio) -> None "allow_data_credentials": True, "allow_invite_people": True, "allow_invite_project_experts": True, + "allow_nda": True, "allow_organization_webhooks": True, "allow_sso": False, "allow_storage_proxy": True, @@ -49,7 +50,6 @@ async def test_info(client: LabelStudio, async_client: AsyncLabelStudio) -> None "embed_domains": [{"domain": "http://localhost:3000"}, {"domain": "https://example.com"}], "embed_enabled": False, "embed_settings": {"public_verify_alg": ["RS256"], "public_verify_key": "...."}, - "hide_storage_settings_for_manager": False, "manual_role_management": False, "manual_workspace_management": False, "secure_mode": False, @@ -87,6 +87,7 @@ async def test_info(client: LabelStudio, async_client: AsyncLabelStudio) -> None "allow_data_credentials": None, "allow_invite_people": None, "allow_invite_project_experts": None, + "allow_nda": None, "allow_organization_webhooks": None, "allow_sso": None, "allow_storage_proxy": None, @@ -99,7 +100,6 @@ async def test_info(client: LabelStudio, async_client: AsyncLabelStudio) -> None "embed_domains": ("list", {0: ("dict", {0: (None, None)}), 1: ("dict", {0: (None, None)})}), "embed_enabled": None, "embed_settings": ("dict", {0: (None, None), 1: (None, None)}), - "hide_storage_settings_for_manager": None, "manual_role_management": None, "manual_workspace_management": None, "secure_mode": None, From 32aaf7fe836cf35a79df0da561fa404362a1e15c Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Sat, 25 Oct 2025 21:18:53 +0000 Subject: [PATCH 2/5] SDK regeneration --- .../definition/{analytics.yml => organizations/stats.yml} | 8 +++++--- .mock/openapi/openapi.yaml | 6 ++++++ 2 files changed, 11 insertions(+), 3 deletions(-) rename .mock/definition/{analytics.yml => organizations/stats.yml} (96%) diff --git a/.mock/definition/analytics.yml b/.mock/definition/organizations/stats.yml similarity index 96% rename from .mock/definition/analytics.yml rename to .mock/definition/organizations/stats.yml index 935f14ecc..a14ef51a1 100644 --- a/.mock/definition/analytics.yml +++ b/.mock/definition/organizations/stats.yml @@ -1,10 +1,10 @@ imports: - root: __package__.yml + root: ../__package__.yml service: auth: false base-path: '' endpoints: - api_analytics_annotator_performance_list: + annotator_performance: path: /api/analytics/annotator-performance/ method: GET auth: true @@ -18,7 +18,7 @@ service: openapi: openapi/openapi.yaml display-name: Get annotator performance metrics request: - name: ApiAnalyticsAnnotatorPerformanceListRequest + name: StatsAnnotatorPerformanceRequest query-parameters: end: type: optional @@ -93,5 +93,7 @@ service: role: role pause: pause username: username + audiences: + - internal source: openapi: openapi/openapi.yaml diff --git a/.mock/openapi/openapi.yaml b/.mock/openapi/openapi.yaml index ff0a9f950..2a58b5928 100644 --- a/.mock/openapi/openapi.yaml +++ b/.mock/openapi/openapi.yaml @@ -155,6 +155,12 @@ paths: summary: Get annotator performance metrics tags: - Analytics + x-fern-audiences: + - internal + x-fern-sdk-group-name: + - organizations + - stats + x-fern-sdk-method-name: annotator_performance /api/annotation-history/: delete: description: |- From 651bb0a6104522a9f1a9155861ef277eb3ca72ef Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Sat, 25 Oct 2025 21:32:19 +0000 Subject: [PATCH 3/5] SDK regeneration --- .mock/definition/__package__.yml | 209 ++++++++++--- .mock/definition/analytics.yml | 38 +++ .mock/definition/organizations/stats.yml | 127 ++++---- .mock/openapi/openapi.yaml | 383 ++++++++++++++++------- 4 files changed, 541 insertions(+), 216 deletions(-) create mode 100644 .mock/definition/analytics.yml diff --git a/.mock/definition/__package__.yml b/.mock/definition/__package__.yml index e7ecedb7a..e8573492f 100644 --- a/.mock/definition/__package__.yml +++ b/.mock/definition/__package__.yml @@ -6,18 +6,18 @@ errors: examples: - value: key: value - ForbiddenError: - status-code: 403 - type: unknown - docs: Organization does not allow to invite people BadRequestError: status-code: 400 type: unknown - docs: '' + docs: Invalid parameters or unsupported KPI type examples: - value: key: value - value: string + ForbiddenError: + status-code: 403 + type: unknown + docs: Organization does not allow to invite people InternalServerError: status-code: 500 type: unknown @@ -692,28 +692,6 @@ types: started_at: optional source: openapi: openapi/openapi.yaml - AnnotatorPerformance: - docs: |- - Response serializer for annotator performance data. - Returns user info and all performance metrics. - properties: - accepted: integer - assigned: integer - avg_time_seconds: optional - fix_accepted: integer - median_time_seconds: optional - pending: integer - performance_score: optional - rejected: integer - skipped: integer - submitted: integer - time_submitting_seconds: optional - time_updating_seconds: optional - total_time_seconds: optional - updated: integer - user: LseUser - source: - openapi: openapi/openapi.yaml AssignmentSettingsLabelStreamTaskDistribution: discriminated: false docs: >- @@ -3073,6 +3051,156 @@ types: docs: Total cost of the inference (in USD) source: openapi: openapi/openapi.yaml + KpiDetailResponse: + docs: |- + Response serializer for KPI detail endpoint. + Structure varies based on segmentation parameters. + properties: + by_user: + type: optional + docs: User-segmented data (compact format with parallel arrays) + kpi_key: + type: string + docs: KPI identifier + kpi_label: + type: optional + docs: Human-readable KPI label + matrix: + type: optional + docs: 2D matrix (time × user) in compact format + segmentation: + type: SegmentationEnum + docs: |- + Type of segmentation applied + + * `none` - none + * `time` - time + * `user` - user + * `matrix` - matrix + time_series: + type: optional + docs: Time-segmented data (compact format with parallel arrays) + total: + type: optional + docs: Total value (no segmentation) + unit: + type: string + docs: 'Unit of measurement: seconds, minutes, hours, count, or ratio' + source: + openapi: openapi/openapi.yaml + KpiMatrixSegment: + docs: |- + Serializer for 2D matrix segmentation (time × user) in compact format. + Returns a 2D array where values[user_index][time_index] corresponds to + users[user_index] at interval_start[time_index]. + properties: + interval_start: + docs: Array of time period start timestamps + type: list + users: + docs: Array of user information + type: list + values: + docs: '2D array of values: values[user_index][time_index]' + type: list>> + source: + openapi: openapi/openapi.yaml + KpiMetadata: + docs: |- + Serializer for KPI metadata information. + Provides information about available KPIs including their keys, labels, + dependencies, and configuration. + properties: + base_class: + type: string + docs: Base class name that the KPI inherits from + calculation_formula: + type: optional> + docs: >- + Formula for calculated KPIs defining how to derive the value from + component KPIs. Structure: {"type": "ratio|sum|difference|product", + "numerator": "kpi_key", "denominator": "kpi_key"} + date_column: + type: optional + docs: Database column used for date filtering and aggregation + depends_on_kpis: + docs: List of other KPI keys that this KPI depends on + type: list + is_calculated: + type: boolean + docs: Whether this KPI is calculated from other KPIs (has dependencies) + is_label_type: + type: boolean + docs: >- + Whether this KPI is a label/filter type that does not show a value per + se + key: + type: string + docs: Unique identifier for the KPI + label: + type: optional + docs: Human-readable label for the KPI + percentage: + type: boolean + docs: 'Whether the KPI value is a percentage (DEPRECATED: use unit)' + unit: + type: string + docs: 'Unit of measurement: seconds, minutes, hours, count, or ratio' + source: + openapi: openapi/openapi.yaml + KpiTimeSegment: + docs: |- + Serializer for time-segmented KPI data (compact format). + Returns parallel arrays: interval_start and values. + properties: + interval_start: + docs: Array of time period start timestamps + type: list + values: + docs: Array of KPI values, one per time period (parallel to interval_start) + type: list> + source: + openapi: openapi/openapi.yaml + KpiUserInfo: + docs: Serializer for user information (compact format). + properties: + user_email: + type: string + docs: User email + validation: + format: email + user_id: + type: integer + docs: User ID + username: + type: string + docs: Username + source: + openapi: openapi/openapi.yaml + KpiUserSegment: + docs: |- + Serializer for user-segmented KPI data (compact format). + Returns parallel arrays: users and values. + properties: + users: + docs: Array of user information + type: list + values: + docs: Array of KPI values, one per user (parallel to users array) + type: list> + source: + openapi: openapi/openapi.yaml + KpiValue: + docs: Serializer for a single KPI value (no segmentation). + properties: + unit: + type: string + docs: 'Unit of measurement: seconds, minutes, hours, count, or ratio' + value: + type: optional + docs: The KPI value in its native unit + source: + openapi: openapi/openapi.yaml LseapiTokenCreate: properties: created_at: string @@ -6038,20 +6166,6 @@ types: results: list source: openapi: openapi/openapi.yaml - PaginatedAnnotatorPerformanceList: - properties: - count: integer - next: - type: optional - validation: - format: uri - previous: - type: optional - validation: - format: uri - results: list - source: - openapi: openapi/openapi.yaml PaginatedLabelCreateList: properties: count: integer @@ -7690,6 +7804,19 @@ types: * `Model` - Model source: openapi: openapi/openapi.yaml + SegmentationEnum: + enum: + - none + - time + - user + - matrix + docs: |- + * `none` - none + * `time` - time + * `user` - user + * `matrix` - matrix + source: + openapi: openapi/openapi.yaml SelectedItemsRequest: properties: all: boolean diff --git a/.mock/definition/analytics.yml b/.mock/definition/analytics.yml new file mode 100644 index 000000000..83e5e8b5c --- /dev/null +++ b/.mock/definition/analytics.yml @@ -0,0 +1,38 @@ +imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + api_analytics_kpis_retrieve: + path: /api/analytics/kpis/ + method: GET + auth: true + docs: >- + Returns metadata for all available KPI (Key Performance Indicator) + classes. Each KPI includes its key, label, base class, dependencies, and + configuration. This endpoint is useful for discovering available metrics + and understanding their relationships and requirements. + source: + openapi: openapi/openapi.yaml + display-name: List all available KPIs + response: + docs: List of available KPIs with metadata + type: list + examples: + - response: + body: + - base_class: base_class + calculation_formula: + key: value + date_column: date_column + depends_on_kpis: + - depends_on_kpis + is_calculated: true + is_label_type: true + key: key + label: label + percentage: true + unit: unit + source: + openapi: openapi/openapi.yaml diff --git a/.mock/definition/organizations/stats.yml b/.mock/definition/organizations/stats.yml index a14ef51a1..0f4607f3f 100644 --- a/.mock/definition/organizations/stats.yml +++ b/.mock/definition/organizations/stats.yml @@ -5,18 +5,23 @@ service: base-path: '' endpoints: annotator_performance: - path: /api/analytics/annotator-performance/ + path: /api/analytics/kpis/{kpi_key} method: GET auth: true docs: >- - Retrieve performance metrics for all annotators in the active - organization. Returns metrics including submitted, pending, accepted, - rejected annotations, performance scores, and time statistics. Supports - filtering by date range, projects, and specific members. Implements - query-level pagination for optimal performance with large organizations. + Retrieve data for a specific KPI with support for filtering and + segmentation. Can segment by time (hourly, daily, weekly, monthly, + yearly), by user, or both (2D matrix). If no segmentation is specified, + returns a single total value. Supports filtering by projects, members, + and date range. Date filters are interpreted in the specified timezone + (required parameter). source: openapi: openapi/openapi.yaml - display-name: Get annotator performance metrics + path-parameters: + kpi_key: + type: string + docs: KPI identifier (key) + display-name: Get KPI data with optional segmentation request: name: StatsAnnotatorPerformanceRequest query-parameters: @@ -24,75 +29,71 @@ service: type: optional docs: End date for filtering (ISO format) members: - type: optional - docs: Comma-separated list of user IDs to filter by - ordering: type: optional docs: >- - Field to order by. Prefix with - for descending. User fields - (efficient): email, username, first_name, last_name. Metric - fields: assigned, pending, submitted, updated, skipped, - performance_score, accepted, rejected, fix_accepted, - total_time_seconds, avg_time_seconds, median_time_seconds. - Default: email - page: - type: optional - docs: A page number within the paginated result set. - page_size: - type: optional - docs: Number of results to return per page. + Comma-separated user IDs. If empty, includes all organization + members. projects: type: optional - docs: Comma-separated list of project IDs to filter by + docs: >- + Comma-separated project IDs. If empty, includes all organization + projects. + segment_by_time: + type: optional + docs: 'Time granularity: hourly, daily, weekly, monthly, yearly' + segment_by_user: + type: optional + docs: Whether to segment results by user start: type: optional docs: Start date for filtering (ISO format) + tz: + type: string + docs: >- + Timezone for date filtering (IANA timezone name, e.g., + "America/New_York", "UTC"). The start and end dates will be + interpreted in this timezone. response: - docs: Annotator performance metrics - type: root.PaginatedAnnotatorPerformanceList + docs: KPI data with requested segmentation + type: root.KpiDetailResponse errors: + - root.BadRequestError - root.NotFoundError examples: - - response: + - path-parameters: + kpi_key: kpi_key + query-parameters: + tz: tz + response: body: - count: 123 - next: http://api.example.org/accounts/?page=4 - previous: http://api.example.org/accounts/?page=2 - results: - - accepted: 1 - assigned: 1 - avg_time_seconds: 1.1 - fix_accepted: 1 - median_time_seconds: 1.1 - pending: 1 - performance_score: 1.1 - rejected: 1 - skipped: 1 - submitted: 1 - time_submitting_seconds: 1.1 - time_updating_seconds: 1.1 - total_time_seconds: 1.1 - updated: 1 - user: - active_organization_meta: active_organization_meta - avatar: avatar - id: 1 - initials: initials - last_activity: '2024-01-15T09:30:00Z' - lse_fields: - email_notification_settings: email_notification_settings - invite_expired: invite_expired - invite_expired_at: invite_expired_at - org_membership: - - active: active - organization_id: 1 - role: role - organization_membership: - active: active - organization_id: 1 - role: role - pause: pause + by_user: + users: + - user_email: user_email + user_id: 1 + username: username + values: + - 1.1 + kpi_key: kpi_key + kpi_label: kpi_label + matrix: + interval_start: + - '2024-01-15T09:30:00Z' + users: + - user_email: user_email + user_id: 1 username: username + values: + - [] + segmentation: none + time_series: + interval_start: + - '2024-01-15T09:30:00Z' + values: + - 1.1 + total: + unit: unit + value: 1.1 + unit: unit audiences: - internal source: diff --git a/.mock/openapi/openapi.yaml b/.mock/openapi/openapi.yaml index 2a58b5928..dc5bf0bff 100644 --- a/.mock/openapi/openapi.yaml +++ b/.mock/openapi/openapi.yaml @@ -97,10 +97,28 @@ paths: - public x-fern-sdk-group-name: activity_logs x-fern-sdk-method-name: list - /api/analytics/annotator-performance/: + /api/analytics/kpis/: get: - description: Retrieve performance metrics for all annotators in the active organization. Returns metrics including submitted, pending, accepted, rejected annotations, performance scores, and time statistics. Supports filtering by date range, projects, and specific members. Implements query-level pagination for optimal performance with large organizations. - operationId: api_analytics_annotator_performance_list + description: Returns metadata for all available KPI (Key Performance Indicator) classes. Each KPI includes its key, label, base class, dependencies, and configuration. This endpoint is useful for discovering available metrics and understanding their relationships and requirements. + operationId: api_analytics_kpis_retrieve + responses: + '200': + content: + application/json: + schema: + items: + $ref: '#/components/schemas/KPIMetadata' + type: array + description: List of available KPIs with metadata + security: + - Token: [] + summary: List all available KPIs + tags: + - Analytics + /api/analytics/kpis/{kpi_key}: + get: + description: Retrieve data for a specific KPI with support for filtering and segmentation. Can segment by time (hourly, daily, weekly, monthly, yearly), by user, or both (2D matrix). If no segmentation is specified, returns a single total value. Supports filtering by projects, members, and date range. Date filters are interpreted in the specified timezone (required parameter). + operationId: api_analytics_kpis_retrieve_2 parameters: - description: End date for filtering (ISO format) in: query @@ -108,51 +126,58 @@ paths: schema: format: date-time type: string - - description: Comma-separated list of user IDs to filter by - in: query - name: members + - description: KPI identifier (key) + in: path + name: kpi_key + required: true schema: type: string - - description: 'Field to order by. Prefix with - for descending. User fields (efficient): email, username, first_name, last_name. Metric fields: assigned, pending, submitted, updated, skipped, performance_score, accepted, rejected, fix_accepted, total_time_seconds, avg_time_seconds, median_time_seconds. Default: email' + - description: Comma-separated user IDs. If empty, includes all organization members. in: query - name: ordering + name: members schema: type: string - - description: A page number within the paginated result set. + - description: Comma-separated project IDs. If empty, includes all organization projects. in: query - name: page - required: false + name: projects schema: - type: integer - - description: Number of results to return per page. + type: string + - description: 'Time granularity: hourly, daily, weekly, monthly, yearly' in: query - name: page_size - required: false + name: segment_by_time schema: - type: integer - - description: Comma-separated list of project IDs to filter by + type: string + - description: Whether to segment results by user in: query - name: projects + name: segment_by_user schema: - type: string + type: boolean - description: Start date for filtering (ISO format) in: query name: start schema: format: date-time type: string + - description: Timezone for date filtering (IANA timezone name, e.g., "America/New_York", "UTC"). The start and end dates will be interpreted in this timezone. + in: query + name: tz + required: true + schema: + type: string responses: '200': content: application/json: schema: - $ref: '#/components/schemas/PaginatedAnnotatorPerformanceList' - description: Annotator performance metrics + $ref: '#/components/schemas/KPIDetailResponse' + description: KPI data with requested segmentation + '400': + description: Invalid parameters or unsupported KPI type '404': - description: Organization not found + description: KPI not found or organization not found security: - Token: [] - summary: Get annotator performance metrics + summary: Get KPI data with optional segmentation tags: - Analytics x-fern-audiences: @@ -19851,72 +19876,6 @@ components: required: - annotation type: object - AnnotatorPerformance: - description: |- - Response serializer for annotator performance data. - Returns user info and all performance metrics. - properties: - accepted: - type: integer - assigned: - type: integer - avg_time_seconds: - format: double - nullable: true - type: number - fix_accepted: - type: integer - median_time_seconds: - format: double - nullable: true - type: number - pending: - type: integer - performance_score: - format: double - nullable: true - type: number - rejected: - type: integer - skipped: - type: integer - submitted: - type: integer - time_submitting_seconds: - format: double - nullable: true - type: number - time_updating_seconds: - format: double - nullable: true - type: number - total_time_seconds: - format: double - nullable: true - type: number - updated: - type: integer - user: - allOf: - - $ref: '#/components/schemas/LseUser' - readOnly: true - required: - - accepted - - assigned - - avg_time_seconds - - fix_accepted - - median_time_seconds - - pending - - performance_score - - rejected - - skipped - - submitted - - time_submitting_seconds - - time_updating_seconds - - total_time_seconds - - updated - - user - type: object AssignmentSettings: properties: id: @@ -23082,6 +23041,217 @@ components: nullable: true type: string type: object + KPIDetailResponse: + description: |- + Response serializer for KPI detail endpoint. + Structure varies based on segmentation parameters. + properties: + by_user: + allOf: + - $ref: '#/components/schemas/KPIUserSegment' + description: User-segmented data (compact format with parallel arrays) + nullable: true + kpi_key: + description: KPI identifier + type: string + kpi_label: + description: Human-readable KPI label + nullable: true + type: string + matrix: + allOf: + - $ref: '#/components/schemas/KPIMatrixSegment' + description: 2D matrix (time × user) in compact format + nullable: true + segmentation: + allOf: + - $ref: '#/components/schemas/SegmentationEnum' + description: |- + Type of segmentation applied + + * `none` - none + * `time` - time + * `user` - user + * `matrix` - matrix + time_series: + allOf: + - $ref: '#/components/schemas/KPITimeSegment' + description: Time-segmented data (compact format with parallel arrays) + nullable: true + total: + allOf: + - $ref: '#/components/schemas/KPIValue' + description: Total value (no segmentation) + nullable: true + unit: + description: 'Unit of measurement: seconds, minutes, hours, count, or ratio' + type: string + required: + - kpi_key + - kpi_label + - segmentation + - unit + type: object + KPIMatrixSegment: + description: |- + Serializer for 2D matrix segmentation (time × user) in compact format. + Returns a 2D array where values[user_index][time_index] corresponds to + users[user_index] at interval_start[time_index]. + properties: + interval_start: + description: Array of time period start timestamps + items: + format: date-time + type: string + type: array + users: + description: Array of user information + items: + $ref: '#/components/schemas/KPIUserInfo' + type: array + values: + description: '2D array of values: values[user_index][time_index]' + items: + items: + format: double + nullable: true + type: number + type: array + type: array + required: + - interval_start + - users + - values + type: object + KPIMetadata: + description: |- + Serializer for KPI metadata information. + Provides information about available KPIs including their keys, labels, + dependencies, and configuration. + properties: + base_class: + description: Base class name that the KPI inherits from + type: string + calculation_formula: + additionalProperties: {} + description: 'Formula for calculated KPIs defining how to derive the value from component KPIs. Structure: {"type": "ratio|sum|difference|product", "numerator": "kpi_key", "denominator": "kpi_key"}' + nullable: true + type: object + date_column: + description: Database column used for date filtering and aggregation + nullable: true + type: string + depends_on_kpis: + description: List of other KPI keys that this KPI depends on + items: + type: string + type: array + is_calculated: + description: Whether this KPI is calculated from other KPIs (has dependencies) + type: boolean + is_label_type: + description: Whether this KPI is a label/filter type that does not show a value per se + type: boolean + key: + description: Unique identifier for the KPI + type: string + label: + description: Human-readable label for the KPI + nullable: true + type: string + percentage: + description: 'Whether the KPI value is a percentage (DEPRECATED: use unit)' + type: boolean + unit: + description: 'Unit of measurement: seconds, minutes, hours, count, or ratio' + type: string + required: + - base_class + - date_column + - depends_on_kpis + - is_calculated + - is_label_type + - key + - label + - percentage + - unit + type: object + KPITimeSegment: + description: |- + Serializer for time-segmented KPI data (compact format). + Returns parallel arrays: interval_start and values. + properties: + interval_start: + description: Array of time period start timestamps + items: + format: date-time + type: string + type: array + values: + description: Array of KPI values, one per time period (parallel to interval_start) + items: + format: double + nullable: true + type: number + type: array + required: + - interval_start + - values + type: object + KPIUserInfo: + description: Serializer for user information (compact format). + properties: + user_email: + description: User email + format: email + type: string + user_id: + description: User ID + type: integer + username: + description: Username + type: string + required: + - user_email + - user_id + - username + type: object + KPIUserSegment: + description: |- + Serializer for user-segmented KPI data (compact format). + Returns parallel arrays: users and values. + properties: + users: + description: Array of user information + items: + $ref: '#/components/schemas/KPIUserInfo' + type: array + values: + description: Array of KPI values, one per user (parallel to users array) + items: + format: double + nullable: true + type: number + type: array + required: + - users + - values + type: object + KPIValue: + description: Serializer for a single KPI value (no segmentation). + properties: + unit: + description: 'Unit of measurement: seconds, minutes, hours, count, or ratio' + type: string + value: + description: The KPI value in its native unit + format: double + nullable: true + type: number + required: + - unit + - value + type: object LSAPITokenBlacklistRequest: properties: refresh: @@ -27388,29 +27558,6 @@ components: - count - results type: object - PaginatedAnnotatorPerformanceList: - properties: - count: - example: 123 - type: integer - next: - example: http://api.example.org/accounts/?page=4 - format: uri - nullable: true - type: string - previous: - example: http://api.example.org/accounts/?page=2 - format: uri - nullable: true - type: string - results: - items: - $ref: '#/components/schemas/AnnotatorPerformance' - type: array - required: - - count - - results - type: object PaginatedLabelCreateList: properties: count: @@ -31481,6 +31628,18 @@ components: - User - Model type: string + SegmentationEnum: + description: |- + * `none` - none + * `time` - time + * `user` - user + * `matrix` - matrix + enum: + - none + - time + - user + - matrix + type: string SelectedItemsRequest: properties: all: From 336f3f03ad55b0f72015fcfd2a28775586548cea Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Sat, 25 Oct 2025 21:52:37 +0000 Subject: [PATCH 4/5] SDK regeneration --- .mock/definition/analytics.yml | 90 ++++++++++++++++++++ .mock/definition/organizations/stats.yml | 100 ----------------------- .mock/openapi/openapi.yaml | 6 -- 3 files changed, 90 insertions(+), 106 deletions(-) delete mode 100644 .mock/definition/organizations/stats.yml diff --git a/.mock/definition/analytics.yml b/.mock/definition/analytics.yml index 83e5e8b5c..7a9373aa3 100644 --- a/.mock/definition/analytics.yml +++ b/.mock/definition/analytics.yml @@ -34,5 +34,95 @@ service: label: label percentage: true unit: unit + api_analytics_kpis_retrieve_2: + path: /api/analytics/kpis/{kpi_key} + method: GET + auth: true + docs: >- + Retrieve data for a specific KPI with support for filtering and + segmentation. Can segment by time (hourly, daily, weekly, monthly, + yearly), by user, or both (2D matrix). If no segmentation is specified, + returns a single total value. Supports filtering by projects, members, + and date range. Date filters are interpreted in the specified timezone + (required parameter). + source: + openapi: openapi/openapi.yaml + path-parameters: + kpi_key: + type: string + docs: KPI identifier (key) + display-name: Get KPI data with optional segmentation + request: + name: ApiAnalyticsKpisRetrieve2Request + query-parameters: + end: + type: optional + docs: End date for filtering (ISO format) + members: + type: optional + docs: >- + Comma-separated user IDs. If empty, includes all organization + members. + projects: + type: optional + docs: >- + Comma-separated project IDs. If empty, includes all organization + projects. + segment_by_time: + type: optional + docs: 'Time granularity: hourly, daily, weekly, monthly, yearly' + segment_by_user: + type: optional + docs: Whether to segment results by user + start: + type: optional + docs: Start date for filtering (ISO format) + tz: + type: string + docs: >- + Timezone for date filtering (IANA timezone name, e.g., + "America/New_York", "UTC"). The start and end dates will be + interpreted in this timezone. + response: + docs: KPI data with requested segmentation + type: root.KpiDetailResponse + errors: + - root.BadRequestError + - root.NotFoundError + examples: + - path-parameters: + kpi_key: kpi_key + query-parameters: + tz: tz + response: + body: + by_user: + users: + - user_email: user_email + user_id: 1 + username: username + values: + - 1.1 + kpi_key: kpi_key + kpi_label: kpi_label + matrix: + interval_start: + - '2024-01-15T09:30:00Z' + users: + - user_email: user_email + user_id: 1 + username: username + values: + - [] + segmentation: none + time_series: + interval_start: + - '2024-01-15T09:30:00Z' + values: + - 1.1 + total: + unit: unit + value: 1.1 + unit: unit source: openapi: openapi/openapi.yaml diff --git a/.mock/definition/organizations/stats.yml b/.mock/definition/organizations/stats.yml deleted file mode 100644 index 0f4607f3f..000000000 --- a/.mock/definition/organizations/stats.yml +++ /dev/null @@ -1,100 +0,0 @@ -imports: - root: ../__package__.yml -service: - auth: false - base-path: '' - endpoints: - annotator_performance: - path: /api/analytics/kpis/{kpi_key} - method: GET - auth: true - docs: >- - Retrieve data for a specific KPI with support for filtering and - segmentation. Can segment by time (hourly, daily, weekly, monthly, - yearly), by user, or both (2D matrix). If no segmentation is specified, - returns a single total value. Supports filtering by projects, members, - and date range. Date filters are interpreted in the specified timezone - (required parameter). - source: - openapi: openapi/openapi.yaml - path-parameters: - kpi_key: - type: string - docs: KPI identifier (key) - display-name: Get KPI data with optional segmentation - request: - name: StatsAnnotatorPerformanceRequest - query-parameters: - end: - type: optional - docs: End date for filtering (ISO format) - members: - type: optional - docs: >- - Comma-separated user IDs. If empty, includes all organization - members. - projects: - type: optional - docs: >- - Comma-separated project IDs. If empty, includes all organization - projects. - segment_by_time: - type: optional - docs: 'Time granularity: hourly, daily, weekly, monthly, yearly' - segment_by_user: - type: optional - docs: Whether to segment results by user - start: - type: optional - docs: Start date for filtering (ISO format) - tz: - type: string - docs: >- - Timezone for date filtering (IANA timezone name, e.g., - "America/New_York", "UTC"). The start and end dates will be - interpreted in this timezone. - response: - docs: KPI data with requested segmentation - type: root.KpiDetailResponse - errors: - - root.BadRequestError - - root.NotFoundError - examples: - - path-parameters: - kpi_key: kpi_key - query-parameters: - tz: tz - response: - body: - by_user: - users: - - user_email: user_email - user_id: 1 - username: username - values: - - 1.1 - kpi_key: kpi_key - kpi_label: kpi_label - matrix: - interval_start: - - '2024-01-15T09:30:00Z' - users: - - user_email: user_email - user_id: 1 - username: username - values: - - [] - segmentation: none - time_series: - interval_start: - - '2024-01-15T09:30:00Z' - values: - - 1.1 - total: - unit: unit - value: 1.1 - unit: unit - audiences: - - internal - source: - openapi: openapi/openapi.yaml diff --git a/.mock/openapi/openapi.yaml b/.mock/openapi/openapi.yaml index dc5bf0bff..9f16e21c6 100644 --- a/.mock/openapi/openapi.yaml +++ b/.mock/openapi/openapi.yaml @@ -180,12 +180,6 @@ paths: summary: Get KPI data with optional segmentation tags: - Analytics - x-fern-audiences: - - internal - x-fern-sdk-group-name: - - organizations - - stats - x-fern-sdk-method-name: annotator_performance /api/annotation-history/: delete: description: |- From 50092905e985f5c0cc902acb3b2665fc9f8a4833 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 14:14:22 +0000 Subject: [PATCH 5/5] SDK regeneration