alita-sdk 0.3.457b0__py3-none-any.whl → 0.3.459__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.
@@ -130,9 +130,24 @@ class SharepointApiWrapper(NonCodeIndexerToolkit):
130
130
  if not limit_files:
131
131
  limit_files = 100
132
132
  #
133
+ site_segments = [seg for seg in self.site_url.strip('/').split('/') if seg][-2:]
134
+ full_path_prefix = '/'.join(site_segments)
135
+ #
133
136
  for lib in all_libraries:
134
137
  library_type = decode_sharepoint_string(lib.properties["EntityTypeName"])
135
- target_folder_url = f"{library_type}/{folder_name}" if folder_name else library_type
138
+ target_folder_url = library_type
139
+ if folder_name:
140
+ folder_path = folder_name.strip('/')
141
+ expected_prefix = f'{full_path_prefix}/{library_type}'
142
+ if folder_path.startswith(full_path_prefix):
143
+ if folder_path.startswith(expected_prefix):
144
+ target_folder_url = folder_path.removeprefix(f'{full_path_prefix}/')
145
+ else:
146
+ # ignore full path folder which is not targeted to current library
147
+ continue
148
+ else:
149
+ target_folder_url = f"{library_type}/{folder_name}"
150
+ #
136
151
  files = (self._client.web.get_folder_by_server_relative_path(target_folder_url)
137
152
  .get_files(True)
138
153
  .execute_query())
@@ -226,13 +241,18 @@ class SharepointApiWrapper(NonCodeIndexerToolkit):
226
241
  'skip_extensions': (Optional[List[str]], Field(
227
242
  description="List of file extensions to skip when processing: i.e. ['*.png', '*.jpg']",
228
243
  default=[])),
244
+ 'path': (Optional[str], Field(
245
+ description="Folder path. "
246
+ "Accepts either a full server-relative path (e.g., '/sites/SiteName/...') or a relative path. "
247
+ "If a relative path is provided, the search will be performed recursively under 'Shared Documents' and other private libraries.",
248
+ default=None)),
229
249
  }
230
250
 
231
251
  def _base_loader(self, **kwargs) -> Generator[Document, None, None]:
232
252
 
233
253
  self._log_tool_event(message="Starting SharePoint files extraction", tool_name="loader")
234
254
  try:
235
- all_files = self.get_files_list(limit_files=kwargs.get('limit_files', 10000))
255
+ all_files = self.get_files_list(kwargs.get('path'), kwargs.get('limit_files', 10000))
236
256
  self._log_tool_event(message="List of the files has been extracted", tool_name="loader")
237
257
  except Exception as e:
238
258
  raise ToolException(f"Unable to extract files: {e}")
@@ -147,12 +147,28 @@ class SharepointAuthorizationHelper:
147
147
  if limit_files is not None and len(result) + len(files) >= limit_files:
148
148
  return files[:limit_files - len(result)]
149
149
  return files
150
+ #
151
+ site_segments = [seg for seg in site_url.strip('/').split('/') if seg][-2:]
152
+ full_path_prefix = '/'.join(site_segments)
153
+ #
150
154
  for drive in drives:
151
155
  drive_id = drive.get("id")
152
156
  drive_path = unquote(urlparse(drive.get("webUrl")).path) if drive.get("webUrl") else ""
153
157
  if not drive_id:
154
158
  continue # skip drives without id
155
- files = _recurse_drive(drive_id, drive_path, folder_name, limit_files)
159
+ #
160
+ sub_folder = folder_name
161
+ if folder_name:
162
+ folder_path = folder_name.strip('/')
163
+ expected_prefix = drive_path.strip('/')#f'{full_path_prefix}/{library_type}'
164
+ if folder_path.startswith(full_path_prefix):
165
+ if folder_path.startswith(expected_prefix):
166
+ sub_folder = folder_path.removeprefix(f'{expected_prefix}').strip('/')#target_folder_url = folder_path.removeprefix(f'{full_path_prefix}/')
167
+ else:
168
+ # ignore full path folder which is not targeted to current drive
169
+ continue
170
+ #
171
+ files = _recurse_drive(drive_id, drive_path, sub_folder, limit_files)
156
172
  result.extend(files)
