alita-sdk 0.3.262__py3-none-any.whl → 0.3.264__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.
@@ -77,4 +77,11 @@ class Artifact:
77
77
  if not bucket_name:
78
78
  bucket_name = self.bucket_name
79
79
  return self.create(artifact_name, new_data, bucket_name)
80
+
81
+ def get_content_bytes(self,
82
+ artifact_name: str,
83
+ bucket_name: str = None):
84
+ if not bucket_name:
85
+ bucket_name = self.bucket_name
86
+ return self.client.download_artifact(bucket_name, artifact_name)
80
87
 
@@ -127,11 +127,6 @@ loaders_map = {
127
127
  'extract_images': True
128
128
  }
129
129
  },
130
- '.doc': {
131
- 'class': AlitaTextLoader,
132
- 'is_multimodal_processing': True,
133
- 'kwargs': {}
134
- },
135
130
  '.json': {
136
131
  'class': AlitaJSONLoader,
137
132
  'is_multimodal_processing': False,
@@ -3,7 +3,7 @@ from typing import List, Any, Literal, Optional
3
3
  from alita_sdk.tools.utils import clean_string, TOOLKIT_SPLITTER, get_max_toolkit_length
4
4
  from langchain_community.agent_toolkits.base import BaseToolkit
5
5
  from langchain_core.tools import BaseTool
6
- from pydantic import create_model, BaseModel, ConfigDict, Field, SecretStr
6
+ from pydantic import create_model, BaseModel, ConfigDict, Field
7
7
  from pydantic.fields import FieldInfo
8
8
  from ..tools.artifact import ArtifactWrapper
9
9
  from alita_sdk.tools.base.tool import BaseAction
@@ -74,10 +74,9 @@ def get_tools(tools_list: list, alita_client, llm, memory_store: BaseStore = Non
74
74
  selected_tools=tool['settings'].get('selected_tools', []),
75
75
  llm=llm,
76
76
  # indexer settings
77
- connection_string=tool['settings'].get('connection_string', None),
78
- collection_name=tool.get('toolkit_name'),
77
+ pgvector_configuration=tool['settings'].get('pgvector_configuration', {}),
79
78
  embedding_model=tool['settings'].get('embedding_model'),
80
- vectorstore_type="PGVector"
79
+ collection_name=f"{tool.get('toolkit_name')}",
81
80
  ).get_tools())
82
81
  elif tool['type'] == 'vectorstore':
