label-studio-sdk 2.0.3__py3-none-any.whl → 2.0.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of label-studio-sdk might be problematic. Click here for more details.
- label_studio_sdk/__init__.py +18 -0
- label_studio_sdk/activity_logs/__init__.py +5 -0
- label_studio_sdk/activity_logs/client.py +246 -0
- label_studio_sdk/activity_logs/types/__init__.py +5 -0
- label_studio_sdk/activity_logs/types/activity_logs_list_request_method.py +5 -0
- label_studio_sdk/base_client.py +4 -0
- label_studio_sdk/errors/internal_server_error.py +2 -1
- label_studio_sdk/label_interface/interface.py +0 -4
- label_studio_sdk/ml/client.py +4 -4
- label_studio_sdk/projects/__init__.py +14 -2
- label_studio_sdk/projects/client.py +4 -0
- label_studio_sdk/projects/members/__init__.py +4 -0
- label_studio_sdk/projects/members/bulk/__init__.py +5 -0
- label_studio_sdk/projects/members/bulk/client.py +273 -0
- label_studio_sdk/projects/members/bulk/types/__init__.py +6 -0
- label_studio_sdk/projects/members/bulk/types/bulk_delete_response.py +19 -0
- label_studio_sdk/projects/members/bulk/types/bulk_post_response.py +19 -0
- label_studio_sdk/projects/members/client.py +4 -0
- label_studio_sdk/projects/metrics/__init__.py +6 -0
- label_studio_sdk/projects/metrics/client.py +282 -0
- label_studio_sdk/projects/metrics/custom/__init__.py +5 -0
- label_studio_sdk/projects/metrics/custom/client.py +535 -0
- label_studio_sdk/projects/metrics/custom/types/__init__.py +5 -0
- label_studio_sdk/projects/metrics/custom/types/custom_get_lambda_response.py +19 -0
- label_studio_sdk/projects/stats/__init__.py +18 -2
- label_studio_sdk/projects/stats/client.py +129 -0
- label_studio_sdk/projects/stats/types/__init__.py +12 -1
- label_studio_sdk/projects/stats/types/stats_total_agreement_response.py +7 -0
- label_studio_sdk/projects/stats/types/stats_total_agreement_response_one.py +19 -0
- label_studio_sdk/projects/stats/types/stats_total_agreement_response_zero.py +19 -0
- label_studio_sdk/types/__init__.py +14 -0
- label_studio_sdk/types/activity_log.py +49 -0
- label_studio_sdk/types/activity_log_response.py +28 -0
- label_studio_sdk/types/metric_param.py +31 -0
- label_studio_sdk/types/who_am_i_lse_fields.py +50 -0
- label_studio_sdk/types/who_am_i_lse_fields_onboarding_state.py +8 -0
- label_studio_sdk/types/who_am_i_lse_fields_trial_role.py +8 -0
- label_studio_sdk/types/who_am_i_user.py +49 -0
- label_studio_sdk/users/client.py +9 -8
- label_studio_sdk/workspaces/members/__init__.py +4 -0
- label_studio_sdk/workspaces/members/bulk/__init__.py +5 -0
- label_studio_sdk/workspaces/members/bulk/client.py +273 -0
- label_studio_sdk/workspaces/members/bulk/types/__init__.py +6 -0
- label_studio_sdk/workspaces/members/bulk/types/bulk_delete_response.py +19 -0
- label_studio_sdk/workspaces/members/bulk/types/bulk_post_response.py +19 -0
- label_studio_sdk/workspaces/members/client.py +4 -0
- {label_studio_sdk-2.0.3.dist-info → label_studio_sdk-2.0.5.dist-info}/METADATA +1 -1
- {label_studio_sdk-2.0.3.dist-info → label_studio_sdk-2.0.5.dist-info}/RECORD +50 -20
- {label_studio_sdk-2.0.3.dist-info → label_studio_sdk-2.0.5.dist-info}/LICENSE +0 -0
- {label_studio_sdk-2.0.3.dist-info → label_studio_sdk-2.0.5.dist-info}/WHEEL +0 -0
label_studio_sdk/__init__.py
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from .types import (
|
|
4
4
|
ActionsEnum,
|
|
5
|
+
ActivityLog,
|
|
6
|
+
ActivityLogResponse,
|
|
5
7
|
AllRolesProjectList,
|
|
6
8
|
AllRolesProjectListSampling,
|
|
7
9
|
AllRolesProjectListSkipQueue,
|
|
@@ -98,6 +100,7 @@ from .types import (
|
|
|
98
100
|
LseapiTokenList,
|
|
99
101
|
LsejwtSettings,
|
|
100
102
|
MaybeExpandedComment,
|
|
103
|
+
MetricParam,
|
|
101
104
|
MlBackend,
|
|
102
105
|
ModeEnum,
|
|
103
106
|
ModelInterface,
|
|
@@ -181,6 +184,10 @@ from .types import (
|
|
|
181
184
|
View,
|
|
182
185
|
Webhook,
|
|
183
186
|
WebhookSerializerForUpdate,
|
|
187
|
+
WhoAmILseFields,
|
|
188
|
+
WhoAmILseFieldsOnboardingState,
|
|
189
|
+
WhoAmILseFieldsTrialRole,
|
|
190
|
+
WhoAmIUser,
|
|
184
191
|
Workspace,
|
|
185
192
|
WorkspaceMemberCreate,
|
|
186
193
|
WorkspaceMemberList,
|
|
@@ -195,6 +202,7 @@ from .errors import (
|
|
|
195
202
|
)
|
|
196
203
|
from . import (
|
|
197
204
|
actions,
|
|
205
|
+
activity_logs,
|
|
198
206
|
annotations,
|
|
199
207
|
billing,
|
|
200
208
|
comments,
|
|
@@ -233,6 +241,7 @@ from .actions import (
|
|
|
233
241
|
ActionsListResponseItem,
|
|
234
242
|
ActionsListResponseItemDialog,
|
|
235
243
|
)
|
|
244
|
+
from .activity_logs import ActivityLogsListRequestMethod
|
|
236
245
|
from .annotations import AnnotationBulkSerializerWithSelectedItemsRequestLastAction, AnnotationsCreateBulkResponseItem
|
|
237
246
|
from .client import AsyncLabelStudio, LabelStudio
|
|
238
247
|
from .environment import LabelStudioEnvironment
|
|
@@ -305,6 +314,9 @@ __all__ = [
|
|
|
305
314
|
"ActionsEnum",
|
|
306
315
|
"ActionsListResponseItem",
|
|
307
316
|
"ActionsListResponseItemDialog",
|
|
317
|
+
"ActivityLog",
|
|
318
|
+
"ActivityLogResponse",
|
|
319
|
+
"ActivityLogsListRequestMethod",
|
|
308
320
|
"AllRolesProjectList",
|
|
309
321
|
"AllRolesProjectListSampling",
|
|
310
322
|
"AllRolesProjectListSkipQueue",
|
|
@@ -415,6 +427,7 @@ __all__ = [
|
|
|
415
427
|
"LsejwtSettings",
|
|
416
428
|
"MaybeExpandedComment",
|
|
417
429
|
"MethodNotAllowedError",
|
|
430
|
+
"MetricParam",
|
|
418
431
|
"MlBackend",
|
|
419
432
|
"MlCreateRequestAuthMethod",
|
|
420
433
|
"MlListModelVersionsResponse",
|
|
@@ -545,11 +558,16 @@ __all__ = [
|
|
|
545
558
|
"WebhooksInfoResponseReviewsDeleted",
|
|
546
559
|
"WebhooksInfoResponseTasksCreated",
|
|
547
560
|
"WebhooksInfoResponseTasksDeleted",
|
|
561
|
+
"WhoAmILseFields",
|
|
562
|
+
"WhoAmILseFieldsOnboardingState",
|
|
563
|
+
"WhoAmILseFieldsTrialRole",
|
|
564
|
+
"WhoAmIUser",
|
|
548
565
|
"Workspace",
|
|
549
566
|
"WorkspaceMemberCreate",
|
|
550
567
|
"WorkspaceMemberList",
|
|
551
568
|
"__version__",
|
|
552
569
|
"actions",
|
|
570
|
+
"activity_logs",
|
|
553
571
|
"annotations",
|
|
554
572
|
"billing",
|
|
555
573
|
"comments",
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from ..core.client_wrapper import SyncClientWrapper
|
|
4
|
+
import typing
|
|
5
|
+
from .types.activity_logs_list_request_method import ActivityLogsListRequestMethod
|
|
6
|
+
from ..core.request_options import RequestOptions
|
|
7
|
+
from ..types.activity_log_response import ActivityLogResponse
|
|
8
|
+
from ..core.unchecked_base_model import construct_type
|
|
9
|
+
from ..errors.not_found_error import NotFoundError
|
|
10
|
+
from json.decoder import JSONDecodeError
|
|
11
|
+
from ..core.api_error import ApiError
|
|
12
|
+
from ..core.client_wrapper import AsyncClientWrapper
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ActivityLogsClient:
|
|
16
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
17
|
+
self._client_wrapper = client_wrapper
|
|
18
|
+
|
|
19
|
+
def list(
|
|
20
|
+
self,
|
|
21
|
+
*,
|
|
22
|
+
end_date: typing.Optional[str] = None,
|
|
23
|
+
method: typing.Optional[ActivityLogsListRequestMethod] = None,
|
|
24
|
+
ordering: typing.Optional[str] = None,
|
|
25
|
+
page: typing.Optional[int] = None,
|
|
26
|
+
page_size: typing.Optional[int] = None,
|
|
27
|
+
project: typing.Optional[int] = None,
|
|
28
|
+
search: typing.Optional[str] = None,
|
|
29
|
+
start_date: typing.Optional[str] = None,
|
|
30
|
+
user: typing.Optional[int] = None,
|
|
31
|
+
workspace: typing.Optional[int] = None,
|
|
32
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
33
|
+
) -> typing.List[ActivityLogResponse]:
|
|
34
|
+
"""
|
|
35
|
+
Retrieve activity logs filtered by workspace, project, user, HTTP method, date range or search query.
|
|
36
|
+
|
|
37
|
+
Parameters
|
|
38
|
+
----------
|
|
39
|
+
end_date : typing.Optional[str]
|
|
40
|
+
End date/time (ISO-8601) for log filtering.
|
|
41
|
+
|
|
42
|
+
method : typing.Optional[ActivityLogsListRequestMethod]
|
|
43
|
+
HTTP request method used in the log.
|
|
44
|
+
|
|
45
|
+
ordering : typing.Optional[str]
|
|
46
|
+
Which field to use when ordering the results.
|
|
47
|
+
|
|
48
|
+
page : typing.Optional[int]
|
|
49
|
+
[or "start"] Current page index.
|
|
50
|
+
|
|
51
|
+
page_size : typing.Optional[int]
|
|
52
|
+
[or "length"] Logs per page, use -1 to obtain all logs (might be slow).
|
|
53
|
+
|
|
54
|
+
project : typing.Optional[int]
|
|
55
|
+
Project ID to filter logs.
|
|
56
|
+
|
|
57
|
+
search : typing.Optional[str]
|
|
58
|
+
Search expression using "AND"/"OR" to filter by request URL.
|
|
59
|
+
|
|
60
|
+
start_date : typing.Optional[str]
|
|
61
|
+
Start date/time (ISO-8601) for log filtering.
|
|
62
|
+
|
|
63
|
+
user : typing.Optional[int]
|
|
64
|
+
User ID to filter logs.
|
|
65
|
+
|
|
66
|
+
workspace : typing.Optional[int]
|
|
67
|
+
Workspace owner ID to filter logs.
|
|
68
|
+
|
|
69
|
+
request_options : typing.Optional[RequestOptions]
|
|
70
|
+
Request-specific configuration.
|
|
71
|
+
|
|
72
|
+
Returns
|
|
73
|
+
-------
|
|
74
|
+
typing.List[ActivityLogResponse]
|
|
75
|
+
Activity logs
|
|
76
|
+
|
|
77
|
+
Examples
|
|
78
|
+
--------
|
|
79
|
+
from label_studio_sdk import LabelStudio
|
|
80
|
+
|
|
81
|
+
client = LabelStudio(
|
|
82
|
+
api_key="YOUR_API_KEY",
|
|
83
|
+
)
|
|
84
|
+
client.activity_logs.list()
|
|
85
|
+
"""
|
|
86
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
87
|
+
"api/activity-logs/",
|
|
88
|
+
method="GET",
|
|
89
|
+
params={
|
|
90
|
+
"end_date": end_date,
|
|
91
|
+
"method": method,
|
|
92
|
+
"ordering": ordering,
|
|
93
|
+
"page": page,
|
|
94
|
+
"page_size": page_size,
|
|
95
|
+
"project": project,
|
|
96
|
+
"search": search,
|
|
97
|
+
"start_date": start_date,
|
|
98
|
+
"user": user,
|
|
99
|
+
"workspace": workspace,
|
|
100
|
+
},
|
|
101
|
+
request_options=request_options,
|
|
102
|
+
)
|
|
103
|
+
try:
|
|
104
|
+
if 200 <= _response.status_code < 300:
|
|
105
|
+
return typing.cast(
|
|
106
|
+
typing.List[ActivityLogResponse],
|
|
107
|
+
construct_type(
|
|
108
|
+
type_=typing.List[ActivityLogResponse], # type: ignore
|
|
109
|
+
object_=_response.json(),
|
|
110
|
+
),
|
|
111
|
+
)
|
|
112
|
+
if _response.status_code == 404:
|
|
113
|
+
raise NotFoundError(
|
|
114
|
+
typing.cast(
|
|
115
|
+
typing.Optional[typing.Any],
|
|
116
|
+
construct_type(
|
|
117
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
118
|
+
object_=_response.json(),
|
|
119
|
+
),
|
|
120
|
+
)
|
|
121
|
+
)
|
|
122
|
+
_response_json = _response.json()
|
|
123
|
+
except JSONDecodeError:
|
|
124
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
125
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class AsyncActivityLogsClient:
|
|
129
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
130
|
+
self._client_wrapper = client_wrapper
|
|
131
|
+
|
|
132
|
+
async def list(
|
|
133
|
+
self,
|
|
134
|
+
*,
|
|
135
|
+
end_date: typing.Optional[str] = None,
|
|
136
|
+
method: typing.Optional[ActivityLogsListRequestMethod] = None,
|
|
137
|
+
ordering: typing.Optional[str] = None,
|
|
138
|
+
page: typing.Optional[int] = None,
|
|
139
|
+
page_size: typing.Optional[int] = None,
|
|
140
|
+
project: typing.Optional[int] = None,
|
|
141
|
+
search: typing.Optional[str] = None,
|
|
142
|
+
start_date: typing.Optional[str] = None,
|
|
143
|
+
user: typing.Optional[int] = None,
|
|
144
|
+
workspace: typing.Optional[int] = None,
|
|
145
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
146
|
+
) -> typing.List[ActivityLogResponse]:
|
|
147
|
+
"""
|
|
148
|
+
Retrieve activity logs filtered by workspace, project, user, HTTP method, date range or search query.
|
|
149
|
+
|
|
150
|
+
Parameters
|
|
151
|
+
----------
|
|
152
|
+
end_date : typing.Optional[str]
|
|
153
|
+
End date/time (ISO-8601) for log filtering.
|
|
154
|
+
|
|
155
|
+
method : typing.Optional[ActivityLogsListRequestMethod]
|
|
156
|
+
HTTP request method used in the log.
|
|
157
|
+
|
|
158
|
+
ordering : typing.Optional[str]
|
|
159
|
+
Which field to use when ordering the results.
|
|
160
|
+
|
|
161
|
+
page : typing.Optional[int]
|
|
162
|
+
[or "start"] Current page index.
|
|
163
|
+
|
|
164
|
+
page_size : typing.Optional[int]
|
|
165
|
+
[or "length"] Logs per page, use -1 to obtain all logs (might be slow).
|
|
166
|
+
|
|
167
|
+
project : typing.Optional[int]
|
|
168
|
+
Project ID to filter logs.
|
|
169
|
+
|
|
170
|
+
search : typing.Optional[str]
|
|
171
|
+
Search expression using "AND"/"OR" to filter by request URL.
|
|
172
|
+
|
|
173
|
+
start_date : typing.Optional[str]
|
|
174
|
+
Start date/time (ISO-8601) for log filtering.
|
|
175
|
+
|
|
176
|
+
user : typing.Optional[int]
|
|
177
|
+
User ID to filter logs.
|
|
178
|
+
|
|
179
|
+
workspace : typing.Optional[int]
|
|
180
|
+
Workspace owner ID to filter logs.
|
|
181
|
+
|
|
182
|
+
request_options : typing.Optional[RequestOptions]
|
|
183
|
+
Request-specific configuration.
|
|
184
|
+
|
|
185
|
+
Returns
|
|
186
|
+
-------
|
|
187
|
+
typing.List[ActivityLogResponse]
|
|
188
|
+
Activity logs
|
|
189
|
+
|
|
190
|
+
Examples
|
|
191
|
+
--------
|
|
192
|
+
import asyncio
|
|
193
|
+
|
|
194
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
195
|
+
|
|
196
|
+
client = AsyncLabelStudio(
|
|
197
|
+
api_key="YOUR_API_KEY",
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
async def main() -> None:
|
|
202
|
+
await client.activity_logs.list()
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
asyncio.run(main())
|
|
206
|
+
"""
|
|
207
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
208
|
+
"api/activity-logs/",
|
|
209
|
+
method="GET",
|
|
210
|
+
params={
|
|
211
|
+
"end_date": end_date,
|
|
212
|
+
"method": method,
|
|
213
|
+
"ordering": ordering,
|
|
214
|
+
"page": page,
|
|
215
|
+
"page_size": page_size,
|
|
216
|
+
"project": project,
|
|
217
|
+
"search": search,
|
|
218
|
+
"start_date": start_date,
|
|
219
|
+
"user": user,
|
|
220
|
+
"workspace": workspace,
|
|
221
|
+
},
|
|
222
|
+
request_options=request_options,
|
|
223
|
+
)
|
|
224
|
+
try:
|
|
225
|
+
if 200 <= _response.status_code < 300:
|
|
226
|
+
return typing.cast(
|
|
227
|
+
typing.List[ActivityLogResponse],
|
|
228
|
+
construct_type(
|
|
229
|
+
type_=typing.List[ActivityLogResponse], # type: ignore
|
|
230
|
+
object_=_response.json(),
|
|
231
|
+
),
|
|
232
|
+
)
|
|
233
|
+
if _response.status_code == 404:
|
|
234
|
+
raise NotFoundError(
|
|
235
|
+
typing.cast(
|
|
236
|
+
typing.Optional[typing.Any],
|
|
237
|
+
construct_type(
|
|
238
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
239
|
+
object_=_response.json(),
|
|
240
|
+
),
|
|
241
|
+
)
|
|
242
|
+
)
|
|
243
|
+
_response_json = _response.json()
|
|
244
|
+
except JSONDecodeError:
|
|
245
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
246
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
label_studio_sdk/base_client.py
CHANGED
|
@@ -6,6 +6,7 @@ import os
|
|
|
6
6
|
import httpx
|
|
7
7
|
from .core.api_error import ApiError
|
|
8
8
|
from .core.client_wrapper import SyncClientWrapper
|
|
9
|
+
from .activity_logs.client import ActivityLogsClient
|
|
9
10
|
from .annotations.client import AnnotationsClient
|
|
10
11
|
from .billing.client import BillingClient
|
|
11
12
|
from .comments.client import CommentsClient
|
|
@@ -29,6 +30,7 @@ from .webhooks.client import WebhooksClient
|
|
|
29
30
|
from .workspaces.client import WorkspacesClient
|
|
30
31
|
from .sso.client import SsoClient
|
|
31
32
|
from .core.client_wrapper import AsyncClientWrapper
|
|
33
|
+
from .activity_logs.client import AsyncActivityLogsClient
|
|
32
34
|
from .annotations.client import AsyncAnnotationsClient
|
|
33
35
|
from .billing.client import AsyncBillingClient
|
|
34
36
|
from .comments.client import AsyncCommentsClient
|
|
@@ -115,6 +117,7 @@ class LabelStudioBase:
|
|
|
115
117
|
else httpx.Client(timeout=_defaulted_timeout),
|
|
116
118
|
timeout=_defaulted_timeout,
|
|
117
119
|
)
|
|
120
|
+
self.activity_logs = ActivityLogsClient(client_wrapper=self._client_wrapper)
|
|
118
121
|
self.annotations = AnnotationsClient(client_wrapper=self._client_wrapper)
|
|
119
122
|
self.billing = BillingClient(client_wrapper=self._client_wrapper)
|
|
120
123
|
self.comments = CommentsClient(client_wrapper=self._client_wrapper)
|
|
@@ -201,6 +204,7 @@ class AsyncLabelStudioBase:
|
|
|
201
204
|
else httpx.AsyncClient(timeout=_defaulted_timeout),
|
|
202
205
|
timeout=_defaulted_timeout,
|
|
203
206
|
)
|
|
207
|
+
self.activity_logs = AsyncActivityLogsClient(client_wrapper=self._client_wrapper)
|
|
204
208
|
self.annotations = AsyncAnnotationsClient(client_wrapper=self._client_wrapper)
|
|
205
209
|
self.billing = AsyncBillingClient(client_wrapper=self._client_wrapper)
|
|
206
210
|
self.comments = AsyncCommentsClient(client_wrapper=self._client_wrapper)
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
3
|
from ..core.api_error import ApiError
|
|
4
|
+
import typing
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
class InternalServerError(ApiError):
|
|
7
|
-
def __init__(self, body:
|
|
8
|
+
def __init__(self, body: typing.Optional[typing.Any]):
|
|
8
9
|
super().__init__(status_code=500, body=body)
|
|
@@ -762,10 +762,6 @@ class LabelInterface:
|
|
|
762
762
|
errors.append(f"'{RESULT_KEY}' must be a list")
|
|
763
763
|
return errors
|
|
764
764
|
|
|
765
|
-
if not result:
|
|
766
|
-
errors.append(f"'{RESULT_KEY}' cannot be empty")
|
|
767
|
-
return errors
|
|
768
|
-
|
|
769
765
|
# Validate score if present
|
|
770
766
|
if 'score' in obj:
|
|
771
767
|
score = obj['score']
|
label_studio_sdk/ml/client.py
CHANGED
|
@@ -516,9 +516,9 @@ class MlClient:
|
|
|
516
516
|
if _response.status_code == 500:
|
|
517
517
|
raise InternalServerError(
|
|
518
518
|
typing.cast(
|
|
519
|
-
|
|
519
|
+
typing.Optional[typing.Any],
|
|
520
520
|
construct_type(
|
|
521
|
-
type_=
|
|
521
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
522
522
|
object_=_response.json(),
|
|
523
523
|
),
|
|
524
524
|
)
|
|
@@ -1131,9 +1131,9 @@ class AsyncMlClient:
|
|
|
1131
1131
|
if _response.status_code == 500:
|
|
1132
1132
|
raise InternalServerError(
|
|
1133
1133
|
typing.cast(
|
|
1134
|
-
|
|
1134
|
+
typing.Optional[typing.Any],
|
|
1135
1135
|
construct_type(
|
|
1136
|
-
type_=
|
|
1136
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1137
1137
|
object_=_response.json(),
|
|
1138
1138
|
),
|
|
1139
1139
|
)
|
|
@@ -9,7 +9,7 @@ from .types import (
|
|
|
9
9
|
ProjectsImportTasksResponse,
|
|
10
10
|
ProjectsListRequestFilter,
|
|
11
11
|
)
|
|
12
|
-
from . import assignments, exports, members, pauses, stats
|
|
12
|
+
from . import assignments, exports, members, metrics, pauses, stats
|
|
13
13
|
from .assignments import (
|
|
14
14
|
AssignmentsAssignRequestType,
|
|
15
15
|
AssignmentsBulkAssignRequestFilters,
|
|
@@ -27,7 +27,15 @@ from .assignments import (
|
|
|
27
27
|
AssignmentsUpdateRequestType,
|
|
28
28
|
)
|
|
29
29
|
from .exports import ExportsConvertResponse
|
|
30
|
-
from .stats import
|
|
30
|
+
from .stats import (
|
|
31
|
+
StatsIaaResponse,
|
|
32
|
+
StatsIaaResponseCommonTasks,
|
|
33
|
+
StatsIaaResponseIaa,
|
|
34
|
+
StatsIaaResponseStd,
|
|
35
|
+
StatsTotalAgreementResponse,
|
|
36
|
+
StatsTotalAgreementResponseOne,
|
|
37
|
+
StatsTotalAgreementResponseZero,
|
|
38
|
+
)
|
|
31
39
|
|
|
32
40
|
__all__ = [
|
|
33
41
|
"AssignmentsAssignRequestType",
|
|
@@ -56,9 +64,13 @@ __all__ = [
|
|
|
56
64
|
"StatsIaaResponseCommonTasks",
|
|
57
65
|
"StatsIaaResponseIaa",
|
|
58
66
|
"StatsIaaResponseStd",
|
|
67
|
+
"StatsTotalAgreementResponse",
|
|
68
|
+
"StatsTotalAgreementResponseOne",
|
|
69
|
+
"StatsTotalAgreementResponseZero",
|
|
59
70
|
"assignments",
|
|
60
71
|
"exports",
|
|
61
72
|
"members",
|
|
73
|
+
"metrics",
|
|
62
74
|
"pauses",
|
|
63
75
|
"stats",
|
|
64
76
|
]
|
|
@@ -4,6 +4,7 @@ import typing
|
|
|
4
4
|
from ..core.client_wrapper import SyncClientWrapper
|
|
5
5
|
from .exports.client import ExportsClient
|
|
6
6
|
from .members.client import MembersClient
|
|
7
|
+
from .metrics.client import MetricsClient
|
|
7
8
|
from .stats.client import StatsClient
|
|
8
9
|
from .assignments.client import AssignmentsClient
|
|
9
10
|
from .pauses.client import PausesClient
|
|
@@ -37,6 +38,7 @@ from ..types.project_label_config import ProjectLabelConfig
|
|
|
37
38
|
from ..core.client_wrapper import AsyncClientWrapper
|
|
38
39
|
from .exports.client import AsyncExportsClient
|
|
39
40
|
from .members.client import AsyncMembersClient
|
|
41
|
+
from .metrics.client import AsyncMetricsClient
|
|
40
42
|
from .stats.client import AsyncStatsClient
|
|
41
43
|
from .assignments.client import AsyncAssignmentsClient
|
|
42
44
|
from .pauses.client import AsyncPausesClient
|
|
@@ -51,6 +53,7 @@ class ProjectsClient:
|
|
|
51
53
|
self._client_wrapper = client_wrapper
|
|
52
54
|
self.exports = ExportsClient(client_wrapper=self._client_wrapper)
|
|
53
55
|
self.members = MembersClient(client_wrapper=self._client_wrapper)
|
|
56
|
+
self.metrics = MetricsClient(client_wrapper=self._client_wrapper)
|
|
54
57
|
self.stats = StatsClient(client_wrapper=self._client_wrapper)
|
|
55
58
|
self.assignments = AssignmentsClient(client_wrapper=self._client_wrapper)
|
|
56
59
|
self.pauses = PausesClient(client_wrapper=self._client_wrapper)
|
|
@@ -980,6 +983,7 @@ class AsyncProjectsClient:
|
|
|
980
983
|
self._client_wrapper = client_wrapper
|
|
981
984
|
self.exports = AsyncExportsClient(client_wrapper=self._client_wrapper)
|
|
982
985
|
self.members = AsyncMembersClient(client_wrapper=self._client_wrapper)
|
|
986
|
+
self.metrics = AsyncMetricsClient(client_wrapper=self._client_wrapper)
|
|
983
987
|
self.stats = AsyncStatsClient(client_wrapper=self._client_wrapper)
|
|
984
988
|
self.assignments = AsyncAssignmentsClient(client_wrapper=self._client_wrapper)
|
|
985
989
|
self.pauses = AsyncPausesClient(client_wrapper=self._client_wrapper)
|