c63a5cfe-b235-4fbe-8bbb-82a9e02a482a-python 0.1.0a7__py3-none-any.whl → 0.1.0a9__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: c63a5cfe-b235-4fbe-8bbb-82a9e02a482a-python
3
- Version: 0.1.0a7
3
+ Version: 0.1.0a9
4
4
  Summary: The official Python library for GradientAI
5
5
  Project-URL: Homepage, https://github.com/digitalocean/gradientai-python
6
6
  Project-URL: Repository, https://github.com/digitalocean/gradientai-python
@@ -1,6 +1,6 @@
1
1
  gradientai/__init__.py,sha256=yqy3yZnX0JVUS-H01MAvroChzqS67Qf072OrPfNckjI,2655
2
2
  gradientai/_base_client.py,sha256=TADFnPHK7WpsNuJUY76SxMFf2IVoOdz_tlloQEXkutk,66719
3
- gradientai/_client.py,sha256=eKRTIA1SXYoAA28P6LyDc49IOxCB4hUI2YWrszXqXdY,27334
3
+ gradientai/_client.py,sha256=SwygmkQnjfqCEKgMA7rovhfWiEOk3BjyenunyiDS0F8,27425
4
4
  gradientai/_compat.py,sha256=VWemUKbj6DDkQ-O4baSpHVLJafotzeXmCQGJugfVTIw,6580
5
5
  gradientai/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
6
6
  gradientai/_exceptions.py,sha256=o1GvaW36c7_LMj5WasVKUBOpae8tzETBJsfbVphb3Vk,3228
@@ -9,9 +9,9 @@ gradientai/_models.py,sha256=G1vczEodX0vUySeVKbF-mbzlaObNL1oVAYH4c65agRk,29131
9
9
  gradientai/_qs.py,sha256=AOkSz4rHtK4YI3ZU_kzea-zpwBUgEY8WniGmTPyEimc,4846
10
10
  gradientai/_resource.py,sha256=4NZbH2h8dQ-t-DQPida4VANJ_oZJNA7qxV84mwJT8oM,1124
11
11
  gradientai/_response.py,sha256=RhlDdupxTcKNyDDj045MZD3-a_lsEc3yjiOzxWg0cDc,28842
12
- gradientai/_streaming.py,sha256=AWqY4cmmmTplZperXnkkMkeQ11gmpqYbt6TIXByqCv8,10116
12
+ gradientai/_streaming.py,sha256=3KH-GBmqhoS1KAOhecADOsbW9WuzhIi8wSdmrEj5PPA,11404
13
13
  gradientai/_types.py,sha256=22gBoIuoGJ1R6l5nPwquWCRzJodKhO-3e7k22-h37JQ,6201
14
- gradientai/_version.py,sha256=3OiJuEV2eKbtW9ToIU93cLhPFrPrdnFJrulaUojrGfE,170
14
+ gradientai/_version.py,sha256=aATDhXxfQvFSrVaXTkz4f895b3kBEp1bAJcYPj23INc,170
15
15
  gradientai/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  gradientai/_utils/__init__.py,sha256=PNZ_QJuzZEgyYXqkO1HVhGkj5IU9bglVUcw7H-Knjzw,2062
17
17
  gradientai/_utils/_logs.py,sha256=1QuZcxzSKHcqNFbPoz_pvfLD5eDfOMBzGMyanAm_2gw,787
@@ -39,7 +39,7 @@ gradientai/resources/agents/routes.py,sha256=pDoK5hUgluhz5awJ9FR_krF8DIbkRzLX__M
39
39
  gradientai/resources/agents/versions.py,sha256=hmHDaawFkpqoUEYI4Vi5jckH3mamkPKupXO3cZccyKE,11546
40
40
  gradientai/resources/agents/chat/__init__.py,sha256=BVAfz9TM3DT5W9f_mt0P9YRxL_MsUxKCWAH6u1iogmA,1041
41
41
  gradientai/resources/agents/chat/chat.py,sha256=nt97777qa-xM71JQBKDFG_x7fUDJRvy6rF5LoBiMOKE,3698
