athena-intelligence 0.1.123__py3-none-any.whl → 0.1.124__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 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",
@@ -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.123",
20
+ "X-Fern-SDK-Version": "0.1.124",
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: - map (if your input asset is small enough) - reduce (if your output object is large enough that it will overflow the output length;
49
- if you're extracting a long list of entities; if youre )
50
- to extract all instances of the schema).
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: - map (if your input asset is small enough) - reduce (if your output object is large enough that it will overflow the output length;
173
- if you're extracting a long list of entities; if youre )
174
- to extract all instances of the schema).
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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: athena-intelligence
3
- Version: 0.1.123
3
+ Version: 0.1.124
4
4
  Summary: Athena Intelligence Python Library
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Intended Audience :: Developers
@@ -1,4 +1,4 @@
1
- athena/__init__.py,sha256=-QY5Njk1mv2eVt9CMdJSaU_nMqoXzZ8d5kHjxKCs7jU,2464
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
@@ -13,7 +13,7 @@ athena/base_client.py,sha256=-kVdOlIibBz48lxWratdQAzT7fTvZsORvOMF3KoPDPw,5647
13
13
  athena/client.py,sha256=4PUPrBPCMTFpHR1yuKVR5eC1AYBl_25SMf6ZH82JHB0,19039
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=QpWDM_UvxCir-D4qH9GDRZGMoDC2fW-UpSPKEHT3S0o,1806
16
+ athena/core/client_wrapper.py,sha256=PsnlYk4Sr5_x1d3Z8hUp0g3i5pD1dqfmKXH-mHvU04Q,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=9ec2gnf3z_vhr3EqT_-ZksevTDtFP1jftPY4os0Ty3Q,21166
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=0rEq5bftoWQJwCF9fcP3r8nUSY5hZLy_pOAucena9Go,11235
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=-VA36LN5Q1SLk5IUgw159TBfTtTmvbgAOfaL-3TRY7A,2522
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.123.dist-info/METADATA,sha256=Au7QjNP7MXi0igYTXg3ypVp_OHoNiFm-Q8c-E53dEGU,5274
83
- athena_intelligence-0.1.123.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
84
- athena_intelligence-0.1.123.dist-info/RECORD,,
84
+ athena_intelligence-0.1.124.dist-info/METADATA,sha256=lwtK__HdkgNj6iBeRlDN4JVY5z7XoZPv1ABXIwaBRT0,5274
85
+ athena_intelligence-0.1.124.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
86
+ athena_intelligence-0.1.124.dist-info/RECORD,,