83
82
  tools.extend(VectorStoreToolkit.get_toolkit(
@@ -1,15 +1,17 @@
1
1
  import hashlib
2
2
  import json
3
3
  import logging
4
- from typing import Any, Optional, Generator, List
4
+ from typing import Any, Optional, Generator
5
5
 
6
6
  from langchain_core.documents import Document
7
7
  from langchain_core.tools import ToolException
8
8
  from pydantic import create_model, Field, model_validator
9
9
 
10
- from alita_sdk.tools.elitea_base import BaseVectorStoreToolApiWrapper, extend_with_vector_tools
10
+ from alita_sdk.tools.non_code_indexer_toolkit import NonCodeIndexerToolkit
11
+ from alita_sdk.tools.utils.available_tools_decorator import extend_with_parent_available_tools
11
12
 
12
- class ArtifactWrapper(BaseVectorStoreToolApiWrapper):
13
+
14
+ class ArtifactWrapper(NonCodeIndexerToolkit):
13
15
  bucket: str
14
16
  artifact: Optional[Any] = None
15
17
 
@@ -21,7 +23,7 @@ class ArtifactWrapper(BaseVectorStoreToolApiWrapper):
21
23
  if not values.get('bucket'):
22
24
  raise ValueError("Bucket is required.")
23
25
  values["artifact"] = values['alita'].artifact(values['bucket'])
24
- return values
26
+ return super().validate_toolkit(values)
25
27
 
26
28
  def list_files(self, bucket_name = None, return_as_string = True):
27
29
  return self.artifact.list(bucket_name, return_as_string)
@@ -76,20 +78,18 @@ class ArtifactWrapper(BaseVectorStoreToolApiWrapper):
76
78
  hasher.update(file_name.encode('utf-8'))
77
79
  return hasher.hexdigest()
78
80
 
79
- def _process_document(self, document: Document) -> Generator[Document, None, None]:
80
- try:
81
- page_content = self.read_file(document.metadata['name'], is_capture_image=True, excel_by_sheets=True)
82
- except Exception as e:
83
- logging.error(f"Failed while parsing the file 'document.metadata['Path']': {e}")
84
- if isinstance(page_content, dict):
85
- for key, value in page_content.items():
86
- metadata = document.metadata
87
- metadata['page'] = key
88
- yield Document(page_content=str(value), metadata=metadata)
89
- else:
90
- document.page_content = json.dumps(str(page_content))
91
-
92
- @extend_with_vector_tools
81
+ def _extend_data(self, documents: Generator[Document, None, None]):
82
+ for document in documents:
83
+ try:
84
+ page_content = self.artifact.get_content_bytes(artifact_name=document.metadata['name'])
85
+ document.metadata['loader_content'] = page_content
86
+ document.metadata['loader_content_type'] = document.metadata['name']
87
+ yield document
88
+ except Exception as e:
89
+ logging.error(f"Failed while parsing the file '{document.metadata['name']}': {e}")
90
+ yield document
91
+
92
+ @extend_with_parent_available_tools
93
93
  def get_available_tools(self):
94
94
  bucket_name = (Optional[str], Field(description="Name of the bucket to work with."
95
95
  "If bucket is not specified by user directly, the name should be taken from chat history."
@@ -1,5 +1,6 @@
1
1
  import json
2
2
  import math
3
+ from collections import OrderedDict
3
4
  from logging import getLogger
4
5
  from typing import Any, Optional, List, Dict, Generator
5
6
 
@@ -398,11 +399,18 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
398
399
 
399
400
  # Initialize document map for tracking by ID
400
401
  doc_map = {
401
- f"{doc.metadata.get('id', f'idx_{i}')}_{doc.metadata['chunk_id']}"
402
- if 'chunk_id' in doc.metadata
403
- else doc.metadata.get('id', f"idx_{i}"): (doc, score)
402
+ (
403
+ f"{doc.metadata.get('id', f'idx_{i}')}_{doc.metadata['chunk_id']}"
404
+ if 'chunk_id' in doc.metadata
405
+ else doc.metadata.get('id', f"idx_{i}")
406
+ ): (doc, 1 - score)
404
407
  for i, (doc, score) in enumerate(vector_items)
405
408
  }
409
+
410
+ # Sort the items by the new score in descending order
411
+ doc_map = OrderedDict(
412
+ sorted(doc_map.items(), key=lambda x: x[1][1], reverse=True)
413
+ )
406
414
 
407
415
  # Process full-text search if configured
408
416
  if full_text_search and full_text_search.get('enabled') and full_text_search.get('fields'):
@@ -452,7 +460,7 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
452
460
 
453
461
  # Apply cutoff filter
454
462
  if cut_off:
455
- combined_items = [item for item in combined_items if abs(item[1]) <= cut_off]
463
+ combined_items = [item for item in combined_items if abs(item[1]) >= cut_off]
456
464
 
457
465
  # Sort by score and limit results
458
466
  # DISABLED: for chroma we want ascending order (lower score is better), for others descending
@@ -34,7 +34,7 @@ BaseSearchParams = create_model(
34
34
  default={},
35
35
  examples=["{\"key\": \"value\"}", "{\"status\": \"active\"}"]
36
36
  )),
37
- cut_off=(Optional[float], Field(description="Cut-off score for search results", default=0.5)),
37
+ cut_off=(Optional[float], Field(description="Cut-off score for search results", default=0.5, ge=0, le=1)),
38
38
  search_top=(Optional[int], Field(description="Number of top results to return", default=10)),
39
39
  full_text_search=(Optional[Dict[str, Any]], Field(
40
40
  description="Full text search parameters. Can be a dictionary with search options.",
@@ -64,7 +64,7 @@ BaseStepbackSearchParams = create_model(
64
64
  default={},
65
65
  examples=["{\"key\": \"value\"}", "{\"status\": \"active\"}"]
66
66
  )),
67
- cut_off=(Optional[float], Field(description="Cut-off score for search results", default=0.5)),
67
+ cut_off=(Optional[float], Field(description="Cut-off score for search results", default=0.5, ge=0, le=1)),
68
68
  search_top=(Optional[int], Field(description="Number of top results to return", default=10)),
69
69
  reranker=(Optional[dict], Field(
70
70
  description="Reranker configuration. Can be a dictionary with reranking parameters.",
@@ -100,11 +100,8 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
100
100
 
101
101
  doctype: str = "document"
102
102
 
103
- llm: Any = None
104
103
  connection_string: Optional[SecretStr] = None
105
104
  collection_name: Optional[str] = None
106
- embedding_model: Optional[str] = "HuggingFaceEmbeddings"
107
- vectorstore_type: Optional[str] = "PGVector"
108
105
  _embedding: Optional[Any] = None
109
106
  alita: Any = None # Elitea client, if available
110
107
 
@@ -115,10 +112,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
115
112
 
116
113
  if 'embedding_model' not in kwargs:
117
114
  kwargs['embedding_model'] = 'HuggingFaceEmbeddings'
118
- if 'vectorstore_type' not in kwargs:
119
- kwargs['vectorstore_type'] = 'PGVector'
120
- vectorstore_type = kwargs.get('vectorstore_type')
121
- kwargs['vectorstore_params'] = VectorStoreAdapterFactory.create_adapter(vectorstore_type).get_vectorstore_params(collection_name, connection_string)
115
+ kwargs['vectorstore_params'] = VectorStoreAdapterFactory.create_adapter(self.vectorstore_type).get_vectorstore_params(collection_name, connection_string)
122
116
  kwargs['_embedding'] = kwargs.get('alita').get_embeddings(kwargs.get('embedding_model'))
123
117
  super().__init__(**kwargs)
124
118
 
@@ -1,5 +1,6 @@
1
1
  import logging
2
- from typing import Optional, Generator
2
+ import re
3
+ from typing import Optional, Generator, List
3
4
 
4
5
  from langchain_core.documents import Document
5
6
  from langchain_core.tools import ToolException
@@ -23,7 +24,11 @@ ReadList = create_model(
23
24
  GetFiles = create_model(
24
25
  "GetFiles",
25
26
  folder_name=(Optional[str], Field(description="Folder name to get list of the files.", default=None)),
26
- limit_files=(Optional[int], Field(description="Limit (maximum number) of files to be returned. Can be called with synonyms, such as First, Top, etc., or can be reflected just by a number for example 'Top 10 files'. Use default value if not specified in a query WITH NO EXTRA CONFIRMATION FROM A USER", default=100)),
27
+ limit_files=(Optional[int], Field(description="Limit (maximum number) of files to be returned."
28
+ "Can be called with synonyms, such as First, Top, etc., "
29
+ "or can be reflected just by a number for example 'Top 10 files'. "
30
+ "Use default value if not specified in a query WITH NO EXTRA "
31
+ "CONFIRMATION FROM A USER", default=100)),
27
32
  )
28
33
 
29
34
  ReadDocument = create_model(
@@ -100,7 +105,8 @@ class SharepointApiWrapper(NonCodeIndexerToolkit):
100
105
  """ If folder name is specified, lists all files in this folder under Shared Documents path. If folder name is empty, lists all files under root catalog (Shared Documents). Number of files is limited by limit_files (default is 100)."""
101
106
  try:
102
107
  result = []
103
-
108
+ if not limit_files:
109
+ limit_files = 100
104
110
  target_folder_url = f"Shared Documents/{folder_name}" if folder_name else "Shared Documents"
105
111
  files = (self._client.web.get_folder_by_server_relative_path(target_folder_url)
106
112
  .get_files(True)
@@ -146,13 +152,45 @@ class SharepointApiWrapper(NonCodeIndexerToolkit):
146
152
  excel_by_sheets=excel_by_sheets,
147
153
  llm=self.llm)
148
154
 
155
+ def _index_tool_params(self):
156
+ return {
157
+ 'limit_files': (Optional[int], Field(
158
+ description="Limit (maximum number) of files to be returned. Can be called with synonyms, "
159
+ "such as First, Top, etc., or can be reflected just by a number for example 'Top 10 files'. "
160
+ "Use default value if not specified in a query WITH NO EXTRA CONFIRMATION FROM A USER",
161
+ default=1000, ge=0)),
162
+ 'include_extensions': (Optional[List[str]], Field(
163
+ description="List of file extensions to include when processing: i.e. ['*.png', '*.jpg']. "
164
+ "If empty, all files will be processed (except skip_extensions).",
165
+ default=[])),
166
+ 'skip_extensions': (Optional[List[str]], Field(
167
+ description="List of file extensions to skip when processing: i.e. ['*.png', '*.jpg']",
168
+ default=[])),
169
+ }
170
+
149
171
  def _base_loader(self, **kwargs) -> Generator[Document, None, None]:
150
172
  try:
151
- all_files = self.get_files_list()
173
+ all_files = self.get_files_list(kwargs.get('limit_files', 10000))
152
174
  except Exception as e:
153
175
  raise ToolException(f"Unable to extract files: {e}")
154
176
 
177
+ include_extensions = kwargs.get('include_extensions', [])
178
+ skip_extensions = kwargs.get('skip_extensions', [])
179
+
155
180
  for file in all_files:
181
+ file_name = file.get('Name', '')
182
+
183
+ # Check if file should be skipped based on skip_extensions
184
+ if any(re.match(pattern.replace('*', '.*') + '$', file_name, re.IGNORECASE)
185
+ for pattern in skip_extensions):
186
+ continue
187
+
188
+ # Check if file should be included based on include_extensions
189
+ # If include_extensions is empty, process all files (that weren't skipped)
190
+ if not (any(re.match(pattern.replace('*', '.*') + '$', file_name, re.IGNORECASE)
191
+ for pattern in include_extensions)):
192
+ continue
193
+
156
194
  metadata = {
157
195
  ("updated_on" if k == "Modified" else k): str(v)
158
196
  for k, v in file.items()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alita_sdk
3
- Version: 0.3.262
3
+ Version: 0.3.264
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 <lifedjik@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -25,7 +25,7 @@ alita_sdk/configurations/zephyr.py,sha256=ndqGYFy5OFxjoXB7DzC71rd5W6qGBGAlKMWoqT
25
25
  alita_sdk/configurations/zephyr_enterprise.py,sha256=5W1QEcv62Y5Rk_kApI2QmOwvWZeEWMgO5xHOKLVmTm0,710
26
26
  alita_sdk/runtime/__init__.py,sha256=4W0UF-nl3QF2bvET5lnah4o24CoTwSoKXhuN0YnwvEE,828
27
27
  alita_sdk/runtime/clients/__init__.py,sha256=BdehU5GBztN1Qi1Wul0cqlU46FxUfMnI6Vq2Zd_oq1M,296
28
- alita_sdk/runtime/clients/artifact.py,sha256=H3pJAh5G-zWVyJ6YbqHGk4jA8U6HfacQduiTivpJZ3Y,3210
28
+ alita_sdk/runtime/clients/artifact.py,sha256=TPvROw1qu4IyUEGuf7x40IKRpb5eFZpYGN3-8LfQE0M,3461
29
29
  alita_sdk/runtime/clients/client.py,sha256=13_Ht9MnRO-9V1uP9_YTxM07g7mpm2uVevVh2wDPOnE,43567
30
30
  alita_sdk/runtime/clients/datasource.py,sha256=HAZovoQN9jBg0_-lIlGBQzb4FJdczPhkHehAiVG3Wx0,1020
31
31
  alita_sdk/runtime/clients/prompt.py,sha256=li1RG9eBwgNK_Qf0qUaZ8QNTmsncFrAL2pv3kbxZRZg,1447
@@ -57,7 +57,7 @@ alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py,sha256=CUVVnisx
57
57
  alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py,sha256=o0SRFPZ-VskltgThVRX80rT19qtB4gPzxED9SENTNWo,4145
58
58
  alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py,sha256=uNcV0En49_0u0RYB1sP1XfNspT2Xc5CacuJr9Jqv79Q,2972
59
59
  alita_sdk/runtime/langchain/document_loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- alita_sdk/runtime/langchain/document_loaders/constants.py,sha256=EL20rusYbnPk2zwOh8-gxSdaEuqThZJcqiyINXphxFw,4607
60
+ alita_sdk/runtime/langchain/document_loaders/constants.py,sha256=TInNFvUQ_Eq05_PP_zDk1ZIMh52xJ_cCvf56dub6nZQ,4489
61
61
  alita_sdk/runtime/langchain/document_loaders/utils.py,sha256=9xghESf3axBbwxATyVuS0Yu-TWe8zWZnXgCD1ZVyNW0,2414
62
62
  alita_sdk/runtime/langchain/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
63
  alita_sdk/runtime/langchain/interfaces/kwextractor.py,sha256=kSJA9L8g8UArmHu7Bd9dIO0Rrq86JPUb8RYNlnN68FQ,3072
@@ -83,17 +83,17 @@ alita_sdk/runtime/llms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
83
83
  alita_sdk/runtime/llms/preloaded.py,sha256=3AaUbZK3d8fvxAQMjR3ftOoYa0SnkCOL1EvdvDCXIHE,11321
84
84
  alita_sdk/runtime/toolkits/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
85
  alita_sdk/runtime/toolkits/application.py,sha256=Mn8xwIdlbuyNzroH-WVVWJG0biOUV7u8qS15fQJ_XmI,2186
86
- alita_sdk/runtime/toolkits/artifact.py,sha256=EJFb3tVnFa-qjBOeBr14nXS9EYef1-GoYWbG6UyvAVw,3046
86
+ alita_sdk/runtime/toolkits/artifact.py,sha256=3AjdKxrsbb0kzQ6NxJla9XqJcgyDJicMAqhQcWOjLW0,3035
87
87
  alita_sdk/runtime/toolkits/configurations.py,sha256=kIDAlnryPQfbZyFxV-9SzN2-Vefzx06TX1BBdIIpN90,141
88
88
  alita_sdk/runtime/toolkits/datasource.py,sha256=qk78OdPoReYPCWwahfkKLbKc4pfsu-061oXRryFLP6I,2498
89
89
  alita_sdk/runtime/toolkits/prompt.py,sha256=WIpTkkVYWqIqOWR_LlSWz3ug8uO9tm5jJ7aZYdiGRn0,1192
90
90
  alita_sdk/runtime/toolkits/subgraph.py,sha256=ZYqI4yVLbEPAjCR8dpXbjbL2ipX598Hk3fL6AgaqFD4,1758
91
- alita_sdk/runtime/toolkits/tools.py,sha256=2WJNELUOjEL1v0LKANJ4crB2Kow3pfI03X1n30zUtTM,7906
91
+ alita_sdk/runtime/toolkits/tools.py,sha256=jNgWazbCb2t-H0OOErg7oPDxKXM-ezUAc6y9wqlI6GY,7875
92
92
  alita_sdk/runtime/toolkits/vectorstore.py,sha256=BGppQADa1ZiLO17fC0uCACTTEvPHlodEDYEzUcBRbAA,2901
93
93
  alita_sdk/runtime/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
94
  alita_sdk/runtime/tools/agent.py,sha256=m98QxOHwnCRTT9j18Olbb5UPS8-ZGeQaGiUyZJSyFck,3162
95
95
  alita_sdk/runtime/tools/application.py,sha256=mC2_ZFx4WLHc98Gzll88Vw6cqyx2cmbig2IeJBtHRdg,2836
96
- alita_sdk/runtime/tools/artifact.py,sha256=zm7Yo7uItxxZ8kX19xki0FA5TwP4f764rN32AXC3kiU,8617
96
+ alita_sdk/runtime/tools/artifact.py,sha256=fM_yp8Y2gNXAWvGNrtwQkS92c3Pfme8vZVxUrqi535o,8617
97
97
  alita_sdk/runtime/tools/datasource.py,sha256=pvbaSfI-ThQQnjHG-QhYNSTYRnZB0rYtZFpjCfpzxYI,2443
98
98
  alita_sdk/runtime/tools/echo.py,sha256=spw9eCweXzixJqHnZofHE1yWiSUa04L4VKycf3KCEaM,486
99
99
  alita_sdk/runtime/tools/function.py,sha256=ZFpd7TGwIawze2e7BHlKwP0NHwNw42wwrmmnXyJQJhk,2600
@@ -107,7 +107,7 @@ alita_sdk/runtime/tools/prompt.py,sha256=nJafb_e5aOM1Rr3qGFCR-SKziU9uCsiP2okIMs9
107
107
  alita_sdk/runtime/tools/router.py,sha256=wCvZjVkdXK9dMMeEerrgKf5M790RudH68pDortnHSz0,1517
108
108
  alita_sdk/runtime/tools/tool.py,sha256=lE1hGi6qOAXG7qxtqxarD_XMQqTghdywf261DZawwno,5631
109
109
  alita_sdk/runtime/tools/vectorstore.py,sha256=yl6FKJGVQDevftSkxWTkMbqjIskIFz69vXELdEGp9u4,34780
110
- alita_sdk/runtime/tools/vectorstore_base.py,sha256=OM9nMUzQ7SgfQD8QYlzGYLXzKuGMZ1onpqSrBx9vMKk,27381
110
+ alita_sdk/runtime/tools/vectorstore_base.py,sha256=Hxd74XNiuxsc6Fe9CufTrLATWUPnm5278t0a-1YswR8,27638
111
111
  alita_sdk/runtime/utils/AlitaCallback.py,sha256=E4LlSBuCHWiUq6W7IZExERHZY0qcmdjzc_rJlF2iQIw,7356
112
112
  alita_sdk/runtime/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
113
  alita_sdk/runtime/utils/constants.py,sha256=Xntx1b_uxUzT4clwqHA_U6K8y5bBqf_4lSQwXdcWrp4,13586
@@ -119,7 +119,7 @@ alita_sdk/runtime/utils/toolkit_runtime.py,sha256=MU63Fpxj0b5_r1IUUc0Q3-PN9VwL7r
119
119
  alita_sdk/runtime/utils/toolkit_utils.py,sha256=I9QFqnaqfVgN26LUr6s3XlBlG6y0CoHURnCzG7XcwVs,5311
120
120
  alita_sdk/runtime/utils/utils.py,sha256=CpEl3LCeLbhzQySz08lkKPm7Auac6IiLF7WB8wmArMI,589
121
121
  alita_sdk/tools/__init__.py,sha256=ko5TToGYZFmBrho26DRAVvrkHWxQ2sfs8gVAASinYp8,10611
122
- alita_sdk/tools/base_indexer_toolkit.py,sha256=UVaTzYkWEvH9LLTaxOEOUtU98CAhcXko9uvFZjhRYd0,17957
122
+ alita_sdk/tools/base_indexer_toolkit.py,sha256=psUKFZaGCPAHLpwbAsG_niZPXKEFNGJHBCwa4gXDiuA,17701
123
123
  alita_sdk/tools/elitea_base.py,sha256=PfelIUb5YFTjDN_1jNYT9tJbjfYr11PAUrPQHyW2d5I,32830
124
124
  alita_sdk/tools/non_code_indexer_toolkit.py,sha256=v9uq1POE1fQKCd152mbqDtF-HSe0qoDj83k4E5LAkMI,1080
125
125
  alita_sdk/tools/ado/__init__.py,sha256=u2tdDgufGuDb-7lIgKKQlqgStL9Wd1gzNmRNYems2c0,1267
@@ -299,7 +299,7 @@ alita_sdk/tools/servicenow/__init__.py,sha256=hReiTp8yv07eR0O_1KJThzUO2xhWhIWcjU
299
299
  alita_sdk/tools/servicenow/api_wrapper.py,sha256=WpH-bBLGFdhehs4g-K-WAkNuaD1CSrwsDpdgB3RG53s,6120
300
300
  alita_sdk/tools/servicenow/servicenow_client.py,sha256=Rdqfu-ll-qbnclMzChLZBsfXRDzgoX_FdeI2WLApWxc,3269
301
301
  alita_sdk/tools/sharepoint/__init__.py,sha256=Mofg_N-7zFf5mKm3_0D0dhC_H0MX-bk3YQ5Sl3oXokg,4114
302
- alita_sdk/tools/sharepoint/api_wrapper.py,sha256=Hcd9YypWMr3upDVJHRxUyPdN4k8joqRQOc_uce2ek1A,9250
302
+ alita_sdk/tools/sharepoint/api_wrapper.py,sha256=FEAy1LTKx81_bmPAh8mhGCJe2lxrOlEAR03LRLnQtms,11312
303
303
  alita_sdk/tools/sharepoint/authorization_helper.py,sha256=n-nL5dlBoLMK70nHu7P2RYCb8C6c9HMA_gEaw8LxuhE,2007
304
304
  alita_sdk/tools/sharepoint/utils.py,sha256=fZ1YzAu5CTjKSZeslowpOPH974902S8vCp1Wu7L44LM,446
305
305
  alita_sdk/tools/slack/__init__.py,sha256=o8BnDMWGC5qA8pVIyIiflM6T__dZ6qAE1UdtJcvmaxk,3901
@@ -335,8 +335,8 @@ alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=HOt9ShtJI_1tVPcwd3Rwk-VS0SMLq
335
335
  alita_sdk/tools/zephyr_squad/__init__.py,sha256=0AI_j27xVO5Gk5HQMFrqPTd4uvuVTpiZUicBrdfEpKg,2796
336
336
  alita_sdk/tools/zephyr_squad/api_wrapper.py,sha256=kmw_xol8YIYFplBLWTqP_VKPRhL_1ItDD0_vXTe_UuI,14906
337
337
  alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py,sha256=R371waHsms4sllHCbijKYs90C-9Yu0sSR3N4SUfQOgU,5066
338
- alita_sdk-0.3.262.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
339
- alita_sdk-0.3.262.dist-info/METADATA,sha256=jMCRTQ5YTuRDgHondlpPBMyNcZ9IH5M7jebxHxoZjTY,18897
340
- alita_sdk-0.3.262.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
341
- alita_sdk-0.3.262.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
342
- alita_sdk-0.3.262.dist-info/RECORD,,
338
+ alita_sdk-0.3.264.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
339
+ alita_sdk-0.3.264.dist-info/METADATA,sha256=RVNpP6zQgnVFcDfiHUNNCSTUIblxwizQMBQbmUeI4ZE,18897
340
+ alita_sdk-0.3.264.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
341
+ alita_sdk-0.3.264.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
342
+ alita_sdk-0.3.264.dist-info/RECORD,,