42
- gradientai/resources/agents/chat/completions.py,sha256=bkaLCAXB9RkTg_D56XbnCIsJl_gKwwaoFhCDDDYT040,18230
42
+ gradientai/resources/agents/chat/completions.py,sha256=uYlI68LprqXL-W1hVRjd0tb3jutXYosKKMOEecuzpV8,46239
43
43
  gradientai/resources/agents/evaluation_metrics/__init__.py,sha256=qUCsT_vI2TrZrUBPe8h-VMNBE4ytcoe0RXshDctV0g0,1198
44
44
  gradientai/resources/agents/evaluation_metrics/evaluation_metrics.py,sha256=BueqcWT0lqbElo-lgntkr1s7J0-qi2KqEZV2qzc7dcI,7089
45
45
  gradientai/resources/agents/evaluation_metrics/workspaces/__init__.py,sha256=Zf3wa7WSVOKyG1x9Fppny38_ewQCbdghxbptqGFVfOM,1054
@@ -47,7 +47,7 @@ gradientai/resources/agents/evaluation_metrics/workspaces/agents.py,sha256=AVgDN
47
47
  gradientai/resources/agents/evaluation_metrics/workspaces/workspaces.py,sha256=iSQS3IW5xjOX5EsyJraoS5enwzrBARUhm6Xl1EgiICE,27079
48
48
  gradientai/resources/chat/__init__.py,sha256=BVAfz9TM3DT5W9f_mt0P9YRxL_MsUxKCWAH6u1iogmA,1041
49
49
  gradientai/resources/chat/chat.py,sha256=ANOEzzDATXj-onkkdtvVad9O-Dfwe7Uza7yfA_3bU4U,3696
50
- gradientai/resources/chat/completions.py,sha256=KWtB8ro2ClciI4NhbXzgXL-bIE7fcInDdGR7EElA5nU,19108
50
+ gradientai/resources/chat/completions.py,sha256=u_TvPvwNU79e3I5-v1P384LE5ysVz9gjJpYOKxnkl7E,47059
51
51
  gradientai/resources/inference/__init__.py,sha256=5Yk9bdOpUJPTero0_CvA-GJvcU5_gVlN1jf5r2GGGPY,1055
52
52
  gradientai/resources/inference/api_keys.py,sha256=xgWTFTp8IVRkw2nvXnfjBZPOTJyLUDIKlE7fSmb1y2I,22021
53
53
  gradientai/resources/inference/inference.py,sha256=jBimuBx3kKsuwC3pgy-PPrWg1TryO_a108CC_xLS2-Y,3771
@@ -150,8 +150,9 @@ gradientai/types/agents/version_list_params.py,sha256=0_3DhUbFDRyjUnn2G4saFOvuot
150
150
  gradientai/types/agents/version_list_response.py,sha256=Y0Y8CSPUPVHKRA3zTRRfQ8gC2aFyBacSCaGz-D5k8nk,2725
151
151
  gradientai/types/agents/version_update_params.py,sha256=j9tOda5wXmSOHsmcxQONo2mM-hEtrYi5-19HfGU_XnI,379
152
152
  gradientai/types/agents/version_update_response.py,sha256=nspPIkxQskT82tcW0JyG7bBVlXq_KU6CZzodTd9jfkQ,709
153
- gradientai/types/agents/chat/__init__.py,sha256=A5VCUPqJZydjjOqEXC01GXmcDkKM3bq6zuCu9lmi5Es,303
154
- gradientai/types/agents/chat/completion_create_params.py,sha256=F4Dcrt5aYC_GEWUSN2OA3Zm5ImevZ7tFuTxBH7RyooM,6635
153
+ gradientai/types/agents/chat/__init__.py,sha256=VGhGOtQE4pcOIHKsOeLDYDpixc_5ExOfIJcR0q6AqvY,397
154
+ gradientai/types/agents/chat/agent_chat_completion_chunk.py,sha256=bktrs-Ao6uta3k4PVzBrreMKbArztBcsHIEa8uzIK9s,3058
155
+ gradientai/types/agents/chat/completion_create_params.py,sha256=ADEJ0N3MMsouT9AqBLE1-rho4FVVhlp9U9E-buqIAYs,7165
155
156
  gradientai/types/agents/chat/completion_create_response.py,sha256=9uKS3memEoV0_Xd1CZwI0jQGsQyfVkhXRPGlRO3rUIc,2415
