alita-sdk 0.3.215__py3-none-any.whl → 0.3.217__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.
- alita_sdk/tools/__init__.py +1 -0
- alita_sdk/tools/elitea_base.py +35 -16
- alita_sdk/tools/zephyr_enterprise/__init__.py +13 -1
- alita_sdk/tools/zephyr_essential/__init__.py +70 -0
- alita_sdk/tools/zephyr_essential/api_wrapper.py +904 -0
- alita_sdk/tools/zephyr_essential/client.py +219 -0
- alita_sdk/tools/zephyr_scale/api_wrapper.py +31 -68
- {alita_sdk-0.3.215.dist-info → alita_sdk-0.3.217.dist-info}/METADATA +1 -1
- {alita_sdk-0.3.215.dist-info → alita_sdk-0.3.217.dist-info}/RECORD +12 -9
- {alita_sdk-0.3.215.dist-info → alita_sdk-0.3.217.dist-info}/WHEEL +0 -0
- {alita_sdk-0.3.215.dist-info → alita_sdk-0.3.217.dist-info}/licenses/LICENSE +0 -0
- {alita_sdk-0.3.215.dist-info → alita_sdk-0.3.217.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,219 @@
|
|
1
|
+
import requests
|
2
|
+
|
3
|
+
class ZephyrEssentialAPI:
|
4
|
+
def __init__(self, base_url: str, token: str):
|
5
|
+
self.base_url = base_url.rstrip("/")
|
6
|
+
self.token = token
|
7
|
+
|
8
|
+
def _do_request(self, method: str, api_path: str, json: dict = None, params: dict = None, headers: dict = None, files=None):
|
9
|
+
url = f"{self.base_url}{api_path}"
|
10
|
+
headers = headers or {}
|
11
|
+
headers.update({
|
12
|
+
"Authorization": f"Bearer {self.token}",
|
13
|
+
**({"Content-Type": "application/json"} if json else {})
|
14
|
+
})
|
15
|
+
try:
|
16
|
+
resp = requests.request(method=method, url=url, headers=headers, json=json, params=params, files=files)
|
17
|
+
resp.raise_for_status()
|
18
|
+
if resp.headers.get("Content-Type", "").startswith("application/json"):
|
19
|
+
return resp.json()
|
20
|
+
return resp.text
|
21
|
+
except requests.RequestException as e:
|
22
|
+
raise Exception(f"Error performing request {method} {api_path}: {str(e)}")
|
23
|
+
|
24
|
+
# Test Cases
|
25
|
+
def list_test_cases(self, project_key=None, folder_id=None, max_results=10, start_at=0):
|
26
|
+
params = {
|
27
|
+
"projectKey": project_key,
|
28
|
+
"folderId": folder_id,
|
29
|
+
"maxResults": max_results,
|
30
|
+
"startAt": start_at,
|
31
|
+
}
|
32
|
+
return self._do_request("GET", "/testcases", params=params)
|
33
|
+
|
34
|
+
def create_test_case(self, test_case_data):
|
35
|
+
return self._do_request("POST", "/testcases", json=test_case_data)
|
36
|
+
|
37
|
+
def get_test_case(self, test_case_key):
|
38
|
+
return self._do_request("GET", f"/testcases/{test_case_key}")
|
39
|
+
|
40
|
+
def update_test_case(self, test_case_key, test_case_data):
|
41
|
+
return self._do_request("PUT", f"/testcases/{test_case_key}", json=test_case_data)
|
42
|
+
|
43
|
+
def get_test_case_links(self, test_case_key):
|
44
|
+
return self._do_request("GET", f"/testcases/{test_case_key}/links")
|
45
|
+
|
46
|
+
def create_test_case_issue_link(self, test_case_key, issue_link_data):
|
47
|
+
return self._do_request("POST", f"/testcases/{test_case_key}/links/issues", json=issue_link_data)
|
48
|
+
|
49
|
+
def create_test_case_web_link(self, test_case_key, web_link_data):
|
50
|
+
return self._do_request("POST", f"/testcases/{test_case_key}/links/weblinks", json=web_link_data)
|
51
|
+
|
52
|
+
def list_test_case_versions(self, test_case_key, max_results=10, start_at=0):
|
53
|
+
params = {
|
54
|
+
"maxResults": max_results,
|
55
|
+
"startAt": start_at,
|
56
|
+
}
|
57
|
+
return self._do_request("GET", f"/testcases/{test_case_key}/versions", params=params)
|
58
|
+
|
59
|
+
def get_test_case_version(self, test_case_key, version):
|
60
|
+
return self._do_request("GET", f"/testcases/{test_case_key}/versions/{version}")
|
61
|
+
|
62
|
+
def get_test_case_test_script(self, test_case_key):
|
63
|
+
return self._do_request("GET", f"/testcases/{test_case_key}/testscript")
|
64
|
+
|
65
|
+
def create_test_case_test_script(self, test_case_key, test_script_data):
|
66
|
+
return self._do_request("POST", f"/testcases/{test_case_key}/testscript", json=test_script_data)
|
67
|
+
|
68
|
+
def get_test_case_test_steps(self, test_case_key, max_results=10, start_at=0):
|
69
|
+
params = {
|
70
|
+
"maxResults": max_results,
|
71
|
+
"startAt": start_at,
|
72
|
+
}
|
73
|
+
return self._do_request("GET", f"/testcases/{test_case_key}/teststeps", params=params)
|
74
|
+
|
75
|
+
def create_test_case_test_steps(self, test_case_key, test_steps_data):
|
76
|
+
return self._do_request("POST", f"/testcases/{test_case_key}/teststeps", json=test_steps_data)
|
77
|
+
|
78
|
+
# Test Cycles
|
79
|
+
def list_test_cycles(self, project_key=None, folder_id=None, jira_project_version_id=None, max_results=10, start_at=0):
|
80
|
+
params = {
|
81
|
+
"projectKey": project_key,
|
82
|
+
"folderId": folder_id,
|
83
|
+
"jiraProjectVersionId": jira_project_version_id,
|
84
|
+
"maxResults": max_results,
|
85
|
+
"startAt": start_at,
|
86
|
+
}
|
87
|
+
return self._do_request("GET", "/testcycles", params=params)
|
88
|
+
|
89
|
+
def create_test_cycle(self, test_cycle_data):
|
90
|
+
return self._do_request("POST", "/testcycles", json=test_cycle_data)
|
91
|
+
|
92
|
+
def get_test_cycle(self, test_cycle_id_or_key):
|
93
|
+
return self._do_request("GET", f"/testcycles/{test_cycle_id_or_key}")
|
94
|
+
|
95
|
+
def update_test_cycle(self, test_cycle_id_or_key, test_cycle_data):
|
96
|
+
return self._do_request("PUT", f"/testcycles/{test_cycle_id_or_key}", json=test_cycle_data)
|
97
|
+
|
98
|
+
def get_test_cycle_links(self, test_cycle_id_or_key):
|
99
|
+
return self._do_request("GET", f"/testcycles/{test_cycle_id_or_key}/links")
|
100
|
+
|
101
|
+
def create_test_cycle_issue_link(self, test_cycle_id_or_key, issue_link_data):
|
102
|
+
return self._do_request("POST", f"/testcycles/{test_cycle_id_or_key}/links/issues", json=issue_link_data)
|
103
|
+
|
104
|
+
def create_test_cycle_web_link(self, test_cycle_id_or_key, web_link_data):
|
105
|
+
return self._do_request("POST", f"/testcycles/{test_cycle_id_or_key}/links/weblinks", json=web_link_data)
|
106
|
+
|
107
|
+
# Test Executions
|
108
|
+
def list_test_executions(self, project_key=None, test_cycle=None, test_case=None, max_results=10, start_at=0):
|
109
|
+
params = {
|
110
|
+
"projectKey": project_key,
|
111
|
+
"testCycle": test_cycle,
|
112
|
+
"testCase": test_case,
|
113
|
+
"maxResults": max_results,
|
114
|
+
"startAt": start_at,
|
115
|
+
}
|
116
|
+
return self._do_request("GET", "/testexecutions", params=params)
|
117
|
+
|
118
|
+
def create_test_execution(self, test_execution_data):
|
119
|
+
return self._do_request("POST", "/testexecutions", json=test_execution_data)
|
120
|
+
|
121
|
+
def get_test_execution(self, test_execution_id_or_key):
|
122
|
+
return self._do_request("GET", f"/testexecutions/{test_execution_id_or_key}")
|
123
|
+
|
124
|
+
def update_test_execution(self, test_execution_id_or_key, test_execution_data):
|
125
|
+
return self._do_request("PUT", f"/testexecutions/{test_execution_id_or_key}", json=test_execution_data)
|
126
|
+
|
127
|
+
def get_test_execution_test_steps(self, test_execution_id_or_key, max_results=10, start_at=0):
|
128
|
+
params = {
|
129
|
+
"maxResults": max_results,
|
130
|
+
"startAt": start_at,
|
131
|
+
}
|
132
|
+
return self._do_request("GET", f"/testexecutions/{test_execution_id_or_key}/teststeps", params=params)
|
133
|
+
|
134
|
+
def update_test_execution_test_steps(self, test_execution_id_or_key, test_steps_data):
|
135
|
+
return self._do_request("PUT", f"/testexecutions/{test_execution_id_or_key}/teststeps", json=test_steps_data)
|
136
|
+
|
137
|
+
def sync_test_execution_script(self, test_execution_id_or_key):
|
138
|
+
return self._do_request("POST", f"/testexecutions/{test_execution_id_or_key}/teststeps/sync")
|
139
|
+
|
140
|
+
def list_test_execution_links(self, test_execution_id_or_key):
|
141
|
+
return self._do_request("GET", f"/testexecutions/{test_execution_id_or_key}/links")
|
142
|
+
|
143
|
+
def create_test_execution_issue_link(self, test_execution_id_or_key, issue_link_data):
|
144
|
+
return self._do_request("POST", f"/testexecutions/{test_execution_id_or_key}/links/issues", json=issue_link_data)
|
145
|
+
|
146
|
+
# Projects
|
147
|
+
def list_projects(self, max_results=10, start_at=0):
|
148
|
+
params = {
|
149
|
+
"maxResults": max_results,
|
150
|
+
"startAt": start_at,
|
151
|
+
}
|
152
|
+
return self._do_request("GET", "/projects", params=params)
|
153
|
+
|
154
|
+
def get_project(self, project_id_or_key):
|
155
|
+
return self._do_request("GET", f"/projects/{project_id_or_key}")
|
156
|
+
|
157
|
+
# Folders
|
158
|
+
def list_folders(self, project_key=None, folder_type=None, max_results=10, start_at=0):
|
159
|
+
params = {
|
160
|
+
"projectKey": project_key,
|
161
|
+
"folderType": folder_type,
|
162
|
+
"maxResults": max_results,
|
163
|
+
"startAt": start_at,
|
164
|
+
}
|
165
|
+
return self._do_request("GET", "/folders", params=params)
|
166
|
+
|
167
|
+
def create_folder(self, folder_data):
|
168
|
+
return self._do_request("POST", "/folders", json=folder_data)
|
169
|
+
|
170
|
+
def get_folder(self, folder_id):
|
171
|
+
return self._do_request("GET", f"/folders/{folder_id}")
|
172
|
+
|
173
|
+
# Links
|
174
|
+
def delete_link(self, link_id):
|
175
|
+
return self._do_request("DELETE", f"/links/{link_id}")
|
176
|
+
|
177
|
+
# Issue Links
|
178
|
+
def get_issue_link_test_cases(self, issue_key):
|
179
|
+
return self._do_request("GET", f"/issuelinks/{issue_key}/testcases")
|
180
|
+
|
181
|
+
def get_issue_link_test_cycles(self, issue_key):
|
182
|
+
return self._do_request("GET", f"/issuelinks/{issue_key}/testcycles")
|
183
|
+
|
184
|
+
def get_issue_link_test_plans(self, issue_key):
|
185
|
+
return self._do_request("GET", f"/issuelinks/{issue_key}/testplans")
|
186
|
+
|
187
|
+
def get_issue_link_test_executions(self, issue_key):
|
188
|
+
return self._do_request("GET", f"/issuelinks/{issue_key}/executions")
|
189
|
+
|
190
|
+
# Automations
|
191
|
+
def create_custom_executions(self, project_key, files, auto_create_test_cases=False):
|
192
|
+
params = {
|
193
|
+
"projectKey": project_key,
|
194
|
+
"autoCreateTestCases": auto_create_test_cases,
|
195
|
+
}
|
196
|
+
return self._do_request("POST", "/automations/executions/custom", params=params, files=files)
|
197
|
+
|
198
|
+
def create_cucumber_executions(self, project_key, files, auto_create_test_cases=False):
|
199
|
+
params = {
|
200
|
+
"projectKey": project_key,
|
201
|
+
"autoCreateTestCases": auto_create_test_cases,
|
202
|
+
}
|
203
|
+
return self._do_request("POST", "/automations/executions/cucumber", params=params, files=files)
|
204
|
+
|
205
|
+
def create_junit_executions(self, project_key, files, auto_create_test_cases=False):
|
206
|
+
params = {
|
207
|
+
"projectKey": project_key,
|
208
|
+
"autoCreateTestCases": auto_create_test_cases,
|
209
|
+
}
|
210
|
+
return self._do_request("POST", "/automations/executions/junit", params=params, files=files)
|
211
|
+
|
212
|
+
def retrieve_bdd_test_cases(self, project_key):
|
213
|
+
headers = {"Accept": "application/zip"}
|
214
|
+
params = {"projectKey": project_key}
|
215
|
+
return self._do_request("GET", "/automations/testcases", params=params, headers=headers)
|
216
|
+
|
217
|
+
# Healthcheck
|
218
|
+
def healthcheck(self):
|
219
|
+
return self._do_request("GET", "/healthcheck")
|
@@ -248,35 +248,6 @@ ZephyrUpdateTestSteps = create_model(
|
|
248
248
|
steps_updates=(str, Field(description="JSON string representing the test steps to update. Format: [{\"index\": 0, \"description\": \"Updated step description\", \"testData\": \"Updated test data\", \"expectedResult\": \"Updated expected result\"}]"))
|
249
249
|
)
|
250
250
|
|
251
|
-
# Schema for indexing Zephyr scale data into vector store
|
252
|
-
indexData = create_model(
|
253
|
-
"indexData",
|
254
|
-
__base__=BaseIndexParams,
|
255
|
-
project_key=(str, Field(description="Jira project key filter")),
|
256
|
-
jql=(str, Field(description="""JQL-like query for searching test cases.
|
257
|
-
|
258
|
-
Supported fields:
|
259
|
-
- folder: exact folder name (e.g., folder = "Login Tests")
|
260
|
-
- folderPath: full folder path (e.g., folderPath = "Root/Subfolder")
|
261
|
-
- label: one or more labels (e.g., label in ("Smoke", "Critical"))
|
262
|
-
- text: full-text search in name/description (e.g., text ~ "login")
|
263
|
-
- customFields: JSON string with key-value pairs to filter by custom fields
|
264
|
-
- steps: search within test steps (e.g., steps ~ "click submit")
|
265
|
-
- orderBy: sort field (e.g., orderBy = "name")
|
266
|
-
- orderDirection: ASC or DESC (e.g., orderDirection = "DESC")
|
267
|
-
- limit: maximum number of results (e.g., limit = 100)
|
268
|
-
- includeSubfolders: whether to include subfolders (e.g., includeSubfolders = false)
|
269
|
-
- exactFolderMatch: match folder name exactly (e.g., exactFolderMatch = true)
|
270
|
-
|
271
|
-
Example:
|
272
|
-
'folder = "Authentication" AND label in ("Smoke", "Critical") AND text ~ "login" AND orderBy = "name" AND orderDirection = "ASC"'
|
273
|
-
""")),
|
274
|
-
progress_step=(Optional[int], Field(default=None, ge=0, le=100,
|
275
|
-
description="Optional step size for progress reporting during indexing")),
|
276
|
-
clean_index=(Optional[bool], Field(default=False,
|
277
|
-
description="Optional flag to enforce clean existing index before indexing new data")),
|
278
|
-
)
|
279
|
-
|
280
251
|
|
281
252
|
class ZephyrScaleApiWrapper(BaseVectorStoreToolApiWrapper):
|
282
253
|
# url for a Zephyr server
|
@@ -295,14 +266,6 @@ class ZephyrScaleApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
295
266
|
_is_cloud: bool = False
|
296
267
|
_api: Any = PrivateAttr()
|
297
268
|
|
298
|
-
llm: Any = None
|
299
|
-
|
300
|
-
connection_string: Optional[SecretStr] = None
|
301
|
-
collection_name: Optional[str] = None
|
302
|
-
embedding_model: Optional[str] = "HuggingFaceEmbeddings"
|
303
|
-
embedding_model_params: Optional[Dict[str, Any]] = {"model_name": "sentence-transformers/all-MiniLM-L6-v2"}
|
304
|
-
vectorstore_type: Optional[str] = "PGVector"
|
305
|
-
|
306
269
|
class Config:
|
307
270
|
arbitrary_types_allowed = True
|
308
271
|
|
@@ -1225,26 +1188,36 @@ class ZephyrScaleApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
1225
1188
|
|
1226
1189
|
return result
|
1227
1190
|
|
1228
|
-
def
|
1229
|
-
jql: str,
|
1230
|
-
collection_suffix: str = '',
|
1231
|
-
progress_step: int = None,
|
1232
|
-
clean_index: bool = False) -> str:
|
1191
|
+
def _index_tool_params(self, **kwargs) -> dict[str, tuple[type, Field]]:
|
1233
1192
|
"""
|
1234
|
-
|
1235
|
-
|
1236
|
-
Example:
|
1237
|
-
jql = 'folder = "Authentication" AND label in ("Smoke", "Critical") AND text ~ "login"'
|
1193
|
+
Returns a list of fields for index_data args schema.
|
1238
1194
|
"""
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1195
|
+
return {
|
1196
|
+
"project_key": (str, Field(description="Jira project key filter")),
|
1197
|
+
"jql":(str, Field(description="""JQL-like query for searching test cases.
|
1198
|
+
Supported fields:
|
1199
|
+
- folder: exact folder name (e.g., folder = "Login Tests")
|
1200
|
+
- folderPath: full folder path (e.g., folderPath = "Root/Subfolder")
|
1201
|
+
- label: one or more labels (e.g., label in ("Smoke", "Critical"))
|
1202
|
+
- text: full-text search in name/description (e.g., text ~ "login")
|
1203
|
+
- customFields: JSON string with key-value pairs to filter by custom fields
|
1204
|
+
- steps: search within test steps (e.g., steps ~ "click submit")
|
1205
|
+
- orderBy: sort field (e.g., orderBy = "name")
|
1206
|
+
- orderDirection: ASC or DESC (e.g., orderDirection = "DESC")
|
1207
|
+
- limit: maximum number of results (e.g., limit = 100)
|
1208
|
+
- includeSubfolders: whether to include subfolders (e.g., includeSubfolders = false)
|
1209
|
+
- exactFolderMatch: match folder name exactly (e.g., exactFolderMatch = true)
|
1210
|
+
|
1211
|
+
Example:
|
1212
|
+
'folder = "Authentication" AND label in ("Smoke", "Critical") AND text ~ "login" AND orderBy = "name" AND orderDirection = "ASC"'
|
1213
|
+
"""))
|
1214
|
+
}
|
1243
1215
|
|
1244
|
-
def _base_loader(self, project_key: str, jql: str):
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1216
|
+
def _base_loader(self, project_key: str, jql: str) -> Generator[Document, None, None]:
|
1217
|
+
for test_case_doc in self._get_test_cases_docs(project_key, jql):
|
1218
|
+
yield test_case_doc
|
1219
|
+
for folder_doc in self._get_folders_docs(project_key):
|
1220
|
+
yield folder_doc
|
1248
1221
|
|
1249
1222
|
def _get_all_folders(self, project_key: str, folder_type:str, step: int = 10):
|
1250
1223
|
max_iterations = 50
|
@@ -1262,7 +1235,7 @@ class ZephyrScaleApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
1262
1235
|
break
|
1263
1236
|
return all_folders
|
1264
1237
|
|
1265
|
-
def _get_folders_docs(self, project_key: str):
|
1238
|
+
def _get_folders_docs(self, project_key: str) -> Generator[Document, None, None]:
|
1266
1239
|
folder_types = ['TEST_CASE', 'TEST_PLAN', 'TEST_CYCLE']
|
1267
1240
|
folders = []
|
1268
1241
|
for folder_type in folder_types:
|
@@ -1271,7 +1244,6 @@ class ZephyrScaleApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
1271
1244
|
except Exception as e:
|
1272
1245
|
raise ToolException(f"Unable to extract folders for folder type '{folder_type}': {e}")
|
1273
1246
|
page_content = {}
|
1274
|
-
docs: List[Document] = []
|
1275
1247
|
for folder in folders:
|
1276
1248
|
page_content['name'] = folder['name']
|
1277
1249
|
metadata = {}
|
@@ -1279,16 +1251,14 @@ class ZephyrScaleApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
1279
1251
|
if value is not None:
|
1280
1252
|
metadata[key] = value
|
1281
1253
|
page_content['type'] = "FOLDER"
|
1282
|
-
|
1283
|
-
return docs
|
1254
|
+
yield Document(page_content=json.dumps(page_content), metadata=metadata)
|
1284
1255
|
|
1285
|
-
def _get_test_cases_docs(self, project_key: str, jql: str):
|
1256
|
+
def _get_test_cases_docs(self, project_key: str, jql: str) -> Generator[Document, None, None]:
|
1286
1257
|
try:
|
1287
1258
|
test_cases = self._search_test_cases_by_jql(project_key, jql)
|
1288
1259
|
except Exception as e:
|
1289
1260
|
raise ToolException(f"Unable to extract test cases: {e}")
|
1290
1261
|
|
1291
|
-
docs: List[Document] = []
|
1292
1262
|
for case in test_cases:
|
1293
1263
|
last_version = self._get_last_version(case['key'], step=100)
|
1294
1264
|
metadata = {
|
@@ -1302,8 +1272,7 @@ class ZephyrScaleApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
1302
1272
|
|
1303
1273
|
case['type'] = "TEST_CASE"
|
1304
1274
|
|
1305
|
-
|
1306
|
-
return docs
|
1275
|
+
yield Document(page_content=json.dumps(case), metadata=metadata)
|
1307
1276
|
|
1308
1277
|
def _process_document(self, document: Document) -> Generator[Document, None, None]:
|
1309
1278
|
try:
|
@@ -1706,11 +1675,5 @@ class ZephyrScaleApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
1706
1675
|
"description": self.get_tests_by_folder_path.__doc__,
|
1707
1676
|
"args_schema": ZephyrGetTestsByFolderPath,
|
1708
1677
|
"ref": self.get_tests_by_folder_path,
|
1709
|
-
},
|
1710
|
-
{
|
1711
|
-
"name": "index_data",
|
1712
|
-
"ref": self.index_data,
|
1713
|
-
"description": self.index_data.__doc__,
|
1714
|
-
"args_schema": indexData,
|
1715
1678
|
}
|
1716
1679
|
]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: alita_sdk
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.217
|
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
|
@@ -93,8 +93,8 @@ alita_sdk/runtime/utils/streamlit.py,sha256=ZgHpibL2ARHt6qrWj5JhK6HNZv2UjxQ04qTk
|
|
93
93
|
alita_sdk/runtime/utils/toolkit_runtime.py,sha256=MU63Fpxj0b5_r1IUUc0Q3-PN9VwL7rUxp2MRR4tmYR8,5136
|
94
94
|
alita_sdk/runtime/utils/toolkit_utils.py,sha256=I9QFqnaqfVgN26LUr6s3XlBlG6y0CoHURnCzG7XcwVs,5311
|
95
95
|
alita_sdk/runtime/utils/utils.py,sha256=CpEl3LCeLbhzQySz08lkKPm7Auac6IiLF7WB8wmArMI,589
|
96
|
-
alita_sdk/tools/__init__.py,sha256=
|
97
|
-
alita_sdk/tools/elitea_base.py,sha256=
|
96
|
+
alita_sdk/tools/__init__.py,sha256=1AHqP2xyLjn92xVm70l9XIke6FkfHkLo5OoQVe4BuP8,10421
|
97
|
+
alita_sdk/tools/elitea_base.py,sha256=iGWoskj7mUCMKz7yubcyrLYEHr1YJQMGwsuTGxJyrv8,30356
|
98
98
|
alita_sdk/tools/ado/__init__.py,sha256=2NMQwt2pjIukSC9nSZ7CLocdGpK7002x7ixKr_wunxk,1313
|
99
99
|
alita_sdk/tools/ado/utils.py,sha256=PTCludvaQmPLakF2EbCGy66Mro4-rjDtavVP-xcB2Wc,1252
|
100
100
|
alita_sdk/tools/ado/repos/__init__.py,sha256=guYY95Gtyb0S4Jj0V1qO0x2jlRoH0H1cKjHXNwmShow,6388
|
@@ -294,16 +294,19 @@ alita_sdk/tools/zephyr/Zephyr.py,sha256=ODZbg9Aw0H0Rbv-HcDXLI4KHbPiLDHoteDofshw9
|
|
294
294
|
alita_sdk/tools/zephyr/__init__.py,sha256=8B2Ibz5QTmB5WkV0q8Sq4kuj92FFaFWZLrT877zRRLg,2897
|
295
295
|
alita_sdk/tools/zephyr/api_wrapper.py,sha256=lJCYPG03ej0qgdpLflnS7LFB4HSAfGzIvTjAJt07CQs,6244
|
296
296
|
alita_sdk/tools/zephyr/rest_client.py,sha256=7vSD3oYIX-3KbAFed-mphSQif_VRuXrq5O07ryNQ7Pk,6208
|
297
|
-
alita_sdk/tools/zephyr_enterprise/__init__.py,sha256=
|
297
|
+
alita_sdk/tools/zephyr_enterprise/__init__.py,sha256=lWnOuVmva8vWBSlnk-wv40oBowxJDXa7iumsiXACcA0,3511
|
298
298
|
alita_sdk/tools/zephyr_enterprise/api_wrapper.py,sha256=Ir3zHljhbZQJRJJQOBzS_GL5xvxb3-Vq5VF8XIMkxck,9348
|
299
299
|
alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py,sha256=hV9LIrYfJT6oYp-ZfQR0YHflqBFPsUw2Oc55HwK0H48,6809
|
300
|
+
alita_sdk/tools/zephyr_essential/__init__.py,sha256=LYLF9imlfeuW8KZDGLeENWGXT71x7WWDv-Ss8rG2v8Q,3256
|
301
|
+
alita_sdk/tools/zephyr_essential/api_wrapper.py,sha256=ksg-2j_w74pt2pdoWuuSU-gF3E6IlNtv4wxPf8sJMWg,36812
|
302
|
+
alita_sdk/tools/zephyr_essential/client.py,sha256=bfNcUKNqj9MFWTludGbbqD4qZlxrBaC2JtWsCfZMqSY,9722
|
300
303
|
alita_sdk/tools/zephyr_scale/__init__.py,sha256=2NTcdrfkx4GSegqyXhsPLsEpc4FlACuDy85b0fk6cAo,4572
|
301
|
-
alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=
|
304
|
+
alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=9CzQqQKv45LqZCmwSe4zzEXvBtStIcGQ1b51EQG5rhQ,78032
|
302
305
|
alita_sdk/tools/zephyr_squad/__init__.py,sha256=0AI_j27xVO5Gk5HQMFrqPTd4uvuVTpiZUicBrdfEpKg,2796
|
303
306
|
alita_sdk/tools/zephyr_squad/api_wrapper.py,sha256=kmw_xol8YIYFplBLWTqP_VKPRhL_1ItDD0_vXTe_UuI,14906
|
304
307
|
alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py,sha256=R371waHsms4sllHCbijKYs90C-9Yu0sSR3N4SUfQOgU,5066
|
305
|
-
alita_sdk-0.3.
|
306
|
-
alita_sdk-0.3.
|
307
|
-
alita_sdk-0.3.
|
308
|
-
alita_sdk-0.3.
|
309
|
-
alita_sdk-0.3.
|
308
|
+
alita_sdk-0.3.217.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
309
|
+
alita_sdk-0.3.217.dist-info/METADATA,sha256=Bdw9AsoShDiMxiNJlCg-PegsjzUFDeryEMKuwkH66lQ,18917
|
310
|
+
alita_sdk-0.3.217.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
311
|
+
alita_sdk-0.3.217.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
|
312
|
+
alita_sdk-0.3.217.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|