157
173
  if limit_files is not None and len(result) >= limit_files:
158
174
  return result[:limit_files]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alita_sdk
3
- Version: 0.3.457b0
3
+ Version: 0.3.459
4
4
  Summary: SDK for building langchain agents using resources from Alita
5
5
  Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedj27@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -25,6 +25,10 @@ Requires-Dist: httpcore==1.0.7
25
25
  Requires-Dist: urllib3>=2
26
26
  Requires-Dist: certifi==2024.8.30
27
27
  Requires-Dist: aiohttp>=3.9.0
28
+ Provides-Extra: cli
29
+ Requires-Dist: click>=8.1.0; extra == "cli"
30
+ Requires-Dist: rich>=13.0.0; extra == "cli"
31
+ Requires-Dist: pyyaml>=6.0; extra == "cli"
28
32
  Provides-Extra: runtime
29
33
  Requires-Dist: streamlit>=1.28.0; extra == "runtime"
30
34
  Requires-Dist: langchain_core<0.4.0,>=0.3.76; extra == "runtime"
@@ -138,6 +142,7 @@ Provides-Extra: all
138
142
  Requires-Dist: alita-sdk[runtime]; extra == "all"
139
143
  Requires-Dist: alita-sdk[tools]; extra == "all"
140
144
  Requires-Dist: alita-sdk[community]; extra == "all"
145
+ Requires-Dist: alita-sdk[cli]; extra == "all"
141
146
  Provides-Extra: dev
142
147
  Requires-Dist: pytest; extra == "dev"
143
148
  Requires-Dist: pytest-cov; extra == "dev"
@@ -1,4 +1,11 @@
1
1
  alita_sdk/__init__.py,sha256=fxeNiqiVpIFAJls31Oomifyrtd5gT9iPUTdkWjDOB2Y,656
2
+ alita_sdk/cli/__init__.py,sha256=HiHHouMh0EHmK1qMVzvz6vfIOu8Pm6XXw0dd_hXZ288,278
3
+ alita_sdk/cli/__main__.py,sha256=dAhgWWWEOG1ZiwCs6wQoJwnD62cFRnxiyiAoiFqU8K4,420
4
+ alita_sdk/cli/agents.py,sha256=uMlKiWs85zExE7_Q6NBbw6frnUVK-Ei2KynIddMHXn0,42419
5
+ alita_sdk/cli/cli.py,sha256=k8jwaTKt3At9NfopOcp-BqXitqO0jcei1ACuyoUA9eY,4812
6
+ alita_sdk/cli/config.py,sha256=GiWe7K2RHC_PnH1nEUBodgi0d14oPbIdQhYl69Gbx1o,3978
7
+ alita_sdk/cli/formatting.py,sha256=ip95brhcFcx3Ub7PRLv1aDGniGW13RCGDgc1_8i9ZwM,6566
8
+ alita_sdk/cli/toolkit.py,sha256=IC1zCXiIRUh-swcBC5VhdREIaXGCu5-OfSWyGSUOx0Q,11693
2
9
  alita_sdk/community/__init__.py,sha256=8N7wWwPhoyOq3p8wlV3-pb3l3nJCR8TUrtV9iIPLU88,2523
3
10
  alita_sdk/community/utils.py,sha256=lvuCJaNqVPHOORJV6kIPcXJcdprVW_TJvERtYAEgpjM,249
4
11
  alita_sdk/configurations/__init__.py,sha256=3_MlzyzAi1dog6MFQD_ICOZvaPfXf2UfhSZwlF1knnw,3983
@@ -100,7 +107,7 @@ alita_sdk/runtime/llms/preloaded.py,sha256=3AaUbZK3d8fvxAQMjR3ftOoYa0SnkCOL1Evdv
100
107
  alita_sdk/runtime/models/mcp_models.py,sha256=rbWCAtF8Jjb7uNgQHhVWyDttXaqPNbRLL087Lf0AjNU,2301
101
108
  alita_sdk/runtime/toolkits/__init__.py,sha256=IenSyI2SrXSFuiWT7c8YO_mRFLVE_zNge61U4bpoyPw,631