156
157
  gradientai/types/agents/evaluation_metrics/__init__.py,sha256=XWH_utxMx-JwArRpr-rHQfmoxQRGK6GciKOllbkqg40,894
157
158
  gradientai/types/agents/evaluation_metrics/workspace_create_params.py,sha256=LrccBST52BUMlIidiba8K_7vU9HLZW8TTQ2E227UF8Y,343
@@ -167,8 +168,9 @@ gradientai/types/agents/evaluation_metrics/workspaces/agent_list_params.py,sha25
167
168
  gradientai/types/agents/evaluation_metrics/workspaces/agent_list_response.py,sha256=W4O5v1LoWh2hQJTpUm5SfQCYcv6Q9Yz1Id5Pm1sPQNA,503
168
169
  gradientai/types/agents/evaluation_metrics/workspaces/agent_move_params.py,sha256=4INiLEvgT9UDqFbrGwp3nuWOzFhwv7sX_YCr1Um1RaQ,422
169
170
  gradientai/types/agents/evaluation_metrics/workspaces/agent_move_response.py,sha256=j2uoTmFwnLNU7kGI5LZdPpMUxWmUk-HdQIVVDOwSy4Y,350
170
- gradientai/types/chat/__init__.py,sha256=A5VCUPqJZydjjOqEXC01GXmcDkKM3bq6zuCu9lmi5Es,303
171
- gradientai/types/chat/completion_create_params.py,sha256=F4Dcrt5aYC_GEWUSN2OA3Zm5ImevZ7tFuTxBH7RyooM,6635
171
+ gradientai/types/chat/__init__.py,sha256=c-PmEwuvWZQ4CRBTs9gzbKAq2sxL7V7JlVxddeoaGl0,381
172
+ gradientai/types/chat/chat_completion_chunk.py,sha256=o1gDgYtzM477RmKWg-q5CE0tP3p0J7YKlZWaoqjCJOU,3046
173
+ gradientai/types/chat/completion_create_params.py,sha256=ADEJ0N3MMsouT9AqBLE1-rho4FVVhlp9U9E-buqIAYs,7165
172
174
  gradientai/types/chat/completion_create_response.py,sha256=nNPWSXZYbyYLjT_ikVvDcjRw3f9eRGHFsUrLKtQHYGI,2413
173
175
  gradientai/types/inference/__init__.py,sha256=4Dt7-03NeP9ehdHLkLsZMiL_YLQwZsl92D0mMoDQ5g0,857
174
176
  gradientai/types/inference/api_key_create_params.py,sha256=MOy5Bdr1wNBqCvqzyZ0FLfFY2a97q6eXCzgCR1wcLAE,263
@@ -231,7 +233,7 @@ gradientai/types/shared/__init__.py,sha256=YA2_qLkZLySOac1HrqOfCTEz6GeipnjIJh1mK
231
233
  gradientai/types/shared/api_links.py,sha256=Iq5iQwOkRYuwLcuDLk54dUfrq0f2ZVEOXSpF744gYgA,403
232
234
  gradientai/types/shared/api_meta.py,sha256=-KyinzQqM5GSjD7E5xm7A4UALXAvLOyVNR1SYVOUFJM,297
233
235
  gradientai/types/shared/chat_completion_token_logprob.py,sha256=6-ipUFfsXMf5L7FDFi127NaVkDtmEooVgGBF6Ts965A,1769
