athena-intelligence 0.1.123__py3-none-any.whl → 0.1.125__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.
- athena/__init__.py +4 -0
- athena/client.py +35 -24
- athena/core/client_wrapper.py +1 -1
- athena/tools/client.py +125 -0
- athena/tools/structured_data_extractor/client.py +14 -8
- athena/types/__init__.py +4 -0
- athena/types/asset_node.py +42 -0
- athena/types/folder_response.py +35 -0
- {athena_intelligence-0.1.123.dist-info → athena_intelligence-0.1.125.dist-info}/METADATA +1 -1
- {athena_intelligence-0.1.123.dist-info → athena_intelligence-0.1.125.dist-info}/RECORD +11 -9
- {athena_intelligence-0.1.123.dist-info → athena_intelligence-0.1.125.dist-info}/WHEEL +0 -0
athena/__init__.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
2
2
|
|
3
3
|
from .types import (
|
4
|
+
AssetNode,
|
4
5
|
AssetNotFoundError,
|
5
6
|
Chunk,
|
6
7
|
ChunkContentItem,
|
@@ -18,6 +19,7 @@ from .types import (
|
|
18
19
|
DriveAgentResponse,
|
19
20
|
FileChunkRequestOut,
|
20
21
|
FileTooLargeError,
|
22
|
+
FolderResponse,
|
21
23
|
GeneralAgentConfig,
|
22
24
|
GeneralAgentConfigEnabledToolsItem,
|
23
25
|
GeneralAgentRequest,
|
@@ -49,6 +51,7 @@ from .tools import ToolsDataFrameRequestColumnsItem
|
|
49
51
|
from .version import __version__
|
50
52
|
|
51
53
|
__all__ = [
|
54
|
+
"AssetNode",
|
52
55
|
"AssetNotFoundError",
|
53
56
|
"AthenaEnvironment",
|
54
57
|
"BadRequestError",
|
@@ -69,6 +72,7 @@ __all__ = [
|
|
69
72
|
"DriveAgentResponse",
|
70
73
|
"FileChunkRequestOut",
|
71
74
|
"FileTooLargeError",
|
75
|
+
"FolderResponse",
|
72
76
|
"GeneralAgentConfig",
|
73
77
|
"GeneralAgentConfigEnabledToolsItem",
|
74
78
|
"GeneralAgentRequest",
|
athena/client.py
CHANGED
@@ -7,7 +7,7 @@ import typing
|
|
7
7
|
import warnings
|
8
8
|
|
9
9
|
import httpx
|
10
|
-
from typing import cast, List, Union
|
10
|
+
from typing import cast, List, Tuple, Union
|
11
11
|
from typing_extensions import TypeVar, ParamSpec
|
12
12
|
|
13
13
|
from . import core
|
@@ -116,8 +116,8 @@ class WrappedToolsClient(ToolsClient):
|
|
116
116
|
client.tools.read_data_frame(asset_id="asset_id")
|
117
117
|
"""
|
118
118
|
_check_pandas_installed()
|
119
|
-
file_bytes = self.
|
120
|
-
return _to_pandas_df(file_bytes, *args, **kwargs)
|
119
|
+
file_bytes, media_type = self._get_file_and_media_type(asset_id=asset_id)
|
120
|
+
return _to_pandas_df(file_bytes, *args, media_type=media_type, **kwargs)
|
121
121
|
|
122
122
|
|
123
123
|
def save_asset( # type: ignore[override]
|
@@ -131,7 +131,7 @@ class WrappedToolsClient(ToolsClient):
|
|
131
131
|
"""
|
132
132
|
Parameters
|
133
133
|
----------
|
134
|
-
asset_object : pd.DataFrame | pd.Series | core.File
|
134
|
+
asset_object : pd.DataFrame | pd.Series | matplotlib.figure.Figure | core.File
|
135
135
|
A pandas data frame, series, matplotlib figure, or core.File
|
136
136
|
|
137
137
|
parent_folder_id : typing.Optional[str]
|
@@ -143,6 +143,8 @@ class WrappedToolsClient(ToolsClient):
|
|
143
143
|
request_options : typing.Optional[RequestOptions]
|
144
144
|
Request-specific configuration.
|
145
145
|
|
146
|
+
**kwargs : passed down to conversion methods
|
147
|
+
|
146
148
|
Returns
|
147
149
|
-------
|
148
150
|
SaveAssetRequestOut
|
@@ -155,27 +157,14 @@ class WrappedToolsClient(ToolsClient):
|
|
155
157
|
client = Athena(api_key="YOUR_API_KEY")
|
156
158
|
client.tools.save_asset(df)
|
157
159
|
"""
|
158
|
-
asset_object = _convert_asset_object(asset_object=asset_object, name=name)
|
160
|
+
asset_object = _convert_asset_object(asset_object=asset_object, name=name, **kwargs)
|
159
161
|
return super().save_asset(
|
160
|
-
file=asset_object, parent_folder_id=parent_folder_id
|
162
|
+
file=asset_object, parent_folder_id=parent_folder_id
|
161
163
|
)
|
162
164
|
|
163
|
-
def
|
165
|
+
def _get_file_and_media_type(self, asset_id: str) -> Tuple[io.BytesIO, str]:
|
164
166
|
"""
|
165
|
-
|
166
|
-
----------
|
167
|
-
asset_id : str
|
168
|
-
|
169
|
-
Returns
|
170
|
-
-------
|
171
|
-
pd.DataFrame or AthenaAsset
|
172
|
-
|
173
|
-
Examples
|
174
|
-
--------
|
175
|
-
from athena.client import Athena
|
176
|
-
|
177
|
-
client = Athena(api_key="YOUR_API_KEY")
|
178
|
-
client.tools.get_asset(asset_id="asset_id")
|
167
|
+
Gets the file togehter with media type returned by server
|
179
168
|
"""
|
180
169
|
# while we wait for https://github.com/fern-api/fern/issues/4316
|
181
170
|
result = self._client_wrapper.httpx_client.request(
|
@@ -196,6 +185,27 @@ class WrappedToolsClient(ToolsClient):
|
|
196
185
|
# fallback to `libmagic` inference
|
197
186
|
media_type = _infer_media_type(bytes_io=file_bytes)
|
198
187
|
|
188
|
+
return file_bytes, media_type
|
189
|
+
|
190
|
+
def get_asset(self, asset_id: str) -> Union["pd.DataFrame", AthenaAsset]:
|
191
|
+
"""
|
192
|
+
Parameters
|
193
|
+
----------
|
194
|
+
asset_id : str
|
195
|
+
|
196
|
+
Returns
|
197
|
+
-------
|
198
|
+
pd.DataFrame or AthenaAsset
|
199
|
+
|
200
|
+
Examples
|
201
|
+
--------
|
202
|
+
from athena.client import Athena
|
203
|
+
|
204
|
+
client = Athena(api_key="YOUR_API_KEY")
|
205
|
+
client.tools.get_asset(asset_id="asset_id")
|
206
|
+
"""
|
207
|
+
file_bytes, media_type = self._get_file_and_media_type(asset_id=asset_id)
|
208
|
+
|
199
209
|
media_type_aliases = {"image/jpg": "image/jpeg"}
|
200
210
|
media_type = media_type_aliases.get(media_type, media_type)
|
201
211
|
|
@@ -289,9 +299,9 @@ class WrappedAsyncToolsClient(AsyncToolsClient):
|
|
289
299
|
name: Union[str, None] = None,
|
290
300
|
**kwargs,
|
291
301
|
) -> SaveAssetRequestOut:
|
292
|
-
asset_object = _convert_asset_object(asset_object=asset_object, name=name)
|
302
|
+
asset_object = _convert_asset_object(asset_object=asset_object, name=name, **kwargs)
|
293
303
|
return await super().save_asset(
|
294
|
-
file=asset_object, parent_folder_id=parent_folder_id
|
304
|
+
file=asset_object, parent_folder_id=parent_folder_id
|
295
305
|
)
|
296
306
|
|
297
307
|
|
@@ -514,6 +524,7 @@ def _to_pandas_df(
|
|
514
524
|
def _convert_asset_object(
|
515
525
|
asset_object: Union["pd.DataFrame", "pd.Series", core.File],
|
516
526
|
name: Union[str, None] = None,
|
527
|
+
**kwargs
|
517
528
|
) -> core.File:
|
518
529
|
import pandas as pd
|
519
530
|
try:
|
@@ -526,7 +537,7 @@ def _convert_asset_object(
|
|
526
537
|
if isinstance(asset_object, pd.DataFrame):
|
527
538
|
return (
|
528
539
|
name or "Uploaded data frame",
|
529
|
-
asset_object.to_parquet(path=None),
|
540
|
+
asset_object.to_parquet(path=None, **kwargs),
|
530
541
|
"application/vnd.apache.parquet",
|
531
542
|
)
|
532
543
|
if format_display_data:
|
athena/core/client_wrapper.py
CHANGED
@@ -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.125",
|
21
21
|
}
|
22
22
|
headers["X-API-KEY"] = self.api_key
|
23
23
|
return headers
|
athena/tools/client.py
CHANGED
@@ -20,6 +20,7 @@ from ..types.data_frame_request_out import DataFrameRequestOut
|
|
20
20
|
from ..types.data_frame_unknown_format_error import DataFrameUnknownFormatError
|
21
21
|
from ..types.file_chunk_request_out import FileChunkRequestOut
|
22
22
|
from ..types.file_too_large_error import FileTooLargeError
|
23
|
+
from ..types.folder_response import FolderResponse
|
23
24
|
from ..types.parent_folder_error import ParentFolderError
|
24
25
|
from ..types.save_asset_request_out import SaveAssetRequestOut
|
25
26
|
from .calendar.client import AsyncCalendarClient, CalendarClient
|
@@ -94,6 +95,68 @@ class ToolsClient:
|
|
94
95
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
95
96
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
96
97
|
|
98
|
+
def list_contents(
|
99
|
+
self,
|
100
|
+
*,
|
101
|
+
folder_id: typing.Optional[str] = None,
|
102
|
+
include_asset_details: typing.Optional[bool] = None,
|
103
|
+
include_system_files: typing.Optional[bool] = None,
|
104
|
+
request_options: typing.Optional[RequestOptions] = None
|
105
|
+
) -> FolderResponse:
|
106
|
+
"""
|
107
|
+
List contents of a folder or entire workspace in a tree structure.
|
108
|
+
|
109
|
+
Parameters
|
110
|
+
----------
|
111
|
+
folder_id : typing.Optional[str]
|
112
|
+
|
113
|
+
include_asset_details : typing.Optional[bool]
|
114
|
+
|
115
|
+
include_system_files : typing.Optional[bool]
|
116
|
+
|
117
|
+
request_options : typing.Optional[RequestOptions]
|
118
|
+
Request-specific configuration.
|
119
|
+
|
120
|
+
Returns
|
121
|
+
-------
|
122
|
+
FolderResponse
|
123
|
+
Successful Response
|
124
|
+
|
125
|
+
Examples
|
126
|
+
--------
|
127
|
+
from athena.client import Athena
|
128
|
+
|
129
|
+
client = Athena(
|
130
|
+
api_key="YOUR_API_KEY",
|
131
|
+
)
|
132
|
+
client.tools.list_contents()
|
133
|
+
"""
|
134
|
+
_response = self._client_wrapper.httpx_client.request(
|
135
|
+
"api/v0/tools/contents",
|
136
|
+
method="GET",
|
137
|
+
params={
|
138
|
+
"folder_id": folder_id,
|
139
|
+
"include_asset_details": include_asset_details,
|
140
|
+
"include_system_files": include_system_files,
|
141
|
+
},
|
142
|
+
request_options=request_options,
|
143
|
+
)
|
144
|
+
if 200 <= _response.status_code < 300:
|
145
|
+
return pydantic_v1.parse_obj_as(FolderResponse, _response.json()) # type: ignore
|
146
|
+
if _response.status_code == 400:
|
147
|
+
raise BadRequestError(pydantic_v1.parse_obj_as(ParentFolderError, _response.json())) # type: ignore
|
148
|
+
if _response.status_code == 401:
|
149
|
+
raise UnauthorizedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
150
|
+
if _response.status_code == 404:
|
151
|
+
raise NotFoundError(pydantic_v1.parse_obj_as(AssetNotFoundError, _response.json())) # type: ignore
|
152
|
+
if _response.status_code == 422:
|
153
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
154
|
+
try:
|
155
|
+
_response_json = _response.json()
|
156
|
+
except JSONDecodeError:
|
157
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
158
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
159
|
+
|
97
160
|
def data_frame(
|
98
161
|
self,
|
99
162
|
*,
|
@@ -347,6 +410,68 @@ class AsyncToolsClient:
|
|
347
410
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
348
411
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
349
412
|
|
413
|
+
async def list_contents(
|
414
|
+
self,
|
415
|
+
*,
|
416
|
+
folder_id: typing.Optional[str] = None,
|
417
|
+
include_asset_details: typing.Optional[bool] = None,
|
418
|
+
include_system_files: typing.Optional[bool] = None,
|
419
|
+
request_options: typing.Optional[RequestOptions] = None
|
420
|
+
) -> FolderResponse:
|
421
|
+
"""
|
422
|
+
List contents of a folder or entire workspace in a tree structure.
|
423
|
+
|
424
|
+
Parameters
|
425
|
+
----------
|
426
|
+
folder_id : typing.Optional[str]
|
427
|
+
|
428
|
+
include_asset_details : typing.Optional[bool]
|
429
|
+
|
430
|
+
include_system_files : typing.Optional[bool]
|
431
|
+
|
432
|
+
request_options : typing.Optional[RequestOptions]
|
433
|
+
Request-specific configuration.
|
434
|
+
|
435
|
+
Returns
|
436
|
+
-------
|
437
|
+
FolderResponse
|
438
|
+
Successful Response
|
439
|
+
|
440
|
+
Examples
|
441
|
+
--------
|
442
|
+
from athena.client import AsyncAthena
|
443
|
+
|
444
|
+
client = AsyncAthena(
|
445
|
+
api_key="YOUR_API_KEY",
|
446
|
+
)
|
447
|
+
await client.tools.list_contents()
|
448
|
+
"""
|
449
|
+
_response = await self._client_wrapper.httpx_client.request(
|
450
|
+
"api/v0/tools/contents",
|
451
|
+
method="GET",
|
452
|
+
params={
|
453
|
+
"folder_id": folder_id,
|
454
|
+
"include_asset_details": include_asset_details,
|
455
|
+
"include_system_files": include_system_files,
|
456
|
+
},
|
457
|
+
request_options=request_options,
|
458
|
+
)
|
459
|
+
if 200 <= _response.status_code < 300:
|
460
|
+
return pydantic_v1.parse_obj_as(FolderResponse, _response.json()) # type: ignore
|
461
|
+
if _response.status_code == 400:
|
462
|
+
raise BadRequestError(pydantic_v1.parse_obj_as(ParentFolderError, _response.json())) # type: ignore
|
463
|
+
if _response.status_code == 401:
|
464
|
+
raise UnauthorizedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
465
|
+
if _response.status_code == 404:
|
466
|
+
raise NotFoundError(pydantic_v1.parse_obj_as(AssetNotFoundError, _response.json())) # type: ignore
|
467
|
+
if _response.status_code == 422:
|
468
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
469
|
+
try:
|
470
|
+
_response_json = _response.json()
|
471
|
+
except JSONDecodeError:
|
472
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
473
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
474
|
+
|
350
475
|
async def data_frame(
|
351
476
|
self,
|
352
477
|
*,
|
@@ -36,7 +36,7 @@ class StructuredDataExtractorClient:
|
|
36
36
|
tl;dr:
|
37
37
|
|
38
38
|
- pass a valid JSON schema in `json_schema`
|
39
|
-
- pass the page chunks as a list of `Chunk` objects, by default: {"type": "text", "content": "..."}
|
39
|
+
- pass the page chunks as a list of `Chunk` objects, by default: `{"type": "text", "content": "..."}`
|
40
40
|
- leave all other fields as default
|
41
41
|
|
42
42
|
Detailed configuration (only relevant for complex use cases):
|
@@ -45,9 +45,12 @@ class StructuredDataExtractorClient:
|
|
45
45
|
where the asset is divided into chunks, the schema is extracted from each chunk,
|
46
46
|
and the chunks are then reduced to a single structured data object.
|
47
47
|
|
48
|
-
In some applications, you may not want to:
|
49
|
-
|
50
|
-
|
48
|
+
In some applications, you may not want to:
|
49
|
+
|
50
|
+
- map (if your input asset is small enough)
|
51
|
+
- reduce (if your output object is large enough that it will overflow the output length;
|
52
|
+
if you're extracting a long list of entities; if youre )
|
53
|
+
to extract all instances of the schema).
|
51
54
|
|
52
55
|
You can configure these behaviors with the `map` and `reduce` fields.
|
53
56
|
|
@@ -160,7 +163,7 @@ class AsyncStructuredDataExtractorClient:
|
|
160
163
|
tl;dr:
|
161
164
|
|
162
165
|
- pass a valid JSON schema in `json_schema`
|
163
|
-
- pass the page chunks as a list of `Chunk` objects, by default: {"type": "text", "content": "..."}
|
166
|
+
- pass the page chunks as a list of `Chunk` objects, by default: `{"type": "text", "content": "..."}`
|
164
167
|
- leave all other fields as default
|
165
168
|
|
166
169
|
Detailed configuration (only relevant for complex use cases):
|
@@ -169,9 +172,12 @@ class AsyncStructuredDataExtractorClient:
|
|
169
172
|
where the asset is divided into chunks, the schema is extracted from each chunk,
|
170
173
|
and the chunks are then reduced to a single structured data object.
|
171
174
|
|
172
|
-
In some applications, you may not want to:
|
173
|
-
|
174
|
-
|
175
|
+
In some applications, you may not want to:
|
176
|
+
|
177
|
+
- map (if your input asset is small enough)
|
178
|
+
- reduce (if your output object is large enough that it will overflow the output length;
|
179
|
+
if you're extracting a long list of entities; if youre )
|
180
|
+
to extract all instances of the schema).
|
175
181
|
|
176
182
|
You can configure these behaviors with the `map` and `reduce` fields.
|
177
183
|
|
athena/types/__init__.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
2
2
|
|
3
|
+
from .asset_node import AssetNode
|
3
4
|
from .asset_not_found_error import AssetNotFoundError
|
4
5
|
from .chunk import Chunk
|
5
6
|
from .chunk_content_item import ChunkContentItem, ChunkContentItem_ImageUrl, ChunkContentItem_Text
|
@@ -15,6 +16,7 @@ from .document_chunk import DocumentChunk
|
|
15
16
|
from .drive_agent_response import DriveAgentResponse
|
16
17
|
from .file_chunk_request_out import FileChunkRequestOut
|
17
18
|
from .file_too_large_error import FileTooLargeError
|
19
|
+
from .folder_response import FolderResponse
|
18
20
|
from .general_agent_config import GeneralAgentConfig
|
19
21
|
from .general_agent_config_enabled_tools_item import GeneralAgentConfigEnabledToolsItem
|
20
22
|
from .general_agent_request import GeneralAgentRequest
|
@@ -31,6 +33,7 @@ from .tool import Tool
|
|
31
33
|
from .type import Type
|
32
34
|
|
33
35
|
__all__ = [
|
36
|
+
"AssetNode",
|
34
37
|
"AssetNotFoundError",
|
35
38
|
"Chunk",
|
36
39
|
"ChunkContentItem",
|
@@ -48,6 +51,7 @@ __all__ = [
|
|
48
51
|
"DriveAgentResponse",
|
49
52
|
"FileChunkRequestOut",
|
50
53
|
"FileTooLargeError",
|
54
|
+
"FolderResponse",
|
51
55
|
"GeneralAgentConfig",
|
52
56
|
"GeneralAgentConfigEnabledToolsItem",
|
53
57
|
"GeneralAgentRequest",
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
|
5
|
+
import datetime as dt
|
6
|
+
import typing
|
7
|
+
|
8
|
+
from ..core.datetime_utils import serialize_datetime
|
9
|
+
from ..core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
|
10
|
+
|
11
|
+
|
12
|
+
class AssetNode(pydantic_v1.BaseModel):
|
13
|
+
"""
|
14
|
+
Model representing a node in the folder tree.
|
15
|
+
"""
|
16
|
+
|
17
|
+
children: typing.Optional[typing.Dict[str, typing.Optional[AssetNode]]] = None
|
18
|
+
id: str
|
19
|
+
media_type: str
|
20
|
+
name: str
|
21
|
+
type: str
|
22
|
+
|
23
|
+
def json(self, **kwargs: typing.Any) -> str:
|
24
|
+
kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
25
|
+
return super().json(**kwargs_with_defaults)
|
26
|
+
|
27
|
+
def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
|
28
|
+
kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
29
|
+
kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
|
30
|
+
|
31
|
+
return deep_union_pydantic_dicts(
|
32
|
+
super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
|
33
|
+
)
|
34
|
+
|
35
|
+
class Config:
|
36
|
+
frozen = True
|
37
|
+
smart_union = True
|
38
|
+
extra = pydantic_v1.Extra.allow
|
39
|
+
json_encoders = {dt.datetime: serialize_datetime}
|
40
|
+
|
41
|
+
|
42
|
+
AssetNode.update_forward_refs()
|
@@ -0,0 +1,35 @@
|
|
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 .asset_node import AssetNode
|
9
|
+
|
10
|
+
|
11
|
+
class FolderResponse(pydantic_v1.BaseModel):
|
12
|
+
"""
|
13
|
+
Combined response with tree data and visualization.
|
14
|
+
"""
|
15
|
+
|
16
|
+
structure_tree_ascii: str
|
17
|
+
tree_data: typing.Dict[str, AssetNode]
|
18
|
+
|
19
|
+
def json(self, **kwargs: typing.Any) -> str:
|
20
|
+
kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
21
|
+
return super().json(**kwargs_with_defaults)
|
22
|
+
|
23
|
+
def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
|
24
|
+
kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
25
|
+
kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
|
26
|
+
|
27
|
+
return deep_union_pydantic_dicts(
|
28
|
+
super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
|
29
|
+
)
|
30
|
+
|
31
|
+
class Config:
|
32
|
+
frozen = True
|
33
|
+
smart_union = True
|
34
|
+
extra = pydantic_v1.Extra.allow
|
35
|
+
json_encoders = {dt.datetime: serialize_datetime}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
athena/__init__.py,sha256
|
1
|
+
athena/__init__.py,sha256=Q5F_OwlFj6Y4zWtw4ncDPXp16HWBRrQn7Q4fJYBa5Pc,2538
|
2
2
|
athena/agents/__init__.py,sha256=I6MO2O_hb6KLa8oDHbGNSAhcPE-dsrX6LMcAEhsg3PQ,160
|
3
3
|
athena/agents/client.py,sha256=aI8rNhXBSVJ-hvjnIoCK9sKvHB0e95Zkn-3YpXOKFrY,6721
|
4
4
|
athena/agents/drive/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
@@ -10,10 +10,10 @@ athena/agents/research/client.py,sha256=mo63cUvLw8AC9I29WI4Ym_jOsvRsco1wRqsNp0rt
|
|
10
10
|
athena/agents/sql/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
11
11
|
athena/agents/sql/client.py,sha256=1r2aT4JLxVCeL0FzEBeHmttwerdRmJOxVHim2_CHkvg,4767
|
12
12
|
athena/base_client.py,sha256=-kVdOlIibBz48lxWratdQAzT7fTvZsORvOMF3KoPDPw,5647
|
13
|
-
athena/client.py,sha256=
|
13
|
+
athena/client.py,sha256=5n5pOXAcMljMR2-MnI8fGvHY-TgqLzWmihDur0XrpM8,19503
|
14
14
|
athena/core/__init__.py,sha256=UFXpYzcGxWQUucU1TkjOQ9mGWN3A5JohluOIWVYKU4I,973
|
15
15
|
athena/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
16
|
-
athena/core/client_wrapper.py,sha256=
|
16
|
+
athena/core/client_wrapper.py,sha256=nziI1y3xFUHOGDnMU6SL8HlIHNCXDaJtpfCCe4o2tJ4,1806
|
17
17
|
athena/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
18
18
|
athena/core/file.py,sha256=sy1RUGZ3aJYuw998bZytxxo6QdgKmlnlgBaMvwEKCGg,1480
|
19
19
|
athena/core/http_client.py,sha256=Z4NuAsJD-51yqmoME17O5sxwx5orSp1wsnd6bPyKcgA,17768
|
@@ -39,16 +39,17 @@ athena/query/types/query_execute_request_database_asset_ids.py,sha256=aoVl5Xb34Q
|
|
39
39
|
athena/tools/__init__.py,sha256=DREW2sa5Z-Rj8v1LQ-tNhflI-EO_oDc6NCmF5v0LWeU,288
|
40
40
|
athena/tools/calendar/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
41
41
|
athena/tools/calendar/client.py,sha256=hKWzWyl1GwFG69oX3tektwNfy2sV5Lt6PRy9vTyPLOo,5283
|
42
|
-
athena/tools/client.py,sha256
|
42
|
+
athena/tools/client.py,sha256=-hjk99ABo74-qT8OMMqASl0c7oOkdhHSMFluBa9l5qA,25965
|
43
43
|
athena/tools/email/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
44
44
|
athena/tools/email/client.py,sha256=epUkV5af3eilVgRR81SFZAf29JuhEWKMkdMuN6qDLUM,7593
|
45
45
|
athena/tools/structured_data_extractor/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
46
|
-
athena/tools/structured_data_extractor/client.py,sha256=
|
46
|
+
athena/tools/structured_data_extractor/client.py,sha256=Wr2r_kU8WTRiKA2qfCfqvmllddj3MjT1Vqr27La8gO8,11281
|
47
47
|
athena/tools/tasks/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
48
48
|
athena/tools/tasks/client.py,sha256=5kT6ulh2YDIbNYiv-knBjtF-ST7p0dUvZyrd7t5O61s,2975
|
49
49
|
athena/tools/types/__init__.py,sha256=cA-ZQm6veQAP3_vKu9KkZpISsQqgTBN_Z--FGY1c2iA,197
|
50
50
|
athena/tools/types/tools_data_frame_request_columns_item.py,sha256=GA1FUlTV_CfSc-KToTAwFf4Exl0rr4fsweVZupztjw0,138
|
51
|
-
athena/types/__init__.py,sha256
|
51
|
+
athena/types/__init__.py,sha256=IbCXHjNzSdiLn2HrPsxj90DLzYDp63WJk4FsCVoymK0,2639
|
52
|
+
athena/types/asset_node.py,sha256=CiqYxuYCXhOs9XAvBrUaVVMZpf8gdocVTAUBmUS5l1g,1375
|
52
53
|
athena/types/asset_not_found_error.py,sha256=ZcgqRuzvO4Z8vVVxwtDB-QtKhpVIVV3hqQuJeUoOoJE,1121
|
53
54
|
athena/types/chunk.py,sha256=M4O7Sj3EMvkXioQneuKbptr1n5XNGCU9fVxYR12XG9o,1340
|
54
55
|
athena/types/chunk_content_item.py,sha256=2B1mTc0a4h7jyKRiYwfC573fM4xijhNEgfd_FI-myj4,2251
|
@@ -64,6 +65,7 @@ athena/types/document_chunk.py,sha256=deXiiMA_U5EabUh1Fg2AB4ElYuc5OsTnrU7JwLApJm
|
|
64
65
|
athena/types/drive_agent_response.py,sha256=UMKF43e5WScH0a9ITuxjwGWzAzvXAl1OsfRVeXSyfjk,1218
|
65
66
|
athena/types/file_chunk_request_out.py,sha256=Ju0I_UpSitjQ-XqSIRvvg2XA6QtfCLZClPq5PUqmPNg,1258
|
66
67
|
athena/types/file_too_large_error.py,sha256=AinkrcgR7lcTILAD8RX0x48P3GlSoAh1OihxMvSvRuo,1120
|
68
|
+
athena/types/folder_response.py,sha256=qq0hLRvfJFeXUz7Cc8oeyCabG73ac2H4lM_j0QW38YY,1280
|
67
69
|
athena/types/general_agent_config.py,sha256=FaswWVsDTsL5Fs9Tlx4zSK1S8OrsFnzruEt7l72XlGA,1457
|
68
70
|
athena/types/general_agent_config_enabled_tools_item.py,sha256=6gYaU7uIDJbgygtBKLdYL-VbPxxbEcxwRsT8VaW5vN8,165
|
69
71
|
athena/types/general_agent_request.py,sha256=NnUVtz8U1VoA1SJapbp163Wf_inEQVeFCYWJvM4P-qI,1449
|
@@ -79,6 +81,6 @@ athena/types/text_content.py,sha256=uG2poNIkM6o7tFgf-eKzZk9kZHYImY3JdI-NkYiqWgU,
|
|
79
81
|
athena/types/tool.py,sha256=6H2BFZiBgQOtYUAwSYBeGZKhwev17IEwnIjgmno6dZw,436
|
80
82
|
athena/types/type.py,sha256=JaUIt4ogmO4XxCQ9c56fqKN5qANKkrnpuZGmdqOCIow,581
|
81
83
|
athena/version.py,sha256=8aYAOJtVLaJLpRp6mTiEIhnl8gXA7yE0aDtZ-3mKQ4k,87
|
82
|
-
athena_intelligence-0.1.
|
83
|
-
athena_intelligence-0.1.
|
84
|
-
athena_intelligence-0.1.
|
84
|
+
athena_intelligence-0.1.125.dist-info/METADATA,sha256=YZtDUfJx8ZHA6L-it-tdB-28N1MR0T3LELbTW0bWDBs,5274
|
85
|
+
athena_intelligence-0.1.125.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
86
|
+
athena_intelligence-0.1.125.dist-info/RECORD,,
|
File without changes
|