102
109
  alita_sdk/runtime/toolkits/application.py,sha256=HHAKgwKOckxc7EQG-AV7rz4POOzQJKFRr7AGEjmLudE,2688
103
- alita_sdk/runtime/toolkits/artifact.py,sha256=YChNCX4QhVpaQG7Jk4TS-Wl0Aruc4slQ2K21zh9nNO0,3176
110
+ alita_sdk/runtime/toolkits/artifact.py,sha256=HvunflqpLwrvpn8Jz8AKF_CIowIGEsfG96gqredMgO0,3251
104
111
  alita_sdk/runtime/toolkits/configurations.py,sha256=kIDAlnryPQfbZyFxV-9SzN2-Vefzx06TX1BBdIIpN90,141
105
112
  alita_sdk/runtime/toolkits/datasource.py,sha256=qk78OdPoReYPCWwahfkKLbKc4pfsu-061oXRryFLP6I,2498
106
113
  alita_sdk/runtime/toolkits/mcp.py,sha256=wa-47obeWm8WrIiaUw5BR40dsR5sLdQKZHzG7MCRnRM,37105
@@ -114,7 +121,7 @@ alita_sdk/runtime/tools/application.py,sha256=RCGe-mRfj8372gTFkEX2xBvcYhw7IKdU1t
114
121
  alita_sdk/runtime/tools/artifact.py,sha256=u3szFwZqguHrPZ3tZJ7S_TiZl7cxlT3oHYd6zbdpRDE,13842
115
122
  alita_sdk/runtime/tools/datasource.py,sha256=pvbaSfI-ThQQnjHG-QhYNSTYRnZB0rYtZFpjCfpzxYI,2443
116
123
  alita_sdk/runtime/tools/echo.py,sha256=spw9eCweXzixJqHnZofHE1yWiSUa04L4VKycf3KCEaM,486
117
- alita_sdk/runtime/tools/function.py,sha256=8KTMwut7BnruaVhgO2zFn9YvCU5bT7REQdpPV-SbHh8,6605
124
+ alita_sdk/runtime/tools/function.py,sha256=0O29IFs0ZupXxqXwGa4Pmm_QdxulUR3ZDGowXDPRgv8,6557
118
125
  alita_sdk/runtime/tools/graph.py,sha256=7jImBBSEdP5Mjnn2keOiyUwdGDFhEXLUrgUiugO3mgA,3503
119
126
  alita_sdk/runtime/tools/image_generation.py,sha256=Kls9D_ke_SK7xmVr7I9SlQcAEBJc86gf66haN0qIj9k,7469
120
127
  alita_sdk/runtime/tools/indexer_tool.py,sha256=whSLPevB4WD6dhh2JDXEivDmTvbjiMV1MrPl9cz5eLA,4375
@@ -311,7 +318,7 @@ alita_sdk/tools/postman/postman_analysis.py,sha256=ckc2BfKEop0xnmLPksVRE_Y94ixuq
311
318
  alita_sdk/tools/pptx/__init__.py,sha256=JP4523kvgcRbKevy9s7KllDbzHV9-ArKMNBuzeT97VI,3378
312
319
  alita_sdk/tools/pptx/pptx_wrapper.py,sha256=yyCYcTlIY976kJ4VfPo4dyxj4yeii9j9TWP6W8ZIpN8,29195
313
320
  alita_sdk/tools/qtest/__init__.py,sha256=IGObKF5m7vCE1Pq4cQ7iAMBckryZ5gowdBbnAey5DFQ,4384
314
- alita_sdk/tools/qtest/api_wrapper.py,sha256=YiXkCPlzudHl7Hke-U8oWvix1mD_00poD8MNa9F2YR4,61841
321
+ alita_sdk/tools/qtest/api_wrapper.py,sha256=1zhIOePMGYJm0NwzyXkxh39DTTu0vnCEZ1CsQQxVcIA,95498
315
322
  alita_sdk/tools/qtest/tool.py,sha256=kKzNPS4fUC76WQQttQ6kdVANViHEvKE8Kf174MQiNYU,562