234
- c63a5cfe_b235_4fbe_8bbb_82a9e02a482a_python-0.1.0a7.dist-info/METADATA,sha256=g-NQEA3bos3YcRy4U0sil0jrvchjE0S8ufrQpio2jv4,15049
235
- c63a5cfe_b235_4fbe_8bbb_82a9e02a482a_python-0.1.0a7.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
236
- c63a5cfe_b235_4fbe_8bbb_82a9e02a482a_python-0.1.0a7.dist-info/licenses/LICENSE,sha256=AzxEF8mEks6hu5V_87CXF8gLdL875WeO8FmQtEZTFok,11341
237
- c63a5cfe_b235_4fbe_8bbb_82a9e02a482a_python-0.1.0a7.dist-info/RECORD,,
236
+ c63a5cfe_b235_4fbe_8bbb_82a9e02a482a_python-0.1.0a9.dist-info/METADATA,sha256=knvT5XUviLOr5lmtTU4M4N1a1_opUZDVrfNKXZM1nqM,15049
237
+ c63a5cfe_b235_4fbe_8bbb_82a9e02a482a_python-0.1.0a9.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
238
+ c63a5cfe_b235_4fbe_8bbb_82a9e02a482a_python-0.1.0a9.dist-info/licenses/LICENSE,sha256=AzxEF8mEks6hu5V_87CXF8gLdL875WeO8FmQtEZTFok,11341
239
+ c63a5cfe_b235_4fbe_8bbb_82a9e02a482a_python-0.1.0a9.dist-info/RECORD,,
gradientai/_client.py CHANGED
@@ -117,6 +117,8 @@ class GradientAI(SyncAPIClient):
117
117
  _strict_response_validation=_strict_response_validation,
118
118
  )
119
119
 
120
+ self._default_stream_cls = Stream
121
+
120
122
  @cached_property
121
123
  def agents(self) -> AgentsResource:
122
124
  from .resources.agents import AgentsResource
@@ -355,6 +357,8 @@ class AsyncGradientAI(AsyncAPIClient):
355
357
  _strict_response_validation=_strict_response_validation,
356
358
  )
357
359
 
360
+ self._default_stream_cls = AsyncStream
361
+
358
362
  @cached_property
359
363
  def agents(self) -> AsyncAgentsResource:
360
364
  from .resources.agents import AsyncAgentsResource
gradientai/_streaming.py CHANGED
@@ -9,7 +9,8 @@ from typing_extensions import Self, Protocol, TypeGuard, override, get_origin, r
9
9
 
10
10
  import httpx
11
11
 
12
- from ._utils import extract_type_var_from_base
12
+ from ._utils import is_mapping, extract_type_var_from_base
13
+ from ._exceptions import APIError
13
14
 
14
15
  if TYPE_CHECKING:
15
16
  from ._client import GradientAI, AsyncGradientAI
@@ -55,7 +56,25 @@ class Stream(Generic[_T]):
55
56
  iterator = self._iter_events()
56
57
 
57
58
  for sse in iterator:
58
- yield process_data(data=sse.json(), cast_to=cast_to, response=response)
59
+ if sse.data.startswith("[DONE]"):
60
+ break
61
+
62
+ data = sse.json()
63
+ if is_mapping(data) and data.get("error"):
64
+ message = None
65
+ error = data.get("error")
66
+ if is_mapping(error):
67
+ message = error.get("message")
68
+ if not message or not isinstance(message, str):
69
+ message = "An error occurred during streaming"
70
+
71
+ raise APIError(
72
+ message=message,
73
+ request=self.response.request,
74
+ body=data["error"],
75
+ )
76
+
77
+ yield process_data(data=data, cast_to=cast_to, response=response)
59
78
 
60
79
  # Ensure the entire stream is consumed
61
80
  for _sse in iterator:
@@ -119,7 +138,25 @@ class AsyncStream(Generic[_T]):
119
138
  iterator = self._iter_events()
120
139
 
121
140
  async for sse in iterator:
122
- yield process_data(data=sse.json(), cast_to=cast_to, response=response)
141
+ if sse.data.startswith("[DONE]"):
142
+ break
143
+
144
+ data = sse.json()
145
+ if is_mapping(data) and data.get("error"):
146
+ message = None
147
+ error = data.get("error")
148
+ if is_mapping(error):
149
+ message = error.get("message")
150
+ if not message or not isinstance(message, str):
151
+ message = "An error occurred during streaming"
152
+
153
+ raise APIError(
154
+ message=message,
155
+ request=self.response.request,
156
+ body=data["error"],
157
+ )
158
+
159
+ yield process_data(data=data, cast_to=cast_to, response=response)
123
160
 
124
161
  # Ensure the entire stream is consumed
125
162
  async for _sse in iterator:
gradientai/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "gradientai"
4
- __version__ = "0.1.0-alpha.7" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.9" # x-release-please-version