athena-intelligence 0.1.118__tar.gz → 0.1.119__tar.gz
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.
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/PKG-INFO +1 -1
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/pyproject.toml +1 -1
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/__init__.py +14 -1
- athena_intelligence-0.1.119/src/athena/agents/__init__.py +5 -0
- athena_intelligence-0.1.119/src/athena/agents/athena_assistant/__init__.py +2 -0
- athena_intelligence-0.1.119/src/athena/agents/athena_assistant/client.py +353 -0
- athena_intelligence-0.1.119/src/athena/agents/client.py +19 -0
- athena_intelligence-0.1.119/src/athena/agents/structured_data_extractor/__init__.py +2 -0
- athena_intelligence-0.1.119/src/athena/agents/structured_data_extractor/client.py +150 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/base_client.py +3 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/client_wrapper.py +1 -1
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/__init__.py +12 -0
- athena_intelligence-0.1.119/src/athena/types/athena_assistant_config.py +36 -0
- athena_intelligence-0.1.119/src/athena/types/athena_assistant_config_enabled_tools_item.py +7 -0
- athena_intelligence-0.1.119/src/athena/types/athena_assistant_reponse.py +33 -0
- athena_intelligence-0.1.119/src/athena/types/athena_assistant_request.py +38 -0
- athena_intelligence-0.1.119/src/athena/types/structured_data_extractor_reponse.py +36 -0
- athena_intelligence-0.1.119/src/athena/types/tool.py +17 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/README.md +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/client.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/__init__.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/api_error.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/datetime_utils.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/file.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/http_client.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/jsonable_encoder.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/pydantic_utilities.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/query_encoder.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/remove_none_from_dict.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/request_options.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/environment.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/errors/__init__.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/errors/bad_request_error.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/errors/content_too_large_error.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/errors/internal_server_error.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/errors/not_found_error.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/errors/unauthorized_error.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/errors/unprocessable_entity_error.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/errors/unsupported_media_type_error.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/py.typed +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/query/__init__.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/query/client.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/query/types/__init__.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/query/types/query_execute_request_database_asset_ids.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/tools/__init__.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/tools/client.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/tools/types/__init__.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/tools/types/tools_data_frame_request_columns_item.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/asset_not_found_error.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/data_frame_request_out.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/data_frame_request_out_columns_item.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/data_frame_request_out_data_item_item.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/data_frame_request_out_index_item.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/data_frame_unknown_format_error.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/document_chunk.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/file_chunk_request_out.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/file_too_large_error.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/parent_folder_error.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/save_asset_request_out.py +0 -0
- {athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/version.py +0 -0
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
from .types import (
|
4
4
|
AssetNotFoundError,
|
5
|
+
AthenaAssistantConfig,
|
6
|
+
AthenaAssistantConfigEnabledToolsItem,
|
7
|
+
AthenaAssistantReponse,
|
8
|
+
AthenaAssistantRequest,
|
5
9
|
DataFrameRequestOut,
|
6
10
|
DataFrameRequestOutColumnsItem,
|
7
11
|
DataFrameRequestOutDataItemItem,
|
@@ -12,6 +16,8 @@ from .types import (
|
|
12
16
|
FileTooLargeError,
|
13
17
|
ParentFolderError,
|
14
18
|
SaveAssetRequestOut,
|
19
|
+
StructuredDataExtractorReponse,
|
20
|
+
Tool,
|
15
21
|
)
|
16
22
|
from .errors import (
|
17
23
|
BadRequestError,
|
@@ -22,7 +28,7 @@ from .errors import (
|
|
22
28
|
UnprocessableEntityError,
|
23
29
|
UnsupportedMediaTypeError,
|
24
30
|
)
|
25
|
-
from . import query, tools
|
31
|
+
from . import agents, query, tools
|
26
32
|
from .environment import AthenaEnvironment
|
27
33
|
from .query import QueryExecuteRequestDatabaseAssetIds
|
28
34
|
from .tools import ToolsDataFrameRequestColumnsItem
|
@@ -30,6 +36,10 @@ from .version import __version__
|
|
30
36
|
|
31
37
|
__all__ = [
|
32
38
|
"AssetNotFoundError",
|
39
|
+
"AthenaAssistantConfig",
|
40
|
+
"AthenaAssistantConfigEnabledToolsItem",
|
41
|
+
"AthenaAssistantReponse",
|
42
|
+
"AthenaAssistantRequest",
|
33
43
|
"AthenaEnvironment",
|
34
44
|
"BadRequestError",
|
35
45
|
"ContentTooLargeError",
|
@@ -46,11 +56,14 @@ __all__ = [
|
|
46
56
|
"ParentFolderError",
|
47
57
|
"QueryExecuteRequestDatabaseAssetIds",
|
48
58
|
"SaveAssetRequestOut",
|
59
|
+
"StructuredDataExtractorReponse",
|
60
|
+
"Tool",
|
49
61
|
"ToolsDataFrameRequestColumnsItem",
|
50
62
|
"UnauthorizedError",
|
51
63
|
"UnprocessableEntityError",
|
52
64
|
"UnsupportedMediaTypeError",
|
53
65
|
"__version__",
|
66
|
+
"agents",
|
54
67
|
"query",
|
55
68
|
"tools",
|
56
69
|
]
|
@@ -0,0 +1,353 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import typing
|
4
|
+
from json.decoder import JSONDecodeError
|
5
|
+
|
6
|
+
from ...core.api_error import ApiError
|
7
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
8
|
+
from ...core.pydantic_utilities import pydantic_v1
|
9
|
+
from ...core.request_options import RequestOptions
|
10
|
+
from ...errors.unprocessable_entity_error import UnprocessableEntityError
|
11
|
+
from ...types.athena_assistant_reponse import AthenaAssistantReponse
|
12
|
+
from ...types.athena_assistant_request import AthenaAssistantRequest
|
13
|
+
|
14
|
+
# this is used as the default value for optional parameters
|
15
|
+
OMIT = typing.cast(typing.Any, ...)
|
16
|
+
|
17
|
+
|
18
|
+
class AthenaAssistantClient:
|
19
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
20
|
+
self._client_wrapper = client_wrapper
|
21
|
+
|
22
|
+
def batch(
|
23
|
+
self,
|
24
|
+
*,
|
25
|
+
request: typing.Sequence[AthenaAssistantRequest],
|
26
|
+
request_options: typing.Optional[RequestOptions] = None
|
27
|
+
) -> typing.List[AthenaAssistantReponse]:
|
28
|
+
"""
|
29
|
+
Call the Athena assistant with batched requests and return the results.
|
30
|
+
|
31
|
+
Parameters
|
32
|
+
----------
|
33
|
+
request : typing.Sequence[AthenaAssistantRequest]
|
34
|
+
|
35
|
+
request_options : typing.Optional[RequestOptions]
|
36
|
+
Request-specific configuration.
|
37
|
+
|
38
|
+
Returns
|
39
|
+
-------
|
40
|
+
typing.List[AthenaAssistantReponse]
|
41
|
+
Successful Response
|
42
|
+
|
43
|
+
Examples
|
44
|
+
--------
|
45
|
+
from athena import AthenaAssistantConfig, AthenaAssistantRequest, Tool
|
46
|
+
from athena.client import Athena
|
47
|
+
|
48
|
+
client = Athena(
|
49
|
+
api_key="YOUR_API_KEY",
|
50
|
+
)
|
51
|
+
client.agents.athena_assistant.batch(
|
52
|
+
request=[
|
53
|
+
AthenaAssistantRequest(
|
54
|
+
config=AthenaAssistantConfig(
|
55
|
+
enabled_tools=[Tool.SEARCH],
|
56
|
+
),
|
57
|
+
messages=[],
|
58
|
+
)
|
59
|
+
],
|
60
|
+
)
|
61
|
+
"""
|
62
|
+
_response = self._client_wrapper.httpx_client.request(
|
63
|
+
"api/v0/agents/athena-assistant/batch",
|
64
|
+
method="POST",
|
65
|
+
json=request,
|
66
|
+
request_options=request_options,
|
67
|
+
omit=OMIT,
|
68
|
+
)
|
69
|
+
if 200 <= _response.status_code < 300:
|
70
|
+
return pydantic_v1.parse_obj_as(typing.List[AthenaAssistantReponse], _response.json()) # type: ignore
|
71
|
+
if _response.status_code == 422:
|
72
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
73
|
+
try:
|
74
|
+
_response_json = _response.json()
|
75
|
+
except JSONDecodeError:
|
76
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
77
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
78
|
+
|
79
|
+
def invoke(
|
80
|
+
self, *, request: AthenaAssistantRequest, request_options: typing.Optional[RequestOptions] = None
|
81
|
+
) -> AthenaAssistantReponse:
|
82
|
+
"""
|
83
|
+
Call the Athena Assistant agent synchronously.
|
84
|
+
|
85
|
+
Call the agent with the messages list, wait for the agent to complete,
|
86
|
+
and return the result.
|
87
|
+
|
88
|
+
Parameters
|
89
|
+
----------
|
90
|
+
request : AthenaAssistantRequest
|
91
|
+
|
92
|
+
request_options : typing.Optional[RequestOptions]
|
93
|
+
Request-specific configuration.
|
94
|
+
|
95
|
+
Returns
|
96
|
+
-------
|
97
|
+
AthenaAssistantReponse
|
98
|
+
Successful Response
|
99
|
+
|
100
|
+
Examples
|
101
|
+
--------
|
102
|
+
from athena import AthenaAssistantConfig, AthenaAssistantRequest, Tool
|
103
|
+
from athena.client import Athena
|
104
|
+
|
105
|
+
client = Athena(
|
106
|
+
api_key="YOUR_API_KEY",
|
107
|
+
)
|
108
|
+
client.agents.athena_assistant.invoke(
|
109
|
+
request=AthenaAssistantRequest(
|
110
|
+
config=AthenaAssistantConfig(
|
111
|
+
enabled_tools=[Tool.SEARCH],
|
112
|
+
),
|
113
|
+
messages=[],
|
114
|
+
),
|
115
|
+
)
|
116
|
+
"""
|
117
|
+
_response = self._client_wrapper.httpx_client.request(
|
118
|
+
"api/v0/agents/athena-assistant/invoke",
|
119
|
+
method="POST",
|
120
|
+
json=request,
|
121
|
+
request_options=request_options,
|
122
|
+
omit=OMIT,
|
123
|
+
)
|
124
|
+
if 200 <= _response.status_code < 300:
|
125
|
+
return pydantic_v1.parse_obj_as(AthenaAssistantReponse, _response.json()) # type: ignore
|
126
|
+
if _response.status_code == 422:
|
127
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
128
|
+
try:
|
129
|
+
_response_json = _response.json()
|
130
|
+
except JSONDecodeError:
|
131
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
132
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
133
|
+
|
134
|
+
def stream_events(
|
135
|
+
self, *, request: AthenaAssistantRequest, request_options: typing.Optional[RequestOptions] = None
|
136
|
+
) -> AthenaAssistantReponse:
|
137
|
+
"""
|
138
|
+
Call the Athena assistant and stream events.
|
139
|
+
|
140
|
+
Parameters
|
141
|
+
----------
|
142
|
+
request : AthenaAssistantRequest
|
143
|
+
|
144
|
+
request_options : typing.Optional[RequestOptions]
|
145
|
+
Request-specific configuration.
|
146
|
+
|
147
|
+
Returns
|
148
|
+
-------
|
149
|
+
AthenaAssistantReponse
|
150
|
+
Successful Response
|
151
|
+
|
152
|
+
Examples
|
153
|
+
--------
|
154
|
+
from athena import AthenaAssistantConfig, AthenaAssistantRequest, Tool
|
155
|
+
from athena.client import Athena
|
156
|
+
|
157
|
+
client = Athena(
|
158
|
+
api_key="YOUR_API_KEY",
|
159
|
+
)
|
160
|
+
client.agents.athena_assistant.stream_events(
|
161
|
+
request=AthenaAssistantRequest(
|
162
|
+
config=AthenaAssistantConfig(
|
163
|
+
enabled_tools=[Tool.SEARCH],
|
164
|
+
),
|
165
|
+
messages=[],
|
166
|
+
),
|
167
|
+
)
|
168
|
+
"""
|
169
|
+
_response = self._client_wrapper.httpx_client.request(
|
170
|
+
"api/v0/agents/athena-assistant/stream_events",
|
171
|
+
method="POST",
|
172
|
+
json=request,
|
173
|
+
request_options=request_options,
|
174
|
+
omit=OMIT,
|
175
|
+
)
|
176
|
+
if 200 <= _response.status_code < 300:
|
177
|
+
return pydantic_v1.parse_obj_as(AthenaAssistantReponse, _response.json()) # type: ignore
|
178
|
+
if _response.status_code == 422:
|
179
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
180
|
+
try:
|
181
|
+
_response_json = _response.json()
|
182
|
+
except JSONDecodeError:
|
183
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
184
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
185
|
+
|
186
|
+
|
187
|
+
class AsyncAthenaAssistantClient:
|
188
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
189
|
+
self._client_wrapper = client_wrapper
|
190
|
+
|
191
|
+
async def batch(
|
192
|
+
self,
|
193
|
+
*,
|
194
|
+
request: typing.Sequence[AthenaAssistantRequest],
|
195
|
+
request_options: typing.Optional[RequestOptions] = None
|
196
|
+
) -> typing.List[AthenaAssistantReponse]:
|
197
|
+
"""
|
198
|
+
Call the Athena assistant with batched requests and return the results.
|
199
|
+
|
200
|
+
Parameters
|
201
|
+
----------
|
202
|
+
request : typing.Sequence[AthenaAssistantRequest]
|
203
|
+
|
204
|
+
request_options : typing.Optional[RequestOptions]
|
205
|
+
Request-specific configuration.
|
206
|
+
|
207
|
+
Returns
|
208
|
+
-------
|
209
|
+
typing.List[AthenaAssistantReponse]
|
210
|
+
Successful Response
|
211
|
+
|
212
|
+
Examples
|
213
|
+
--------
|
214
|
+
from athena import AthenaAssistantConfig, AthenaAssistantRequest, Tool
|
215
|
+
from athena.client import AsyncAthena
|
216
|
+
|
217
|
+
client = AsyncAthena(
|
218
|
+
api_key="YOUR_API_KEY",
|
219
|
+
)
|
220
|
+
await client.agents.athena_assistant.batch(
|
221
|
+
request=[
|
222
|
+
AthenaAssistantRequest(
|
223
|
+
config=AthenaAssistantConfig(
|
224
|
+
enabled_tools=[Tool.SEARCH],
|
225
|
+
),
|
226
|
+
messages=[],
|
227
|
+
)
|
228
|
+
],
|
229
|
+
)
|
230
|
+
"""
|
231
|
+
_response = await self._client_wrapper.httpx_client.request(
|
232
|
+
"api/v0/agents/athena-assistant/batch",
|
233
|
+
method="POST",
|
234
|
+
json=request,
|
235
|
+
request_options=request_options,
|
236
|
+
omit=OMIT,
|
237
|
+
)
|
238
|
+
if 200 <= _response.status_code < 300:
|
239
|
+
return pydantic_v1.parse_obj_as(typing.List[AthenaAssistantReponse], _response.json()) # type: ignore
|
240
|
+
if _response.status_code == 422:
|
241
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
242
|
+
try:
|
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)
|
247
|
+
|
248
|
+
async def invoke(
|
249
|
+
self, *, request: AthenaAssistantRequest, request_options: typing.Optional[RequestOptions] = None
|
250
|
+
) -> AthenaAssistantReponse:
|
251
|
+
"""
|
252
|
+
Call the Athena Assistant agent synchronously.
|
253
|
+
|
254
|
+
Call the agent with the messages list, wait for the agent to complete,
|
255
|
+
and return the result.
|
256
|
+
|
257
|
+
Parameters
|
258
|
+
----------
|
259
|
+
request : AthenaAssistantRequest
|
260
|
+
|
261
|
+
request_options : typing.Optional[RequestOptions]
|
262
|
+
Request-specific configuration.
|
263
|
+
|
264
|
+
Returns
|
265
|
+
-------
|
266
|
+
AthenaAssistantReponse
|
267
|
+
Successful Response
|
268
|
+
|
269
|
+
Examples
|
270
|
+
--------
|
271
|
+
from athena import AthenaAssistantConfig, AthenaAssistantRequest, Tool
|
272
|
+
from athena.client import AsyncAthena
|
273
|
+
|
274
|
+
client = AsyncAthena(
|
275
|
+
api_key="YOUR_API_KEY",
|
276
|
+
)
|
277
|
+
await client.agents.athena_assistant.invoke(
|
278
|
+
request=AthenaAssistantRequest(
|
279
|
+
config=AthenaAssistantConfig(
|
280
|
+
enabled_tools=[Tool.SEARCH],
|
281
|
+
),
|
282
|
+
messages=[],
|
283
|
+
),
|
284
|
+
)
|
285
|
+
"""
|
286
|
+
_response = await self._client_wrapper.httpx_client.request(
|
287
|
+
"api/v0/agents/athena-assistant/invoke",
|
288
|
+
method="POST",
|
289
|
+
json=request,
|
290
|
+
request_options=request_options,
|
291
|
+
omit=OMIT,
|
292
|
+
)
|
293
|
+
if 200 <= _response.status_code < 300:
|
294
|
+
return pydantic_v1.parse_obj_as(AthenaAssistantReponse, _response.json()) # type: ignore
|
295
|
+
if _response.status_code == 422:
|
296
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
297
|
+
try:
|
298
|
+
_response_json = _response.json()
|
299
|
+
except JSONDecodeError:
|
300
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
301
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
302
|
+
|
303
|
+
async def stream_events(
|
304
|
+
self, *, request: AthenaAssistantRequest, request_options: typing.Optional[RequestOptions] = None
|
305
|
+
) -> AthenaAssistantReponse:
|
306
|
+
"""
|
307
|
+
Call the Athena assistant and stream events.
|
308
|
+
|
309
|
+
Parameters
|
310
|
+
----------
|
311
|
+
request : AthenaAssistantRequest
|
312
|
+
|
313
|
+
request_options : typing.Optional[RequestOptions]
|
314
|
+
Request-specific configuration.
|
315
|
+
|
316
|
+
Returns
|
317
|
+
-------
|
318
|
+
AthenaAssistantReponse
|
319
|
+
Successful Response
|
320
|
+
|
321
|
+
Examples
|
322
|
+
--------
|
323
|
+
from athena import AthenaAssistantConfig, AthenaAssistantRequest, Tool
|
324
|
+
from athena.client import AsyncAthena
|
325
|
+
|
326
|
+
client = AsyncAthena(
|
327
|
+
api_key="YOUR_API_KEY",
|
328
|
+
)
|
329
|
+
await client.agents.athena_assistant.stream_events(
|
330
|
+
request=AthenaAssistantRequest(
|
331
|
+
config=AthenaAssistantConfig(
|
332
|
+
enabled_tools=[Tool.SEARCH],
|
333
|
+
),
|
334
|
+
messages=[],
|
335
|
+
),
|
336
|
+
)
|
337
|
+
"""
|
338
|
+
_response = await self._client_wrapper.httpx_client.request(
|
339
|
+
"api/v0/agents/athena-assistant/stream_events",
|
340
|
+
method="POST",
|
341
|
+
json=request,
|
342
|
+
request_options=request_options,
|
343
|
+
omit=OMIT,
|
344
|
+
)
|
345
|
+
if 200 <= _response.status_code < 300:
|
346
|
+
return pydantic_v1.parse_obj_as(AthenaAssistantReponse, _response.json()) # type: ignore
|
347
|
+
if _response.status_code == 422:
|
348
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
349
|
+
try:
|
350
|
+
_response_json = _response.json()
|
351
|
+
except JSONDecodeError:
|
352
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
353
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
4
|
+
from .athena_assistant.client import AsyncAthenaAssistantClient, AthenaAssistantClient
|
5
|
+
from .structured_data_extractor.client import AsyncStructuredDataExtractorClient, StructuredDataExtractorClient
|
6
|
+
|
7
|
+
|
8
|
+
class AgentsClient:
|
9
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
10
|
+
self._client_wrapper = client_wrapper
|
11
|
+
self.athena_assistant = AthenaAssistantClient(client_wrapper=self._client_wrapper)
|
12
|
+
self.structured_data_extractor = StructuredDataExtractorClient(client_wrapper=self._client_wrapper)
|
13
|
+
|
14
|
+
|
15
|
+
class AsyncAgentsClient:
|
16
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
17
|
+
self._client_wrapper = client_wrapper
|
18
|
+
self.athena_assistant = AsyncAthenaAssistantClient(client_wrapper=self._client_wrapper)
|
19
|
+
self.structured_data_extractor = AsyncStructuredDataExtractorClient(client_wrapper=self._client_wrapper)
|
@@ -0,0 +1,150 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import typing
|
4
|
+
from json.decoder import JSONDecodeError
|
5
|
+
|
6
|
+
from ...core.api_error import ApiError
|
7
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
8
|
+
from ...core.pydantic_utilities import pydantic_v1
|
9
|
+
from ...core.request_options import RequestOptions
|
10
|
+
from ...errors.unprocessable_entity_error import UnprocessableEntityError
|
11
|
+
from ...types.structured_data_extractor_reponse import StructuredDataExtractorReponse
|
12
|
+
|
13
|
+
# this is used as the default value for optional parameters
|
14
|
+
OMIT = typing.cast(typing.Any, ...)
|
15
|
+
|
16
|
+
|
17
|
+
class StructuredDataExtractorClient:
|
18
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
19
|
+
self._client_wrapper = client_wrapper
|
20
|
+
|
21
|
+
def invoke(
|
22
|
+
self,
|
23
|
+
*,
|
24
|
+
asset_ids: typing.Sequence[str],
|
25
|
+
json_schema: typing.Dict[str, typing.Any],
|
26
|
+
map_: typing.Optional[bool] = OMIT,
|
27
|
+
reduce: typing.Optional[bool] = OMIT,
|
28
|
+
request_options: typing.Optional[RequestOptions] = None
|
29
|
+
) -> StructuredDataExtractorReponse:
|
30
|
+
"""
|
31
|
+
Coming soon! Extract structured data from assets of arbitrary length.
|
32
|
+
|
33
|
+
Parameters
|
34
|
+
----------
|
35
|
+
asset_ids : typing.Sequence[str]
|
36
|
+
The IDs of the assets from which to extract structured data matching `json_schema`.
|
37
|
+
|
38
|
+
json_schema : typing.Dict[str, typing.Any]
|
39
|
+
The JSON schema to use for validation.
|
40
|
+
|
41
|
+
map_ : typing.Optional[bool]
|
42
|
+
Whether to split the asset into chunks and attempt to extract the schema from each chunk. Set to false if you know the asset is small.
|
43
|
+
|
44
|
+
reduce : typing.Optional[bool]
|
45
|
+
If `map`, whether to reduce the chunks to a single structured object (true) or return the full list (false). Use True unless you want to preserve duplicates from each page or expect the object to overflow the output context.
|
46
|
+
|
47
|
+
request_options : typing.Optional[RequestOptions]
|
48
|
+
Request-specific configuration.
|
49
|
+
|
50
|
+
Returns
|
51
|
+
-------
|
52
|
+
StructuredDataExtractorReponse
|
53
|
+
Successful Response
|
54
|
+
|
55
|
+
Examples
|
56
|
+
--------
|
57
|
+
from athena.client import Athena
|
58
|
+
|
59
|
+
client = Athena(
|
60
|
+
api_key="YOUR_API_KEY",
|
61
|
+
)
|
62
|
+
client.agents.structured_data_extractor.invoke(
|
63
|
+
asset_ids=["asset_ids"],
|
64
|
+
json_schema={"key": "value"},
|
65
|
+
)
|
66
|
+
"""
|
67
|
+
_response = self._client_wrapper.httpx_client.request(
|
68
|
+
"api/v0/agents/structured-data-extractor/invoke",
|
69
|
+
method="POST",
|
70
|
+
json={"asset_ids": asset_ids, "json_schema": json_schema, "map": map_, "reduce": reduce},
|
71
|
+
request_options=request_options,
|
72
|
+
omit=OMIT,
|
73
|
+
)
|
74
|
+
if 200 <= _response.status_code < 300:
|
75
|
+
return pydantic_v1.parse_obj_as(StructuredDataExtractorReponse, _response.json()) # type: ignore
|
76
|
+
if _response.status_code == 422:
|
77
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
78
|
+
try:
|
79
|
+
_response_json = _response.json()
|
80
|
+
except JSONDecodeError:
|
81
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
82
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
83
|
+
|
84
|
+
|
85
|
+
class AsyncStructuredDataExtractorClient:
|
86
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
87
|
+
self._client_wrapper = client_wrapper
|
88
|
+
|
89
|
+
async def invoke(
|
90
|
+
self,
|
91
|
+
*,
|
92
|
+
asset_ids: typing.Sequence[str],
|
93
|
+
json_schema: typing.Dict[str, typing.Any],
|
94
|
+
map_: typing.Optional[bool] = OMIT,
|
95
|
+
reduce: typing.Optional[bool] = OMIT,
|
96
|
+
request_options: typing.Optional[RequestOptions] = None
|
97
|
+
) -> StructuredDataExtractorReponse:
|
98
|
+
"""
|
99
|
+
Coming soon! Extract structured data from assets of arbitrary length.
|
100
|
+
|
101
|
+
Parameters
|
102
|
+
----------
|
103
|
+
asset_ids : typing.Sequence[str]
|
104
|
+
The IDs of the assets from which to extract structured data matching `json_schema`.
|
105
|
+
|
106
|
+
json_schema : typing.Dict[str, typing.Any]
|
107
|
+
The JSON schema to use for validation.
|
108
|
+
|
109
|
+
map_ : typing.Optional[bool]
|
110
|
+
Whether to split the asset into chunks and attempt to extract the schema from each chunk. Set to false if you know the asset is small.
|
111
|
+
|
112
|
+
reduce : typing.Optional[bool]
|
113
|
+
If `map`, whether to reduce the chunks to a single structured object (true) or return the full list (false). Use True unless you want to preserve duplicates from each page or expect the object to overflow the output context.
|
114
|
+
|
115
|
+
request_options : typing.Optional[RequestOptions]
|
116
|
+
Request-specific configuration.
|
117
|
+
|
118
|
+
Returns
|
119
|
+
-------
|
120
|
+
StructuredDataExtractorReponse
|
121
|
+
Successful Response
|
122
|
+
|
123
|
+
Examples
|
124
|
+
--------
|
125
|
+
from athena.client import AsyncAthena
|
126
|
+
|
127
|
+
client = AsyncAthena(
|
128
|
+
api_key="YOUR_API_KEY",
|
129
|
+
)
|
130
|
+
await client.agents.structured_data_extractor.invoke(
|
131
|
+
asset_ids=["asset_ids"],
|
132
|
+
json_schema={"key": "value"},
|
133
|
+
)
|
134
|
+
"""
|
135
|
+
_response = await self._client_wrapper.httpx_client.request(
|
136
|
+
"api/v0/agents/structured-data-extractor/invoke",
|
137
|
+
method="POST",
|
138
|
+
json={"asset_ids": asset_ids, "json_schema": json_schema, "map": map_, "reduce": reduce},
|
139
|
+
request_options=request_options,
|
140
|
+
omit=OMIT,
|
141
|
+
)
|
142
|
+
if 200 <= _response.status_code < 300:
|
143
|
+
return pydantic_v1.parse_obj_as(StructuredDataExtractorReponse, _response.json()) # type: ignore
|
144
|
+
if _response.status_code == 422:
|
145
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
146
|
+
try:
|
147
|
+
_response_json = _response.json()
|
148
|
+
except JSONDecodeError:
|
149
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
150
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
@@ -4,6 +4,7 @@ import typing
|
|
4
4
|
|
5
5
|
import httpx
|
6
6
|
|
7
|
+
from .agents.client import AgentsClient, AsyncAgentsClient
|
7
8
|
from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
8
9
|
from .environment import AthenaEnvironment
|
9
10
|
from .query.client import AsyncQueryClient, QueryClient
|
@@ -68,6 +69,7 @@ class BaseAthena:
|
|
68
69
|
else httpx.Client(timeout=_defaulted_timeout),
|
69
70
|
timeout=_defaulted_timeout,
|
70
71
|
)
|
72
|
+
self.agents = AgentsClient(client_wrapper=self._client_wrapper)
|
71
73
|
self.query = QueryClient(client_wrapper=self._client_wrapper)
|
72
74
|
self.tools = ToolsClient(client_wrapper=self._client_wrapper)
|
73
75
|
|
@@ -130,6 +132,7 @@ class AsyncBaseAthena:
|
|
130
132
|
else httpx.AsyncClient(timeout=_defaulted_timeout),
|
131
133
|
timeout=_defaulted_timeout,
|
132
134
|
)
|
135
|
+
self.agents = AsyncAgentsClient(client_wrapper=self._client_wrapper)
|
133
136
|
self.query = AsyncQueryClient(client_wrapper=self._client_wrapper)
|
134
137
|
self.tools = AsyncToolsClient(client_wrapper=self._client_wrapper)
|
135
138
|
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/client_wrapper.py
RENAMED
@@ -17,7 +17,7 @@ class BaseClientWrapper:
|
|
17
17
|
headers: typing.Dict[str, str] = {
|
18
18
|
"X-Fern-Language": "Python",
|
19
19
|
"X-Fern-SDK-Name": "athena-intelligence",
|
20
|
-
"X-Fern-SDK-Version": "0.1.
|
20
|
+
"X-Fern-SDK-Version": "0.1.119",
|
21
21
|
}
|
22
22
|
headers["X-API-KEY"] = self.api_key
|
23
23
|
return headers
|
@@ -1,6 +1,10 @@
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
2
2
|
|
3
3
|
from .asset_not_found_error import AssetNotFoundError
|
4
|
+
from .athena_assistant_config import AthenaAssistantConfig
|
5
|
+
from .athena_assistant_config_enabled_tools_item import AthenaAssistantConfigEnabledToolsItem
|
6
|
+
from .athena_assistant_reponse import AthenaAssistantReponse
|
7
|
+
from .athena_assistant_request import AthenaAssistantRequest
|
4
8
|
from .data_frame_request_out import DataFrameRequestOut
|
5
9
|
from .data_frame_request_out_columns_item import DataFrameRequestOutColumnsItem
|
6
10
|
from .data_frame_request_out_data_item_item import DataFrameRequestOutDataItemItem
|
@@ -11,9 +15,15 @@ from .file_chunk_request_out import FileChunkRequestOut
|
|
11
15
|
from .file_too_large_error import FileTooLargeError
|
12
16
|
from .parent_folder_error import ParentFolderError
|
13
17
|
from .save_asset_request_out import SaveAssetRequestOut
|
18
|
+
from .structured_data_extractor_reponse import StructuredDataExtractorReponse
|
19
|
+
from .tool import Tool
|
14
20
|
|
15
21
|
__all__ = [
|
16
22
|
"AssetNotFoundError",
|
23
|
+
"AthenaAssistantConfig",
|
24
|
+
"AthenaAssistantConfigEnabledToolsItem",
|
25
|
+
"AthenaAssistantReponse",
|
26
|
+
"AthenaAssistantRequest",
|
17
27
|
"DataFrameRequestOut",
|
18
28
|
"DataFrameRequestOutColumnsItem",
|
19
29
|
"DataFrameRequestOutDataItemItem",
|
@@ -24,4 +34,6 @@ __all__ = [
|
|
24
34
|
"FileTooLargeError",
|
25
35
|
"ParentFolderError",
|
26
36
|
"SaveAssetRequestOut",
|
37
|
+
"StructuredDataExtractorReponse",
|
38
|
+
"Tool",
|
27
39
|
]
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import datetime as dt
|
4
|
+
import typing
|
5
|
+
|
6
|
+
from ..core.datetime_utils import serialize_datetime
|
7
|
+
from ..core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
|
8
|
+
from .athena_assistant_config_enabled_tools_item import AthenaAssistantConfigEnabledToolsItem
|
9
|
+
|
10
|
+
|
11
|
+
class AthenaAssistantConfig(pydantic_v1.BaseModel):
|
12
|
+
"""
|
13
|
+
Configurable fields for the general agent.
|
14
|
+
"""
|
15
|
+
|
16
|
+
enabled_tools: typing.Optional[typing.List[AthenaAssistantConfigEnabledToolsItem]] = None
|
17
|
+
knowledge_base_asset_ids: typing.Optional[typing.List[str]] = None
|
18
|
+
system_prompt: typing.Optional[str] = None
|
19
|
+
|
20
|
+
def json(self, **kwargs: typing.Any) -> str:
|
21
|
+
kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
22
|
+
return super().json(**kwargs_with_defaults)
|
23
|
+
|
24
|
+
def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
|
25
|
+
kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
26
|
+
kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
|
27
|
+
|
28
|
+
return deep_union_pydantic_dicts(
|
29
|
+
super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
|
30
|
+
)
|
31
|
+
|
32
|
+
class Config:
|
33
|
+
frozen = True
|
34
|
+
smart_union = True
|
35
|
+
extra = pydantic_v1.Extra.allow
|
36
|
+
json_encoders = {dt.datetime: serialize_datetime}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import datetime as dt
|
4
|
+
import typing
|
5
|
+
|
6
|
+
from ..core.datetime_utils import serialize_datetime
|
7
|
+
from ..core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
|
8
|
+
|
9
|
+
|
10
|
+
class AthenaAssistantReponse(pydantic_v1.BaseModel):
|
11
|
+
"""
|
12
|
+
The response from the assistant.
|
13
|
+
"""
|
14
|
+
|
15
|
+
messages: typing.List[typing.Dict[str, typing.Any]]
|
16
|
+
|
17
|
+
def json(self, **kwargs: typing.Any) -> str:
|
18
|
+
kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
19
|
+
return super().json(**kwargs_with_defaults)
|
20
|
+
|
21
|
+
def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
|
22
|
+
kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
23
|
+
kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
|
24
|
+
|
25
|
+
return deep_union_pydantic_dicts(
|
26
|
+
super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
|
27
|
+
)
|
28
|
+
|
29
|
+
class Config:
|
30
|
+
frozen = True
|
31
|
+
smart_union = True
|
32
|
+
extra = pydantic_v1.Extra.allow
|
33
|
+
json_encoders = {dt.datetime: serialize_datetime}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import datetime as dt
|
4
|
+
import typing
|
5
|
+
|
6
|
+
from ..core.datetime_utils import serialize_datetime
|
7
|
+
from ..core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
|
8
|
+
from .athena_assistant_config import AthenaAssistantConfig
|
9
|
+
|
10
|
+
|
11
|
+
class AthenaAssistantRequest(pydantic_v1.BaseModel):
|
12
|
+
"""
|
13
|
+
A chat request for the Athena SDK.
|
14
|
+
"""
|
15
|
+
|
16
|
+
config: AthenaAssistantConfig
|
17
|
+
messages: typing.List[typing.Any] = pydantic_v1.Field()
|
18
|
+
"""
|
19
|
+
The messages to send to the assistant. Each message should be a string (for text inputs) or a list of multimodal content parts.
|
20
|
+
"""
|
21
|
+
|
22
|
+
def json(self, **kwargs: typing.Any) -> str:
|
23
|
+
kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
24
|
+
return super().json(**kwargs_with_defaults)
|
25
|
+
|
26
|
+
def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
|
27
|
+
kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
28
|
+
kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
|
29
|
+
|
30
|
+
return deep_union_pydantic_dicts(
|
31
|
+
super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
|
32
|
+
)
|
33
|
+
|
34
|
+
class Config:
|
35
|
+
frozen = True
|
36
|
+
smart_union = True
|
37
|
+
extra = pydantic_v1.Extra.allow
|
38
|
+
json_encoders = {dt.datetime: serialize_datetime}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import datetime as dt
|
4
|
+
import typing
|
5
|
+
|
6
|
+
from ..core.datetime_utils import serialize_datetime
|
7
|
+
from ..core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
|
8
|
+
|
9
|
+
|
10
|
+
class StructuredDataExtractorReponse(pydantic_v1.BaseModel):
|
11
|
+
"""
|
12
|
+
The agent's response.
|
13
|
+
"""
|
14
|
+
|
15
|
+
data: typing.Dict[str, typing.Any] = pydantic_v1.Field()
|
16
|
+
"""
|
17
|
+
The extracted structured data. Guaranteed to match `json_schema`.
|
18
|
+
"""
|
19
|
+
|
20
|
+
def json(self, **kwargs: typing.Any) -> str:
|
21
|
+
kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
22
|
+
return super().json(**kwargs_with_defaults)
|
23
|
+
|
24
|
+
def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
|
25
|
+
kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
26
|
+
kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
|
27
|
+
|
28
|
+
return deep_union_pydantic_dicts(
|
29
|
+
super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
|
30
|
+
)
|
31
|
+
|
32
|
+
class Config:
|
33
|
+
frozen = True
|
34
|
+
smart_union = True
|
35
|
+
extra = pydantic_v1.Extra.allow
|
36
|
+
json_encoders = {dt.datetime: serialize_datetime}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import enum
|
4
|
+
import typing
|
5
|
+
|
6
|
+
T_Result = typing.TypeVar("T_Result")
|
7
|
+
|
8
|
+
|
9
|
+
class Tool(str, enum.Enum):
|
10
|
+
SEARCH = "search"
|
11
|
+
BROWSE = "browse"
|
12
|
+
|
13
|
+
def visit(self, search: typing.Callable[[], T_Result], browse: typing.Callable[[], T_Result]) -> T_Result:
|
14
|
+
if self is Tool.SEARCH:
|
15
|
+
return search()
|
16
|
+
if self is Tool.BROWSE:
|
17
|
+
return browse()
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/datetime_utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/jsonable_encoder.py
RENAMED
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/pydantic_utilities.py
RENAMED
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/query_encoder.py
RENAMED
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/remove_none_from_dict.py
RENAMED
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/core/request_options.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/errors/bad_request_error.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/errors/not_found_error.py
RENAMED
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/errors/unauthorized_error.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/query/types/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/tools/types/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/document_chunk.py
RENAMED
File without changes
|
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/file_too_large_error.py
RENAMED
File without changes
|
{athena_intelligence-0.1.118 → athena_intelligence-0.1.119}/src/athena/types/parent_folder_error.py
RENAMED
File without changes
|
File without changes
|
File without changes
|