316
323
  alita_sdk/tools/rally/__init__.py,sha256=VESgUY_m0lQVyoSuuCRyLgURn7vHs-JIMS_0oH4e0LQ,3347
317
324
  alita_sdk/tools/rally/api_wrapper.py,sha256=mouzU6g0KML4UNapdk0k6Q0pU3MpJuWnNo71n9PSEHM,11752
@@ -325,8 +332,8 @@ alita_sdk/tools/servicenow/__init__.py,sha256=rI8WrlA5mKxdSe7NYX6Ehd0NTfGx2CEbE6
325
332
  alita_sdk/tools/servicenow/api_wrapper.py,sha256=WpH-bBLGFdhehs4g-K-WAkNuaD1CSrwsDpdgB3RG53s,6120
326
333
  alita_sdk/tools/servicenow/servicenow_client.py,sha256=Rdqfu-ll-qbnclMzChLZBsfXRDzgoX_FdeI2WLApWxc,3269
327
334
  alita_sdk/tools/sharepoint/__init__.py,sha256=mtBw8oBq2LWQpMAgidF7BDn3oOgD3QCWEQjBW80RN3M,4117
328
- alita_sdk/tools/sharepoint/api_wrapper.py,sha256=yOAZfa9-GcjohTak-TqcFL8f7s18hIA89FNO0qXjb_s,16614
329
- alita_sdk/tools/sharepoint/authorization_helper.py,sha256=GN_UkI_HOn9b5UFlxqck7sm6HuB_Kh4wCIGBYFPe2dg,11924
335
+ alita_sdk/tools/sharepoint/api_wrapper.py,sha256=wzwqEmsNRopGzOjOleSsrsfZON4zRyExYZpZqUdWp60,17809
336
+ alita_sdk/tools/sharepoint/authorization_helper.py,sha256=tlmsw3l2UGvVRZS3cHCKCy_arx_IkUuhBOCf9GZ9T6U,12818
330
337
  alita_sdk/tools/sharepoint/utils.py,sha256=CO1PNRC5CpQaVo2Gdenj_jqm2bReSqUT92Bk5s37d8M,573
331
338
  alita_sdk/tools/slack/__init__.py,sha256=AurOivHcpqvrrbg7rwTz8lrMfM6KPskWmHs6ml0jZVM,4057
332
339
  alita_sdk/tools/slack/api_wrapper.py,sha256=5VrV7iSGno8ZcDzEHdGPNhInhtODGPPvAzoZ9W9iQWE,14009
@@ -361,8 +368,9 @@ alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=kT0TbmMvuKhDUZc0i7KO18O38JM9S
361
368
  alita_sdk/tools/zephyr_squad/__init__.py,sha256=Gl1YAFaMMufTNjIpnuo_c_lbDsQkmproYdZz2ZppgJ4,3007
362
369
  alita_sdk/tools/zephyr_squad/api_wrapper.py,sha256=kmw_xol8YIYFplBLWTqP_VKPRhL_1ItDD0_vXTe_UuI,14906
363
370
  alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py,sha256=R371waHsms4sllHCbijKYs90C-9Yu0sSR3N4SUfQOgU,5066
364
- alita_sdk-0.3.457b0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
365
- alita_sdk-0.3.457b0.dist-info/METADATA,sha256=y8iIPCwCcawEBlaA7fFZJMRL-C-JG_ykWWiV35rZnGE,19103
366
- alita_sdk-0.3.457b0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
367
- alita_sdk-0.3.457b0.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
368
- alita_sdk-0.3.457b0.dist-info/RECORD,,
371
+ alita_sdk-0.3.459.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
372
+ alita_sdk-0.3.459.dist-info/METADATA,sha256=7Oo76t6BYB0tv0jHbuloCQQrwMpcw7Ga_jqI1KVZeJ0,19298
373
+ alita_sdk-0.3.459.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
374
+ alita_sdk-0.3.459.dist-info/entry_points.txt,sha256=sSxsIZu9YjVGsgf-5mHC631FeBcT6f2vUjm0A_L9tcU,53
375
+ alita_sdk-0.3.459.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
376
+ alita_sdk-0.3.459.dist-info/RECORD,,
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ alita-cli = alita_sdk.cli.cli:main