letta-client 0.1.255__py3-none-any.whl → 0.1.257__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 letta-client might be problematic. Click here for more details.
- letta_client/__init__.py +2 -2
- letta_client/core/client_wrapper.py +2 -2
- letta_client/providers/client.py +140 -6
- letta_client/providers/raw_client.py +130 -6
- letta_client/steps/client.py +75 -0
- letta_client/steps/raw_client.py +99 -0
- letta_client/types/__init__.py +2 -2
- letta_client/types/step_metrics.py +68 -0
- {letta_client-0.1.255.dist-info → letta_client-0.1.257.dist-info}/METADATA +1 -1
- {letta_client-0.1.255.dist-info → letta_client-0.1.257.dist-info}/RECORD +11 -11
- letta_client/types/provider_check.py +0 -49
- {letta_client-0.1.255.dist-info → letta_client-0.1.257.dist-info}/WHEEL +0 -0
letta_client/__init__.py
CHANGED
|
@@ -201,7 +201,6 @@ from .types import (
|
|
|
201
201
|
PipRequirement,
|
|
202
202
|
Provider,
|
|
203
203
|
ProviderCategory,
|
|
204
|
-
ProviderCheck,
|
|
205
204
|
ProviderTrace,
|
|
206
205
|
ProviderType,
|
|
207
206
|
ReasoningContent,
|
|
@@ -235,6 +234,7 @@ from .types import (
|
|
|
235
234
|
StdioServerConfig,
|
|
236
235
|
Step,
|
|
237
236
|
StepFeedback,
|
|
237
|
+
StepMetrics,
|
|
238
238
|
StepStatus,
|
|
239
239
|
StopReasonType,
|
|
240
240
|
StreamableHttpServerConfig,
|
|
@@ -609,7 +609,6 @@ __all__ = [
|
|
|
609
609
|
"ProjectsListResponseProjectsItem",
|
|
610
610
|
"Provider",
|
|
611
611
|
"ProviderCategory",
|
|
612
|
-
"ProviderCheck",
|
|
613
612
|
"ProviderTrace",
|
|
614
613
|
"ProviderType",
|
|
615
614
|
"ReasoningContent",
|
|
@@ -643,6 +642,7 @@ __all__ = [
|
|
|
643
642
|
"StdioServerConfig",
|
|
644
643
|
"Step",
|
|
645
644
|
"StepFeedback",
|
|
645
|
+
"StepMetrics",
|
|
646
646
|
"StepStatus",
|
|
647
647
|
"StepsListRequestFeedback",
|
|
648
648
|
"StopReasonType",
|
|
@@ -24,10 +24,10 @@ class BaseClientWrapper:
|
|
|
24
24
|
|
|
25
25
|
def get_headers(self) -> typing.Dict[str, str]:
|
|
26
26
|
headers: typing.Dict[str, str] = {
|
|
27
|
-
"User-Agent": "letta-client/0.1.
|
|
27
|
+
"User-Agent": "letta-client/0.1.257",
|
|
28
28
|
"X-Fern-Language": "Python",
|
|
29
29
|
"X-Fern-SDK-Name": "letta-client",
|
|
30
|
-
"X-Fern-SDK-Version": "0.1.
|
|
30
|
+
"X-Fern-SDK-Version": "0.1.257",
|
|
31
31
|
**(self.get_custom_headers() or {}),
|
|
32
32
|
}
|
|
33
33
|
if self._project is not None:
|
letta_client/providers/client.py
CHANGED
|
@@ -242,7 +242,7 @@ class ProvidersClient:
|
|
|
242
242
|
)
|
|
243
243
|
return _response.data
|
|
244
244
|
|
|
245
|
-
def check(self, *, request_options: typing.Optional[RequestOptions] = None) ->
|
|
245
|
+
def check(self, *, request_options: typing.Optional[RequestOptions] = None) -> None:
|
|
246
246
|
"""
|
|
247
247
|
Parameters
|
|
248
248
|
----------
|
|
@@ -251,8 +251,7 @@ class ProvidersClient:
|
|
|
251
251
|
|
|
252
252
|
Returns
|
|
253
253
|
-------
|
|
254
|
-
|
|
255
|
-
Successful Response
|
|
254
|
+
None
|
|
256
255
|
|
|
257
256
|
Examples
|
|
258
257
|
--------
|
|
@@ -267,6 +266,70 @@ class ProvidersClient:
|
|
|
267
266
|
_response = self._raw_client.check(request_options=request_options)
|
|
268
267
|
return _response.data
|
|
269
268
|
|
|
269
|
+
def check_provider(
|
|
270
|
+
self,
|
|
271
|
+
*,
|
|
272
|
+
provider_type: ProviderType,
|
|
273
|
+
api_key: str,
|
|
274
|
+
access_key: typing.Optional[str] = OMIT,
|
|
275
|
+
region: typing.Optional[str] = OMIT,
|
|
276
|
+
base_url: typing.Optional[str] = OMIT,
|
|
277
|
+
api_version: typing.Optional[str] = OMIT,
|
|
278
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
279
|
+
) -> typing.Optional[typing.Any]:
|
|
280
|
+
"""
|
|
281
|
+
Parameters
|
|
282
|
+
----------
|
|
283
|
+
provider_type : ProviderType
|
|
284
|
+
The type of the provider.
|
|
285
|
+
|
|
286
|
+
api_key : str
|
|
287
|
+
API key or secret key used for requests to the provider.
|
|
288
|
+
|
|
289
|
+
access_key : typing.Optional[str]
|
|
290
|
+
Access key used for requests to the provider.
|
|
291
|
+
|
|
292
|
+
region : typing.Optional[str]
|
|
293
|
+
Region used for requests to the provider.
|
|
294
|
+
|
|
295
|
+
base_url : typing.Optional[str]
|
|
296
|
+
Base URL used for requests to the provider.
|
|
297
|
+
|
|
298
|
+
api_version : typing.Optional[str]
|
|
299
|
+
API version used for requests to the provider.
|
|
300
|
+
|
|
301
|
+
request_options : typing.Optional[RequestOptions]
|
|
302
|
+
Request-specific configuration.
|
|
303
|
+
|
|
304
|
+
Returns
|
|
305
|
+
-------
|
|
306
|
+
typing.Optional[typing.Any]
|
|
307
|
+
Successful Response
|
|
308
|
+
|
|
309
|
+
Examples
|
|
310
|
+
--------
|
|
311
|
+
from letta_client import Letta
|
|
312
|
+
|
|
313
|
+
client = Letta(
|
|
314
|
+
project="YOUR_PROJECT",
|
|
315
|
+
token="YOUR_TOKEN",
|
|
316
|
+
)
|
|
317
|
+
client.providers.check_provider(
|
|
318
|
+
provider_type="anthropic",
|
|
319
|
+
api_key="api_key",
|
|
320
|
+
)
|
|
321
|
+
"""
|
|
322
|
+
_response = self._raw_client.check_provider(
|
|
323
|
+
provider_type=provider_type,
|
|
324
|
+
api_key=api_key,
|
|
325
|
+
access_key=access_key,
|
|
326
|
+
region=region,
|
|
327
|
+
base_url=base_url,
|
|
328
|
+
api_version=api_version,
|
|
329
|
+
request_options=request_options,
|
|
330
|
+
)
|
|
331
|
+
return _response.data
|
|
332
|
+
|
|
270
333
|
|
|
271
334
|
class AsyncProvidersClient:
|
|
272
335
|
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
@@ -530,7 +593,7 @@ class AsyncProvidersClient:
|
|
|
530
593
|
)
|
|
531
594
|
return _response.data
|
|
532
595
|
|
|
533
|
-
async def check(self, *, request_options: typing.Optional[RequestOptions] = None) ->
|
|
596
|
+
async def check(self, *, request_options: typing.Optional[RequestOptions] = None) -> None:
|
|
534
597
|
"""
|
|
535
598
|
Parameters
|
|
536
599
|
----------
|
|
@@ -539,8 +602,7 @@ class AsyncProvidersClient:
|
|
|
539
602
|
|
|
540
603
|
Returns
|
|
541
604
|
-------
|
|
542
|
-
|
|
543
|
-
Successful Response
|
|
605
|
+
None
|
|
544
606
|
|
|
545
607
|
Examples
|
|
546
608
|
--------
|
|
@@ -562,3 +624,75 @@ class AsyncProvidersClient:
|
|
|
562
624
|
"""
|
|
563
625
|
_response = await self._raw_client.check(request_options=request_options)
|
|
564
626
|
return _response.data
|
|
627
|
+
|
|
628
|
+
async def check_provider(
|
|
629
|
+
self,
|
|
630
|
+
*,
|
|
631
|
+
provider_type: ProviderType,
|
|
632
|
+
api_key: str,
|
|
633
|
+
access_key: typing.Optional[str] = OMIT,
|
|
634
|
+
region: typing.Optional[str] = OMIT,
|
|
635
|
+
base_url: typing.Optional[str] = OMIT,
|
|
636
|
+
api_version: typing.Optional[str] = OMIT,
|
|
637
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
638
|
+
) -> typing.Optional[typing.Any]:
|
|
639
|
+
"""
|
|
640
|
+
Parameters
|
|
641
|
+
----------
|
|
642
|
+
provider_type : ProviderType
|
|
643
|
+
The type of the provider.
|
|
644
|
+
|
|
645
|
+
api_key : str
|
|
646
|
+
API key or secret key used for requests to the provider.
|
|
647
|
+
|
|
648
|
+
access_key : typing.Optional[str]
|
|
649
|
+
Access key used for requests to the provider.
|
|
650
|
+
|
|
651
|
+
region : typing.Optional[str]
|
|
652
|
+
Region used for requests to the provider.
|
|
653
|
+
|
|
654
|
+
base_url : typing.Optional[str]
|
|
655
|
+
Base URL used for requests to the provider.
|
|
656
|
+
|
|
657
|
+
api_version : typing.Optional[str]
|
|
658
|
+
API version used for requests to the provider.
|
|
659
|
+
|
|
660
|
+
request_options : typing.Optional[RequestOptions]
|
|
661
|
+
Request-specific configuration.
|
|
662
|
+
|
|
663
|
+
Returns
|
|
664
|
+
-------
|
|
665
|
+
typing.Optional[typing.Any]
|
|
666
|
+
Successful Response
|
|
667
|
+
|
|
668
|
+
Examples
|
|
669
|
+
--------
|
|
670
|
+
import asyncio
|
|
671
|
+
|
|
672
|
+
from letta_client import AsyncLetta
|
|
673
|
+
|
|
674
|
+
client = AsyncLetta(
|
|
675
|
+
project="YOUR_PROJECT",
|
|
676
|
+
token="YOUR_TOKEN",
|
|
677
|
+
)
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
async def main() -> None:
|
|
681
|
+
await client.providers.check_provider(
|
|
682
|
+
provider_type="anthropic",
|
|
683
|
+
api_key="api_key",
|
|
684
|
+
)
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
asyncio.run(main())
|
|
688
|
+
"""
|
|
689
|
+
_response = await self._raw_client.check_provider(
|
|
690
|
+
provider_type=provider_type,
|
|
691
|
+
api_key=api_key,
|
|
692
|
+
access_key=access_key,
|
|
693
|
+
region=region,
|
|
694
|
+
base_url=base_url,
|
|
695
|
+
api_version=api_version,
|
|
696
|
+
request_options=request_options,
|
|
697
|
+
)
|
|
698
|
+
return _response.data
|
|
@@ -313,12 +313,62 @@ class RawProvidersClient:
|
|
|
313
313
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
314
314
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
315
315
|
|
|
316
|
-
def check(
|
|
317
|
-
|
|
316
|
+
def check(self, *, request_options: typing.Optional[RequestOptions] = None) -> HttpResponse[None]:
|
|
317
|
+
"""
|
|
318
|
+
Parameters
|
|
319
|
+
----------
|
|
320
|
+
request_options : typing.Optional[RequestOptions]
|
|
321
|
+
Request-specific configuration.
|
|
322
|
+
|
|
323
|
+
Returns
|
|
324
|
+
-------
|
|
325
|
+
HttpResponse[None]
|
|
326
|
+
"""
|
|
327
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
328
|
+
"v1/providers/check",
|
|
329
|
+
method="GET",
|
|
330
|
+
request_options=request_options,
|
|
331
|
+
)
|
|
332
|
+
try:
|
|
333
|
+
if 200 <= _response.status_code < 300:
|
|
334
|
+
return HttpResponse(response=_response, data=None)
|
|
335
|
+
_response_json = _response.json()
|
|
336
|
+
except JSONDecodeError:
|
|
337
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
338
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
339
|
+
|
|
340
|
+
def check_provider(
|
|
341
|
+
self,
|
|
342
|
+
*,
|
|
343
|
+
provider_type: ProviderType,
|
|
344
|
+
api_key: str,
|
|
345
|
+
access_key: typing.Optional[str] = OMIT,
|
|
346
|
+
region: typing.Optional[str] = OMIT,
|
|
347
|
+
base_url: typing.Optional[str] = OMIT,
|
|
348
|
+
api_version: typing.Optional[str] = OMIT,
|
|
349
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
318
350
|
) -> HttpResponse[typing.Optional[typing.Any]]:
|
|
319
351
|
"""
|
|
320
352
|
Parameters
|
|
321
353
|
----------
|
|
354
|
+
provider_type : ProviderType
|
|
355
|
+
The type of the provider.
|
|
356
|
+
|
|
357
|
+
api_key : str
|
|
358
|
+
API key or secret key used for requests to the provider.
|
|
359
|
+
|
|
360
|
+
access_key : typing.Optional[str]
|
|
361
|
+
Access key used for requests to the provider.
|
|
362
|
+
|
|
363
|
+
region : typing.Optional[str]
|
|
364
|
+
Region used for requests to the provider.
|
|
365
|
+
|
|
366
|
+
base_url : typing.Optional[str]
|
|
367
|
+
Base URL used for requests to the provider.
|
|
368
|
+
|
|
369
|
+
api_version : typing.Optional[str]
|
|
370
|
+
API version used for requests to the provider.
|
|
371
|
+
|
|
322
372
|
request_options : typing.Optional[RequestOptions]
|
|
323
373
|
Request-specific configuration.
|
|
324
374
|
|
|
@@ -329,8 +379,20 @@ class RawProvidersClient:
|
|
|
329
379
|
"""
|
|
330
380
|
_response = self._client_wrapper.httpx_client.request(
|
|
331
381
|
"v1/providers/check",
|
|
332
|
-
method="
|
|
382
|
+
method="POST",
|
|
383
|
+
json={
|
|
384
|
+
"provider_type": provider_type,
|
|
385
|
+
"api_key": api_key,
|
|
386
|
+
"access_key": access_key,
|
|
387
|
+
"region": region,
|
|
388
|
+
"base_url": base_url,
|
|
389
|
+
"api_version": api_version,
|
|
390
|
+
},
|
|
391
|
+
headers={
|
|
392
|
+
"content-type": "application/json",
|
|
393
|
+
},
|
|
333
394
|
request_options=request_options,
|
|
395
|
+
omit=OMIT,
|
|
334
396
|
)
|
|
335
397
|
try:
|
|
336
398
|
if _response is None or not _response.text.strip():
|
|
@@ -656,12 +718,62 @@ class AsyncRawProvidersClient:
|
|
|
656
718
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
657
719
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
658
720
|
|
|
659
|
-
async def check(
|
|
660
|
-
|
|
721
|
+
async def check(self, *, request_options: typing.Optional[RequestOptions] = None) -> AsyncHttpResponse[None]:
|
|
722
|
+
"""
|
|
723
|
+
Parameters
|
|
724
|
+
----------
|
|
725
|
+
request_options : typing.Optional[RequestOptions]
|
|
726
|
+
Request-specific configuration.
|
|
727
|
+
|
|
728
|
+
Returns
|
|
729
|
+
-------
|
|
730
|
+
AsyncHttpResponse[None]
|
|
731
|
+
"""
|
|
732
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
733
|
+
"v1/providers/check",
|
|
734
|
+
method="GET",
|
|
735
|
+
request_options=request_options,
|
|
736
|
+
)
|
|
737
|
+
try:
|
|
738
|
+
if 200 <= _response.status_code < 300:
|
|
739
|
+
return AsyncHttpResponse(response=_response, data=None)
|
|
740
|
+
_response_json = _response.json()
|
|
741
|
+
except JSONDecodeError:
|
|
742
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
743
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
744
|
+
|
|
745
|
+
async def check_provider(
|
|
746
|
+
self,
|
|
747
|
+
*,
|
|
748
|
+
provider_type: ProviderType,
|
|
749
|
+
api_key: str,
|
|
750
|
+
access_key: typing.Optional[str] = OMIT,
|
|
751
|
+
region: typing.Optional[str] = OMIT,
|
|
752
|
+
base_url: typing.Optional[str] = OMIT,
|
|
753
|
+
api_version: typing.Optional[str] = OMIT,
|
|
754
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
661
755
|
) -> AsyncHttpResponse[typing.Optional[typing.Any]]:
|
|
662
756
|
"""
|
|
663
757
|
Parameters
|
|
664
758
|
----------
|
|
759
|
+
provider_type : ProviderType
|
|
760
|
+
The type of the provider.
|
|
761
|
+
|
|
762
|
+
api_key : str
|
|
763
|
+
API key or secret key used for requests to the provider.
|
|
764
|
+
|
|
765
|
+
access_key : typing.Optional[str]
|
|
766
|
+
Access key used for requests to the provider.
|
|
767
|
+
|
|
768
|
+
region : typing.Optional[str]
|
|
769
|
+
Region used for requests to the provider.
|
|
770
|
+
|
|
771
|
+
base_url : typing.Optional[str]
|
|
772
|
+
Base URL used for requests to the provider.
|
|
773
|
+
|
|
774
|
+
api_version : typing.Optional[str]
|
|
775
|
+
API version used for requests to the provider.
|
|
776
|
+
|
|
665
777
|
request_options : typing.Optional[RequestOptions]
|
|
666
778
|
Request-specific configuration.
|
|
667
779
|
|
|
@@ -672,8 +784,20 @@ class AsyncRawProvidersClient:
|
|
|
672
784
|
"""
|
|
673
785
|
_response = await self._client_wrapper.httpx_client.request(
|
|
674
786
|
"v1/providers/check",
|
|
675
|
-
method="
|
|
787
|
+
method="POST",
|
|
788
|
+
json={
|
|
789
|
+
"provider_type": provider_type,
|
|
790
|
+
"api_key": api_key,
|
|
791
|
+
"access_key": access_key,
|
|
792
|
+
"region": region,
|
|
793
|
+
"base_url": base_url,
|
|
794
|
+
"api_version": api_version,
|
|
795
|
+
},
|
|
796
|
+
headers={
|
|
797
|
+
"content-type": "application/json",
|
|
798
|
+
},
|
|
676
799
|
request_options=request_options,
|
|
800
|
+
omit=OMIT,
|
|
677
801
|
)
|
|
678
802
|
try:
|
|
679
803
|
if _response is None or not _response.text.strip():
|
letta_client/steps/client.py
CHANGED
|
@@ -5,6 +5,7 @@ import typing
|
|
|
5
5
|
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
6
6
|
from ..core.request_options import RequestOptions
|
|
7
7
|
from ..types.step import Step
|
|
8
|
+
from ..types.step_metrics import StepMetrics
|
|
8
9
|
from .feedback.client import AsyncFeedbackClient, FeedbackClient
|
|
9
10
|
from .raw_client import AsyncRawStepsClient, RawStepsClient
|
|
10
11
|
from .types.steps_list_request_feedback import StepsListRequestFeedback
|
|
@@ -156,6 +157,39 @@ class StepsClient:
|
|
|
156
157
|
_response = self._raw_client.retrieve(step_id, request_options=request_options)
|
|
157
158
|
return _response.data
|
|
158
159
|
|
|
160
|
+
def retrieve_step_metrics(
|
|
161
|
+
self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
162
|
+
) -> StepMetrics:
|
|
163
|
+
"""
|
|
164
|
+
Get step metrics by step ID.
|
|
165
|
+
|
|
166
|
+
Parameters
|
|
167
|
+
----------
|
|
168
|
+
step_id : str
|
|
169
|
+
|
|
170
|
+
request_options : typing.Optional[RequestOptions]
|
|
171
|
+
Request-specific configuration.
|
|
172
|
+
|
|
173
|
+
Returns
|
|
174
|
+
-------
|
|
175
|
+
StepMetrics
|
|
176
|
+
Successful Response
|
|
177
|
+
|
|
178
|
+
Examples
|
|
179
|
+
--------
|
|
180
|
+
from letta_client import Letta
|
|
181
|
+
|
|
182
|
+
client = Letta(
|
|
183
|
+
project="YOUR_PROJECT",
|
|
184
|
+
token="YOUR_TOKEN",
|
|
185
|
+
)
|
|
186
|
+
client.steps.retrieve_step_metrics(
|
|
187
|
+
step_id="step_id",
|
|
188
|
+
)
|
|
189
|
+
"""
|
|
190
|
+
_response = self._raw_client.retrieve_step_metrics(step_id, request_options=request_options)
|
|
191
|
+
return _response.data
|
|
192
|
+
|
|
159
193
|
|
|
160
194
|
class AsyncStepsClient:
|
|
161
195
|
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
@@ -318,3 +352,44 @@ class AsyncStepsClient:
|
|
|
318
352
|
"""
|
|
319
353
|
_response = await self._raw_client.retrieve(step_id, request_options=request_options)
|
|
320
354
|
return _response.data
|
|
355
|
+
|
|
356
|
+
async def retrieve_step_metrics(
|
|
357
|
+
self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
358
|
+
) -> StepMetrics:
|
|
359
|
+
"""
|
|
360
|
+
Get step metrics by step ID.
|
|
361
|
+
|
|
362
|
+
Parameters
|
|
363
|
+
----------
|
|
364
|
+
step_id : str
|
|
365
|
+
|
|
366
|
+
request_options : typing.Optional[RequestOptions]
|
|
367
|
+
Request-specific configuration.
|
|
368
|
+
|
|
369
|
+
Returns
|
|
370
|
+
-------
|
|
371
|
+
StepMetrics
|
|
372
|
+
Successful Response
|
|
373
|
+
|
|
374
|
+
Examples
|
|
375
|
+
--------
|
|
376
|
+
import asyncio
|
|
377
|
+
|
|
378
|
+
from letta_client import AsyncLetta
|
|
379
|
+
|
|
380
|
+
client = AsyncLetta(
|
|
381
|
+
project="YOUR_PROJECT",
|
|
382
|
+
token="YOUR_TOKEN",
|
|
383
|
+
)
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
async def main() -> None:
|
|
387
|
+
await client.steps.retrieve_step_metrics(
|
|
388
|
+
step_id="step_id",
|
|
389
|
+
)
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
asyncio.run(main())
|
|
393
|
+
"""
|
|
394
|
+
_response = await self._raw_client.retrieve_step_metrics(step_id, request_options=request_options)
|
|
395
|
+
return _response.data
|
letta_client/steps/raw_client.py
CHANGED
|
@@ -12,6 +12,7 @@ from ..core.unchecked_base_model import construct_type
|
|
|
12
12
|
from ..errors.unprocessable_entity_error import UnprocessableEntityError
|
|
13
13
|
from ..types.http_validation_error import HttpValidationError
|
|
14
14
|
from ..types.step import Step
|
|
15
|
+
from ..types.step_metrics import StepMetrics
|
|
15
16
|
from .types.steps_list_request_feedback import StepsListRequestFeedback
|
|
16
17
|
|
|
17
18
|
|
|
@@ -183,6 +184,55 @@ class RawStepsClient:
|
|
|
183
184
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
184
185
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
185
186
|
|
|
187
|
+
def retrieve_step_metrics(
|
|
188
|
+
self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
189
|
+
) -> HttpResponse[StepMetrics]:
|
|
190
|
+
"""
|
|
191
|
+
Get step metrics by step ID.
|
|
192
|
+
|
|
193
|
+
Parameters
|
|
194
|
+
----------
|
|
195
|
+
step_id : str
|
|
196
|
+
|
|
197
|
+
request_options : typing.Optional[RequestOptions]
|
|
198
|
+
Request-specific configuration.
|
|
199
|
+
|
|
200
|
+
Returns
|
|
201
|
+
-------
|
|
202
|
+
HttpResponse[StepMetrics]
|
|
203
|
+
Successful Response
|
|
204
|
+
"""
|
|
205
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
206
|
+
f"v1/steps/{jsonable_encoder(step_id)}/metrics",
|
|
207
|
+
method="GET",
|
|
208
|
+
request_options=request_options,
|
|
209
|
+
)
|
|
210
|
+
try:
|
|
211
|
+
if 200 <= _response.status_code < 300:
|
|
212
|
+
_data = typing.cast(
|
|
213
|
+
StepMetrics,
|
|
214
|
+
construct_type(
|
|
215
|
+
type_=StepMetrics, # type: ignore
|
|
216
|
+
object_=_response.json(),
|
|
217
|
+
),
|
|
218
|
+
)
|
|
219
|
+
return HttpResponse(response=_response, data=_data)
|
|
220
|
+
if _response.status_code == 422:
|
|
221
|
+
raise UnprocessableEntityError(
|
|
222
|
+
headers=dict(_response.headers),
|
|
223
|
+
body=typing.cast(
|
|
224
|
+
HttpValidationError,
|
|
225
|
+
construct_type(
|
|
226
|
+
type_=HttpValidationError, # type: ignore
|
|
227
|
+
object_=_response.json(),
|
|
228
|
+
),
|
|
229
|
+
),
|
|
230
|
+
)
|
|
231
|
+
_response_json = _response.json()
|
|
232
|
+
except JSONDecodeError:
|
|
233
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
234
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
235
|
+
|
|
186
236
|
|
|
187
237
|
class AsyncRawStepsClient:
|
|
188
238
|
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
@@ -353,3 +403,52 @@ class AsyncRawStepsClient:
|
|
|
353
403
|
except JSONDecodeError:
|
|
354
404
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
355
405
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
406
|
+
|
|
407
|
+
async def retrieve_step_metrics(
|
|
408
|
+
self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
409
|
+
) -> AsyncHttpResponse[StepMetrics]:
|
|
410
|
+
"""
|
|
411
|
+
Get step metrics by step ID.
|
|
412
|
+
|
|
413
|
+
Parameters
|
|
414
|
+
----------
|
|
415
|
+
step_id : str
|
|
416
|
+
|
|
417
|
+
request_options : typing.Optional[RequestOptions]
|
|
418
|
+
Request-specific configuration.
|
|
419
|
+
|
|
420
|
+
Returns
|
|
421
|
+
-------
|
|
422
|
+
AsyncHttpResponse[StepMetrics]
|
|
423
|
+
Successful Response
|
|
424
|
+
"""
|
|
425
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
426
|
+
f"v1/steps/{jsonable_encoder(step_id)}/metrics",
|
|
427
|
+
method="GET",
|
|
428
|
+
request_options=request_options,
|
|
429
|
+
)
|
|
430
|
+
try:
|
|
431
|
+
if 200 <= _response.status_code < 300:
|
|
432
|
+
_data = typing.cast(
|
|
433
|
+
StepMetrics,
|
|
434
|
+
construct_type(
|
|
435
|
+
type_=StepMetrics, # type: ignore
|
|
436
|
+
object_=_response.json(),
|
|
437
|
+
),
|
|
438
|
+
)
|
|
439
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
440
|
+
if _response.status_code == 422:
|
|
441
|
+
raise UnprocessableEntityError(
|
|
442
|
+
headers=dict(_response.headers),
|
|
443
|
+
body=typing.cast(
|
|
444
|
+
HttpValidationError,
|
|
445
|
+
construct_type(
|
|
446
|
+
type_=HttpValidationError, # type: ignore
|
|
447
|
+
object_=_response.json(),
|
|
448
|
+
),
|
|
449
|
+
),
|
|
450
|
+
)
|
|
451
|
+
_response_json = _response.json()
|
|
452
|
+
except JSONDecodeError:
|
|
453
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
454
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
letta_client/types/__init__.py
CHANGED
|
@@ -212,7 +212,6 @@ from .payment_required_error_body import PaymentRequiredErrorBody
|
|
|
212
212
|
from .pip_requirement import PipRequirement
|
|
213
213
|
from .provider import Provider
|
|
214
214
|
from .provider_category import ProviderCategory
|
|
215
|
-
from .provider_check import ProviderCheck
|
|
216
215
|
from .provider_trace import ProviderTrace
|
|
217
216
|
from .provider_type import ProviderType
|
|
218
217
|
from .reasoning_content import ReasoningContent
|
|
@@ -246,6 +245,7 @@ from .sse_server_config import SseServerConfig
|
|
|
246
245
|
from .stdio_server_config import StdioServerConfig
|
|
247
246
|
from .step import Step
|
|
248
247
|
from .step_feedback import StepFeedback
|
|
248
|
+
from .step_metrics import StepMetrics
|
|
249
249
|
from .step_status import StepStatus
|
|
250
250
|
from .stop_reason_type import StopReasonType
|
|
251
251
|
from .streamable_http_server_config import StreamableHttpServerConfig
|
|
@@ -498,7 +498,6 @@ __all__ = [
|
|
|
498
498
|
"PipRequirement",
|
|
499
499
|
"Provider",
|
|
500
500
|
"ProviderCategory",
|
|
501
|
-
"ProviderCheck",
|
|
502
501
|
"ProviderTrace",
|
|
503
502
|
"ProviderType",
|
|
504
503
|
"ReasoningContent",
|
|
@@ -532,6 +531,7 @@ __all__ = [
|
|
|
532
531
|
"StdioServerConfig",
|
|
533
532
|
"Step",
|
|
534
533
|
"StepFeedback",
|
|
534
|
+
"StepMetrics",
|
|
535
535
|
"StepStatus",
|
|
536
536
|
"StopReasonType",
|
|
537
537
|
"StreamableHttpServerConfig",
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
7
|
+
from ..core.unchecked_base_model import UncheckedBaseModel
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class StepMetrics(UncheckedBaseModel):
|
|
11
|
+
id: str = pydantic.Field()
|
|
12
|
+
"""
|
|
13
|
+
The id of the step this metric belongs to (matches steps.id).
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
provider_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
17
|
+
"""
|
|
18
|
+
The unique identifier of the provider.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
job_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
22
|
+
"""
|
|
23
|
+
The unique identifier of the job.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
agent_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
27
|
+
"""
|
|
28
|
+
The unique identifier of the agent.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
llm_request_ns: typing.Optional[int] = pydantic.Field(default=None)
|
|
32
|
+
"""
|
|
33
|
+
Time spent on LLM requests in nanoseconds.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
tool_execution_ns: typing.Optional[int] = pydantic.Field(default=None)
|
|
37
|
+
"""
|
|
38
|
+
Time spent on tool execution in nanoseconds.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
step_ns: typing.Optional[int] = pydantic.Field(default=None)
|
|
42
|
+
"""
|
|
43
|
+
Total time for the step in nanoseconds.
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
base_template_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
47
|
+
"""
|
|
48
|
+
The base template ID that the step belongs to (cloud only).
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
template_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
52
|
+
"""
|
|
53
|
+
The template ID that the step belongs to (cloud only).
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
project_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
57
|
+
"""
|
|
58
|
+
The project that the step belongs to (cloud only).
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
if IS_PYDANTIC_V2:
|
|
62
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
63
|
+
else:
|
|
64
|
+
|
|
65
|
+
class Config:
|
|
66
|
+
frozen = True
|
|
67
|
+
smart_union = True
|
|
68
|
+
extra = pydantic.Extra.allow
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
letta_client/__init__.py,sha256=
|
|
1
|
+
letta_client/__init__.py,sha256=EAT9kpeazjGtXHZ-FuznqefNwW251mIxdqfEgPhCwXg,21232
|
|
2
2
|
letta_client/agents/__init__.py,sha256=JkuWGGNJsCfnMr2DFzQ1SiqEB1tcFZnafdidODi0_DY,2166
|
|
3
3
|
letta_client/agents/blocks/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
|
4
4
|
letta_client/agents/blocks/client.py,sha256=Akx-1SYEXkmdtLtytPtdFNhVts8JkjC2aMQnnWgd8Ug,14735
|
|
@@ -92,7 +92,7 @@ letta_client/client_side_access_tokens/types/client_side_access_tokens_list_clie
|
|
|
92
92
|
letta_client/client_side_access_tokens/types/client_side_access_tokens_list_client_side_access_tokens_response_tokens_item_policy_data_item_access_item.py,sha256=kNHfEWFl7u71Pu8NPqutod0a2NXfvq8il05Hqm0iBB4,284
|
|
93
93
|
letta_client/core/__init__.py,sha256=tpn7rjb6C2UIkYZYIqdrNpI7Yax2jw88sXh2baxaxAI,1715
|
|
94
94
|
letta_client/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
|
|
95
|
-
letta_client/core/client_wrapper.py,sha256=
|
|
95
|
+
letta_client/core/client_wrapper.py,sha256=__QCy6F8lLEBlsgTAaIsaErVk5fb1Bo4FG2kSSR78lU,2776
|
|
96
96
|
letta_client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
|
97
97
|
letta_client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
|
|
98
98
|
letta_client/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
|
|
@@ -163,8 +163,8 @@ letta_client/projects/types/__init__.py,sha256=o_1s2iqf5SY1ojqTeewCt6c7sxrn6gzka
|
|
|
163
163
|
letta_client/projects/types/projects_list_response.py,sha256=WJ_LHfEujdpeFL6wM3RP1uYgsAAwFK03-rEwmr3UU1w,859
|
|
164
164
|
letta_client/projects/types/projects_list_response_projects_item.py,sha256=VyG_OR4KlZIA3mgd7FCFk1kSM7NxAi3MNBzAgDrUddo,606
|
|
165
165
|
letta_client/providers/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
|
166
|
-
letta_client/providers/client.py,sha256=
|
|
167
|
-
letta_client/providers/raw_client.py,sha256=
|
|
166
|
+
letta_client/providers/client.py,sha256=999OcO9GFtwmgx9PxA3lF-dEOp4ZEADsWDckeIKcKI0,18717
|
|
167
|
+
letta_client/providers/raw_client.py,sha256=vg3z7P7UOjtLraW6GYb2YS5q496GYoyWN1s7u127q8E,30135
|
|
168
168
|
letta_client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
169
169
|
letta_client/runs/__init__.py,sha256=uuC70ZTE_Kcll7LqC18Orc60J5kBAfUo4ZJFB6FRgWA,164
|
|
170
170
|
letta_client/runs/client.py,sha256=FCH2UqXqe12RORyO10mcctNiDh5T1725CmKewCM76uk,9235
|
|
@@ -188,11 +188,11 @@ letta_client/sources/passages/client.py,sha256=6wo3iTfQcDLvmS-TaoX6wUXZ31t1l3VAd
|
|
|
188
188
|
letta_client/sources/passages/raw_client.py,sha256=iPIHJs_pmSsbyu5vBFuQdopymxlfQDkEKN4cs4YKVB8,5901
|
|
189
189
|
letta_client/sources/raw_client.py,sha256=6fyI0Y_agaebPZ_lOykNf1TybmRU-09vfrYEVgyGsz0,46078
|
|
190
190
|
letta_client/steps/__init__.py,sha256=aL21TXi3Lbs5vlhlmonxgk1mNdx_MRPwobryhwVelpg,204
|
|
191
|
-
letta_client/steps/client.py,sha256=
|
|
191
|
+
letta_client/steps/client.py,sha256=zDoaXlSu2zLOUzXUKz3egGuc4VLE2JG_FJCXOFU6ub0,11686
|
|
192
192
|
letta_client/steps/feedback/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
|
193
193
|
letta_client/steps/feedback/client.py,sha256=KrblygVLvdLQDMDA7NigcR34fiJzd8xLsQQlJxzwyUA,3234
|
|
194
194
|
letta_client/steps/feedback/raw_client.py,sha256=ILfN7fX-ZRl3_VpOVVBpbGMJO1twP02zLjnub23MlQE,4979
|
|
195
|
-
letta_client/steps/raw_client.py,sha256=
|
|
195
|
+
letta_client/steps/raw_client.py,sha256=0L5g4Qkz3E15jSzXWwMX3EMwonYwI0G6j8zM7oH00BY,17243
|
|
196
196
|
letta_client/steps/types/__init__.py,sha256=quEAP-ttL6qyeTg4wUY4b2m2PNbdXKqOdQVXgGk0seQ,191
|
|
197
197
|
letta_client/steps/types/steps_list_request_feedback.py,sha256=Au1YSn3UYRc_b4yxUT6hFqru4iJ-SX-_Ndb3PwCYGp8,172
|
|
198
198
|
letta_client/tags/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
|
@@ -228,7 +228,7 @@ letta_client/tools/types/streaming_response.py,sha256=V1qT-XAqm-z7zffJ7W1JKPCaxZ
|
|
|
228
228
|
letta_client/tools/types/test_mcp_server_request.py,sha256=3SqjEL3EYi7iV57TjTIzuBSKv8O3Y7qSUFrCiXEvSRk,373
|
|
229
229
|
letta_client/tools/types/update_mcp_server_request.py,sha256=MHouV3iyZCTROguOQP5rOYvnmvDbBeXe5VtEejRvrEs,403
|
|
230
230
|
letta_client/tools/types/update_mcp_server_response.py,sha256=BJTPHWkb8hwgd4FvftQ8eZjl2QzCQT-vZAUVnLft9hw,376
|
|
231
|
-
letta_client/types/__init__.py,sha256=
|
|
231
|
+
letta_client/types/__init__.py,sha256=x73IHWkxzhYCIJgthgXWlx4EJRdO5GL8dWoyXFg5rZA,25771
|
|
232
232
|
letta_client/types/action_model.py,sha256=VTXavHB6J2d4MjjTMEpkuEyVaiTHyj1FGfa4j8kN6hQ,1241
|
|
233
233
|
letta_client/types/action_parameters_model.py,sha256=s1mJ4tycms8UmCFsxyjKr6RbghSuqv35xpa9mK42sjg,829
|
|
234
234
|
letta_client/types/action_response_model.py,sha256=LcML150OvsKimVV3sP4jSFh8pVxQXn_r_ff8DADOr3c,825
|
|
@@ -427,7 +427,6 @@ letta_client/types/payment_required_error_body.py,sha256=ODQ2fA8EF1Y_pfZocseOg1R
|
|
|
427
427
|
letta_client/types/pip_requirement.py,sha256=A9mFgoz-yAlVHsy8vljtYdtJInfN7qL1JePPaPuTr2Y,774
|
|
428
428
|
letta_client/types/provider.py,sha256=hUTNL8HIolqPtKwPdSxjElEhENIYh05nB12ma9pcZ1g,1890
|
|
429
429
|
letta_client/types/provider_category.py,sha256=St4tSc_Wc5huF79kb088-L-tRz9Cj2_b5DqEoU4eDIs,156
|
|
430
|
-
letta_client/types/provider_check.py,sha256=8azqy6twmmMMRi8sL67DzAg1hF9yRFHnhHqPizwvtxg,1326
|
|
431
430
|
letta_client/types/provider_trace.py,sha256=d7_IpoEgLeqnPaElWjOp6iAL8SbeI4DZsBaaaFtkorM,2201
|
|
432
431
|
letta_client/types/provider_type.py,sha256=GChNOHlZBAq3J0H4gv_1Hmg3Ju678iffL5HU6mGdKQE,481
|
|
433
432
|
letta_client/types/reasoning_content.py,sha256=YPmNwwSH_toPAThpE5gq7gaxBlvvjh33csKBRdFI_iY,996
|
|
@@ -461,6 +460,7 @@ letta_client/types/sse_server_config.py,sha256=UbSmODGr5nxVMqTGtSvEbZyN2V8P_T0cO
|
|
|
461
460
|
letta_client/types/stdio_server_config.py,sha256=kuPmwj9lDTz7jBY1jh5VH-ns3ffctWwatT_emXyyTFE,1092
|
|
462
461
|
letta_client/types/step.py,sha256=r0RWvPiLUDstHKakLjMFC6SajsMNisPhiBuo32F48U4,4190
|
|
463
462
|
letta_client/types/step_feedback.py,sha256=JXUkclvJ6C-6ZTgd2lteOxqEyO5KRDNQ8ronBPYMdbo,160
|
|
463
|
+
letta_client/types/step_metrics.py,sha256=yR_CQL3rH7S9p5NUUzIUwUVfUxtzR99s5eSsKV3TOzg,1870
|
|
464
464
|
letta_client/types/step_status.py,sha256=OruAXMfFrCL0Bgoj7Wfjr8400ok5jcV4busa9NV-KIw,179
|
|
465
465
|
letta_client/types/stop_reason_type.py,sha256=BgrPBP-v9YBOpGmpusQvVQqCLPNOQFl57kVrEpPMRKU,246
|
|
466
466
|
letta_client/types/streamable_http_server_config.py,sha256=GNbt2KO9VepHUtiMoK6htJLpFHcGoFJaoH1Az6zkt-Q,1776
|
|
@@ -517,6 +517,6 @@ letta_client/version.py,sha256=bttKLbIhO3UonCYQlqs600zzbQgfhCCMjeXR9WRzid4,79
|
|
|
517
517
|
letta_client/voice/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
|
518
518
|
letta_client/voice/client.py,sha256=EbIVOQh4HXqU9McATxwga08STk-HUwPEAUr_UHqyKHg,3748
|
|
519
519
|
letta_client/voice/raw_client.py,sha256=KvM_3GXuSf51bubM0RVBnxvlf20qZTFMnaA_BzhXzjQ,5938
|
|
520
|
-
letta_client-0.1.
|
|
521
|
-
letta_client-0.1.
|
|
522
|
-
letta_client-0.1.
|
|
520
|
+
letta_client-0.1.257.dist-info/METADATA,sha256=4CnkwTdoxPRFRvUMuTLGJrSmV7T11y7LRW0xSIBCxSM,5781
|
|
521
|
+
letta_client-0.1.257.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
|
522
|
+
letta_client-0.1.257.dist-info/RECORD,,
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
-
|
|
3
|
-
import typing
|
|
4
|
-
|
|
5
|
-
import pydantic
|
|
6
|
-
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
7
|
-
from ..core.unchecked_base_model import UncheckedBaseModel
|
|
8
|
-
from .provider_type import ProviderType
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class ProviderCheck(UncheckedBaseModel):
|
|
12
|
-
provider_type: ProviderType = pydantic.Field()
|
|
13
|
-
"""
|
|
14
|
-
The type of the provider.
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
api_key: str = pydantic.Field()
|
|
18
|
-
"""
|
|
19
|
-
API key or secret key used for requests to the provider.
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
access_key: typing.Optional[str] = pydantic.Field(default=None)
|
|
23
|
-
"""
|
|
24
|
-
Access key used for requests to the provider.
|
|
25
|
-
"""
|
|
26
|
-
|
|
27
|
-
region: typing.Optional[str] = pydantic.Field(default=None)
|
|
28
|
-
"""
|
|
29
|
-
Region used for requests to the provider.
|
|
30
|
-
"""
|
|
31
|
-
|
|
32
|
-
base_url: typing.Optional[str] = pydantic.Field(default=None)
|
|
33
|
-
"""
|
|
34
|
-
Base URL used for requests to the provider.
|
|
35
|
-
"""
|
|
36
|
-
|
|
37
|
-
api_version: typing.Optional[str] = pydantic.Field(default=None)
|
|
38
|
-
"""
|
|
39
|
-
API version used for requests to the provider.
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
if IS_PYDANTIC_V2:
|
|
43
|
-
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
44
|
-
else:
|
|
45
|
-
|
|
46
|
-
class Config:
|
|
47
|
-
frozen = True
|
|
48
|
-
smart_union = True
|
|
49
|
-
extra = pydantic.Extra.allow
|
|
File without changes
|