alita-sdk 0.3.160__py3-none-any.whl → 0.3.162__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/github/__init__.py +1 -0
- alita_sdk/tools/github/api_wrapper.py +4 -2
- alita_sdk/tools/github/github_client.py +124 -1
- alita_sdk/tools/github/schemas.py +15 -0
- alita_sdk/tools/postman/api_wrapper.py +49 -45
- {alita_sdk-0.3.160.dist-info → alita_sdk-0.3.162.dist-info}/METADATA +1 -1
- {alita_sdk-0.3.160.dist-info → alita_sdk-0.3.162.dist-info}/RECORD +10 -10
- {alita_sdk-0.3.160.dist-info → alita_sdk-0.3.162.dist-info}/WHEEL +0 -0
- {alita_sdk-0.3.160.dist-info → alita_sdk-0.3.162.dist-info}/licenses/LICENSE +0 -0
- {alita_sdk-0.3.160.dist-info → alita_sdk-0.3.162.dist-info}/top_level.txt +0 -0
@@ -23,6 +23,7 @@ def _get_toolkit(tool) -> BaseToolkit:
|
|
23
23
|
github_app_id=tool['settings'].get('app_id', None),
|
24
24
|
github_app_private_key=tool['settings'].get('app_private_key', None),
|
25
25
|
llm=tool['settings'].get('llm', None),
|
26
|
+
alita=tool['settings'].get('alita', None),
|
26
27
|
connection_string=tool['settings'].get('connection_string', None),
|
27
28
|
collection_name=str(tool['id']),
|
28
29
|
doctype='code',
|
@@ -51,7 +51,9 @@ class AlitaGitHubAPIWrapper(BaseCodeToolApiWrapper):
|
|
51
51
|
|
52
52
|
# Add LLM instance
|
53
53
|
llm: Optional[Any] = None
|
54
|
-
|
54
|
+
# Alita instance
|
55
|
+
alita: Optional[Any] = None
|
56
|
+
|
55
57
|
# Vector store configuration
|
56
58
|
connection_string: Optional[SecretStr] = None
|
57
59
|
collection_name: Optional[str] = None
|
@@ -109,7 +111,7 @@ class AlitaGitHubAPIWrapper(BaseCodeToolApiWrapper):
|
|
109
111
|
)
|
110
112
|
|
111
113
|
# Initialize GitHub client with keyword arguments
|
112
|
-
github_client = GitHubClient(auth_config=auth_config, repo_config=repo_config)
|
114
|
+
github_client = GitHubClient(auth_config=auth_config, repo_config=repo_config, alita=values.get("alita"))
|
113
115
|
# Initialize GraphQL client with keyword argument
|
114
116
|
graphql_client = GraphQLClientWrapper(github_graphql_instance=github_client.github_api._Github__requester)
|
115
117
|
# Set client attributes on the class (renamed from _github_client to github_client_instance)
|
@@ -34,10 +34,11 @@ from .schemas import (
|
|
34
34
|
SearchIssues,
|
35
35
|
CreateIssue,
|
36
36
|
UpdateIssue,
|
37
|
-
LoaderSchema,
|
38
37
|
GetCommits,
|
39
38
|
GetCommitChanges,
|
39
|
+
GetCommitsDiff,
|
40
40
|
ApplyGitPatch,
|
41
|
+
ApplyGitPatchFromArtifact,
|
41
42
|
TriggerWorkflow,
|
42
43
|
GetWorkflowStatus,
|
43
44
|
GetWorkflowLogs,
|
@@ -91,6 +92,9 @@ class GitHubClient(BaseModel):
|
|
91
92
|
# Adding auth config and repo config as optional fields for initialization
|
92
93
|
auth_config: Optional[GitHubAuthConfig] = Field(default=None, exclude=True)
|
93
94
|
repo_config: Optional[GitHubRepoConfig] = Field(default=None, exclude=True)
|
95
|
+
|
96
|
+
# Alita instance
|
97
|
+
alita: Optional[Any] = Field(default=None, exclude=True)
|
94
98
|
|
95
99
|
@model_validator(mode='before')
|
96
100
|
def initialize_github_client(cls, values):
|
@@ -388,6 +392,111 @@ class GitHubClient(BaseModel):
|
|
388
392
|
except Exception as e:
|
389
393
|
# Return error as JSON instead of plain text
|
390
394
|
return {"error": str(e), "message": f"Unable to retrieve commit changes due to error: {str(e)}"}
|
395
|
+
|
396
|
+
def get_commits_diff(self, base_sha: str, head_sha: str, repo_name: Optional[str] = None) -> str:
|
397
|
+
"""
|
398
|
+
Retrieves the diff between two commits.
|
399
|
+
|
400
|
+
Parameters:
|
401
|
+
base_sha (str): The base commit SHA to compare from.
|
402
|
+
head_sha (str): The head commit SHA to compare to.
|
403
|
+
repo_name (Optional[str]): Name of the repository in format 'owner/repo'.
|
404
|
+
|
405
|
+
Returns:
|
406
|
+
str: A detailed diff comparison between the two commits or an error message.
|
407
|
+
"""
|
408
|
+
try:
|
409
|
+
# Get the repository
|
410
|
+
repo = self.github_api.get_repo(repo_name) if repo_name else self.github_repo_instance
|
411
|
+
|
412
|
+
# Get the comparison between the two commits
|
413
|
+
comparison = repo.compare(base_sha, head_sha)
|
414
|
+
|
415
|
+
# Extract comparison information
|
416
|
+
diff_info = {
|
417
|
+
"base_commit": {
|
418
|
+
"sha": comparison.base_commit.sha,
|
419
|
+
"message": comparison.base_commit.commit.message,
|
420
|
+
"author": comparison.base_commit.commit.author.name,
|
421
|
+
"date": comparison.base_commit.commit.author.date.isoformat()
|
422
|
+
},
|
423
|
+
"head_commit": {
|
424
|
+
"sha": comparison.head_commit.sha,
|
425
|
+
"message": comparison.head_commit.commit.message,
|
426
|
+
"author": comparison.head_commit.commit.author.name,
|
427
|
+
"date": comparison.head_commit.commit.author.date.isoformat()
|
428
|
+
},
|
429
|
+
"status": comparison.status, # ahead, behind, identical, or diverged
|
430
|
+
"ahead_by": comparison.ahead_by,
|
431
|
+
"behind_by": comparison.behind_by,
|
432
|
+
"total_commits": comparison.total_commits,
|
433
|
+
"commits": [],
|
434
|
+
"files": []
|
435
|
+
}
|
436
|
+
|
437
|
+
# Get commits in the comparison
|
438
|
+
for commit in comparison.commits:
|
439
|
+
commit_info = {
|
440
|
+
"sha": commit.sha,
|
441
|
+
"message": commit.commit.message,
|
442
|
+
"author": commit.commit.author.name,
|
443
|
+
"date": commit.commit.author.date.isoformat(),
|
444
|
+
"url": commit.html_url
|
445
|
+
}
|
446
|
+
diff_info["commits"].append(commit_info)
|
447
|
+
|
448
|
+
# Get changed files information
|
449
|
+
for file in comparison.files:
|
450
|
+
file_info = {
|
451
|
+
"filename": file.filename,
|
452
|
+
"status": file.status, # added, modified, removed, renamed
|
453
|
+
"additions": file.additions,
|
454
|
+
"deletions": file.deletions,
|
455
|
+
"changes": file.changes,
|
456
|
+
"patch": file.patch if hasattr(file, 'patch') and file.patch else None,
|
457
|
+
"blob_url": file.blob_url if hasattr(file, 'blob_url') else None,
|
458
|
+
"raw_url": file.raw_url if hasattr(file, 'raw_url') else None
|
459
|
+
}
|
460
|
+
|
461
|
+
# Add previous filename for renamed files
|
462
|
+
if file.status == "renamed" and hasattr(file, 'previous_filename'):
|
463
|
+
file_info["previous_filename"] = file.previous_filename
|
464
|
+
|
465
|
+
diff_info["files"].append(file_info)
|
466
|
+
|
467
|
+
# Add summary statistics
|
468
|
+
diff_info["summary"] = {
|
469
|
+
"total_files_changed": len(diff_info["files"]),
|
470
|
+
"total_additions": sum(f["additions"] for f in diff_info["files"]),
|
471
|
+
"total_deletions": sum(f["deletions"] for f in diff_info["files"])
|
472
|
+
}
|
473
|
+
|
474
|
+
return diff_info
|
475
|
+
|
476
|
+
except Exception as e:
|
477
|
+
# Return error as JSON instead of plain text
|
478
|
+
return {"error": str(e), "message": f"Unable to retrieve diff between commits due to error: {str(e)}"}
|
479
|
+
|
480
|
+
def apply_git_patch_from_file(self, bucket_name: str, file_name: str, commit_message: Optional[str] = "Apply git patch", repo_name: Optional[str] = None) -> str:
|
481
|
+
"""Applies a git patch from a file stored in a specified bucket.
|
482
|
+
|
483
|
+
Args:
|
484
|
+
bucket_name (str): The name of the bucket where the patch file is stored.
|
485
|
+
file_name (str): The name of the patch file to apply.
|
486
|
+
commit_message (Optional[str], optional): The commit message for the patch application. Defaults to "Apply git patch".
|
487
|
+
repo_name (Optional[str], optional): The name of the repository to apply the patch to. Defaults to None.
|
488
|
+
|
489
|
+
Returns:
|
490
|
+
str: A summary of the applied changes or an error message.
|
491
|
+
"""
|
492
|
+
try:
|
493
|
+
patch_content = self.alita.download_artifact(bucket_name, file_name)
|
494
|
+
if not patch_content or not isinstance(patch_content, str):
|
495
|
+
return {"error": "Patch file not found", "message": f"Patch file '{file_name}' not found in bucket '{bucket_name}'."}
|
496
|
+
# Apply the git patch using the content
|
497
|
+
return self.apply_git_patch(patch_content, commit_message, repo_name)
|
498
|
+
except Exception as e:
|
499
|
+
return {"error": str(e), "message": f"Unable to download patch file: {str(e)}"}
|
391
500
|
|
392
501
|
def apply_git_patch(self, patch_content: str, commit_message: Optional[str] = "Apply git patch", repo_name: Optional[str] = None) -> str:
|
393
502
|
"""
|
@@ -1902,6 +2011,13 @@ class GitHubClient(BaseModel):
|
|
1902
2011
|
"description": self.get_commit_changes.__doc__,
|
1903
2012
|
"args_schema": GetCommitChanges,
|
1904
2013
|
},
|
2014
|
+
{
|
2015
|
+
"ref": self.get_commits_diff,
|
2016
|
+
"name": "get_commits_diff",
|
2017
|
+
"mode": "get_commits_diff",
|
2018
|
+
"description": self.get_commits_diff.__doc__,
|
2019
|
+
"args_schema": GetCommitsDiff,
|
2020
|
+
},
|
1905
2021
|
{
|
1906
2022
|
"ref": self.apply_git_patch,
|
1907
2023
|
"name": "apply_git_patch",
|
@@ -1909,6 +2025,13 @@ class GitHubClient(BaseModel):
|
|
1909
2025
|
"description": self.apply_git_patch.__doc__,
|
1910
2026
|
"args_schema": ApplyGitPatch,
|
1911
2027
|
},
|
2028
|
+
{
|
2029
|
+
"ref": self.apply_git_patch_from_file,
|
2030
|
+
"name": "apply_git_patch_from_file",
|
2031
|
+
"mode": "apply_git_patch_from_file",
|
2032
|
+
"description": self.apply_git_patch_from_file.__doc__,
|
2033
|
+
"args_schema": ApplyGitPatchFromArtifact,
|
2034
|
+
},
|
1912
2035
|
{
|
1913
2036
|
"ref": self.trigger_workflow,
|
1914
2037
|
"name": "trigger_workflow",
|
@@ -159,6 +159,13 @@ GetCommitChanges = create_model(
|
|
159
159
|
repo_name=(Optional[str], Field(default=None, description="Name of the repository (e.g., 'owner/repo'). If None, uses the default repository."))
|
160
160
|
)
|
161
161
|
|
162
|
+
GetCommitsDiff = create_model(
|
163
|
+
"GetCommitsDiff",
|
164
|
+
base_sha=(str, Field(description="The base commit SHA to compare from")),
|
165
|
+
head_sha=(str, Field(description="The head commit SHA to compare to")),
|
166
|
+
repo_name=(Optional[str], Field(default=None, description="Name of the repository (e.g., 'owner/repo'). If None, uses the default repository."))
|
167
|
+
)
|
168
|
+
|
162
169
|
ApplyGitPatch = create_model(
|
163
170
|
"ApplyGitPatch",
|
164
171
|
patch_content=(str, Field(description="The git patch content in unified diff format")),
|
@@ -166,6 +173,14 @@ ApplyGitPatch = create_model(
|
|
166
173
|
repo_name=(Optional[str], Field(default=None, description="Name of the repository (e.g., 'owner/repo'). If None, uses the default repository."))
|
167
174
|
)
|
168
175
|
|
176
|
+
ApplyGitPatchFromArtifact = create_model(
|
177
|
+
"ApplyGitPatchFromArtifact",
|
178
|
+
bucket_name=(str, Field(description="Name of the artifact bucket containing the patch file")),
|
179
|
+
file_name=(str, Field(description="Name of the patch file to download and apply")),
|
180
|
+
commit_message=(Optional[str], Field(description="Commit message for the patch application", default="Apply git patch from artifact")),
|
181
|
+
repo_name=(Optional[str], Field(default=None, description="Name of the repository (e.g., 'owner/repo'). If None, uses the default repository."))
|
182
|
+
)
|
183
|
+
|
169
184
|
TriggerWorkflow = create_model(
|
170
185
|
"TriggerWorkflow",
|
171
186
|
workflow_id=(str, Field(description="The ID or file name of the workflow to trigger (e.g., 'build.yml', '1234567')")),
|
@@ -1370,33 +1370,30 @@ class PostmanApiWrapper(BaseToolApiWrapper):
|
|
1370
1370
|
def update_request_tests(self, request_path: str, tests: str, **kwargs) -> str:
|
1371
1371
|
"""Update request test scripts."""
|
1372
1372
|
try:
|
1373
|
-
# Get
|
1374
|
-
|
1375
|
-
|
1376
|
-
# Get current request to preserve existing data
|
1377
|
-
current_request = self._make_request('GET', f'/collections/{self.collection_id}/requests/{request_id}')
|
1378
|
-
request_data = current_request.get("data", {})
|
1373
|
+
# Get request item and ID
|
1374
|
+
request_item, request_id, _ = self._get_request_item_and_id(request_path)
|
1379
1375
|
|
1380
|
-
#
|
1381
|
-
|
1376
|
+
# Get existing events and preserve non-test events
|
1377
|
+
existing_events = request_item.get("event", [])
|
1378
|
+
events = [event for event in existing_events if event.get("listen") != "test"]
|
1382
1379
|
|
1383
|
-
# Add the new test script
|
1380
|
+
# Add the new test script using the official API format
|
1384
1381
|
events.append({
|
1385
1382
|
"listen": "test",
|
1386
1383
|
"script": {
|
1387
|
-
"
|
1388
|
-
"
|
1384
|
+
"exec": tests.strip().split('\n'),
|
1385
|
+
"type": "text/javascript"
|
1389
1386
|
}
|
1390
1387
|
})
|
1391
1388
|
|
1392
|
-
#
|
1393
|
-
|
1394
|
-
|
1395
|
-
|
1389
|
+
# Create update payload using the events array format from official spec
|
1390
|
+
request_update = {
|
1391
|
+
"events": events
|
1392
|
+
}
|
1393
|
+
|
1394
|
+
# Update using the individual request endpoint with proper events format
|
1396
1395
|
response = self._make_request('PUT', f'/collections/{self.collection_id}/requests/{request_id}',
|
1397
|
-
|
1398
|
-
|
1399
|
-
logger.info(f"Test script updated successfully for request '{request_path}'")
|
1396
|
+
json=request_update)
|
1400
1397
|
return json.dumps({"success": True, "message": f"Request '{request_path}' tests updated successfully"}, indent=2)
|
1401
1398
|
except Exception as e:
|
1402
1399
|
stacktrace = format_exc()
|
@@ -1407,33 +1404,30 @@ class PostmanApiWrapper(BaseToolApiWrapper):
|
|
1407
1404
|
def update_request_pre_script(self, request_path: str, pre_request_script: str, **kwargs) -> str:
|
1408
1405
|
"""Update request pre-request scripts."""
|
1409
1406
|
try:
|
1410
|
-
# Get
|
1411
|
-
|
1412
|
-
|
1413
|
-
# Get current request to preserve existing data
|
1414
|
-
current_request = self._make_request('GET', f'/collections/{self.collection_id}/requests/{request_id}')
|
1415
|
-
request_data = current_request.get("data", {})
|
1407
|
+
# Get request item and ID
|
1408
|
+
request_item, request_id, _ = self._get_request_item_and_id(request_path)
|
1416
1409
|
|
1417
|
-
#
|
1418
|
-
|
1410
|
+
# Get existing events and preserve non-prerequest events
|
1411
|
+
existing_events = request_item.get("event", [])
|
1412
|
+
events = [event for event in existing_events if event.get("listen") != "prerequest"]
|
1419
1413
|
|
1420
|
-
# Add the new prerequest script
|
1414
|
+
# Add the new prerequest script using the official API format
|
1421
1415
|
events.append({
|
1422
1416
|
"listen": "prerequest",
|
1423
1417
|
"script": {
|
1424
|
-
"
|
1425
|
-
"
|
1418
|
+
"exec": pre_request_script.strip().split('\n'),
|
1419
|
+
"type": "text/javascript"
|
1426
1420
|
}
|
1427
1421
|
})
|
1428
1422
|
|
1429
|
-
#
|
1430
|
-
|
1431
|
-
|
1432
|
-
|
1423
|
+
# Create update payload using the events array format from official spec
|
1424
|
+
request_update = {
|
1425
|
+
"events": events
|
1426
|
+
}
|
1427
|
+
|
1428
|
+
# Update using the individual request endpoint with proper events format
|
1433
1429
|
response = self._make_request('PUT', f'/collections/{self.collection_id}/requests/{request_id}',
|
1434
|
-
|
1435
|
-
|
1436
|
-
logger.info(f"Pre-request script updated successfully for request '{request_path}'")
|
1430
|
+
json=request_update)
|
1437
1431
|
return json.dumps({"success": True, "message": f"Request '{request_path}' pre-script updated successfully"}, indent=2)
|
1438
1432
|
except Exception as e:
|
1439
1433
|
stacktrace = format_exc()
|
@@ -1612,16 +1606,14 @@ class PostmanApiWrapper(BaseToolApiWrapper):
|
|
1612
1606
|
The script content as JSON string, or an error message if the script doesn't exist
|
1613
1607
|
"""
|
1614
1608
|
try:
|
1615
|
-
# Get the request
|
1616
|
-
|
1617
|
-
|
1618
|
-
# Get current request to have the latest version with updated scripts
|
1619
|
-
current_request = self._make_request('GET', f'/collections/{self.collection_id}/requests/{request_id}')
|
1620
|
-
request_data = current_request.get("data", {})
|
1609
|
+
# Get the request item from the collection and also try individual endpoint
|
1610
|
+
request_item, request_id, _ = self._get_request_item_and_id(request_path)
|
1621
1611
|
|
1622
|
-
# Find the script by type
|
1623
1612
|
script_content = None
|
1624
|
-
|
1613
|
+
|
1614
|
+
# Method 1: Check events array (modern format)
|
1615
|
+
events = request_item.get("event", [])
|
1616
|
+
for event in events:
|
1625
1617
|
if event.get("listen") == script_type:
|
1626
1618
|
script = event.get("script", {})
|
1627
1619
|
exec_content = script.get("exec", [])
|
@@ -1631,13 +1623,25 @@ class PostmanApiWrapper(BaseToolApiWrapper):
|
|
1631
1623
|
script_content = str(exec_content)
|
1632
1624
|
break
|
1633
1625
|
|
1626
|
+
# Method 2: If not found in events, try individual request endpoint for direct fields
|
1634
1627
|
if script_content is None:
|
1628
|
+
try:
|
1629
|
+
individual_request = self._make_request('GET', f'/collections/{self.collection_id}/requests/{request_id}')
|
1630
|
+
if script_type == "test":
|
1631
|
+
script_content = individual_request.get("tests", "")
|
1632
|
+
elif script_type == "prerequest":
|
1633
|
+
script_content = individual_request.get("preRequestScript", "")
|
1634
|
+
except:
|
1635
|
+
# If individual endpoint fails, that's okay, we'll fall back to not found
|
1636
|
+
pass
|
1637
|
+
|
1638
|
+
if not script_content or script_content.strip() == "":
|
1635
1639
|
return json.dumps({"success": False, "message": f"No {script_type} script found for request '{request_path}'"}, indent=2)
|
1636
1640
|
|
1637
1641
|
return json.dumps({
|
1638
1642
|
"success": True,
|
1639
1643
|
"script_type": script_type,
|
1640
|
-
"script_content": script_content,
|
1644
|
+
"script_content": script_content.strip(),
|
1641
1645
|
"request_path": request_path
|
1642
1646
|
}, indent=2)
|
1643
1647
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: alita_sdk
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.162
|
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>
|
6
6
|
License-Expression: Apache-2.0
|
@@ -220,11 +220,11 @@ alita_sdk/tools/elastic/__init__.py,sha256=iwnSRppRpzvJ1da2K3Glu8Uu41MhBDCYbgubo
|
|
220
220
|
alita_sdk/tools/elastic/api_wrapper.py,sha256=pl8CqQxteJAGwyOhMcld-ZgtOTFwwbv42OITQVe8rM0,1948
|
221
221
|
alita_sdk/tools/figma/__init__.py,sha256=rtEebf9zj1zUD0bpkN-SupaYpjmHFM01gY8XZNE9TI0,4088
|
222
222
|
alita_sdk/tools/figma/api_wrapper.py,sha256=G96pEp_qUOouwkM5xMqRg-Ywfx_kEey8NV8iO7YLodE,17190
|
223
|
-
alita_sdk/tools/github/__init__.py,sha256=
|
224
|
-
alita_sdk/tools/github/api_wrapper.py,sha256
|
225
|
-
alita_sdk/tools/github/github_client.py,sha256=
|
223
|
+
alita_sdk/tools/github/__init__.py,sha256=YPpZPPhRUHWKJ9aaMJnkjl9xrnAij1YB9C2TMRnlaTI,6388
|
224
|
+
alita_sdk/tools/github/api_wrapper.py,sha256=qyIrwPg07TFsTB1l95soy1xsJIuxfKOWTWUdLZCmTA4,8365
|
225
|
+
alita_sdk/tools/github/github_client.py,sha256=YKhLDMq0VF1KM_Get2JKj-YsipwozeSX8xdcCaM4XvI,85395
|
226
226
|
alita_sdk/tools/github/graphql_client_wrapper.py,sha256=d3AGjzLGH_hdQV2V8HeAX92dJ4dlnE5OXqUlCO_PBr0,71539
|
227
|
-
alita_sdk/tools/github/schemas.py,sha256=
|
227
|
+
alita_sdk/tools/github/schemas.py,sha256=9JfJ3nYdFeT30dOwZH6QZyZYMT8v8HrKq1jOv6Xn-Gs,13739
|
228
228
|
alita_sdk/tools/github/tool.py,sha256=Jnnv5lenV5ds8AAdyo2m8hSzyJ117HZBjzHC6T1ck-M,1037
|
229
229
|
alita_sdk/tools/github/tool_prompts.py,sha256=y6ZW_FpUCE87Uop3WuQAZVRnzxO5t7xjBOI5bCqiluw,30194
|
230
230
|
alita_sdk/tools/gitlab/__init__.py,sha256=_nbp3tJviTZxfewyV3Hp9-TK1vCxTmqlxhpwv0f_x4Y,3602
|
@@ -273,7 +273,7 @@ alita_sdk/tools/pandas/statsmodels/descriptive.py,sha256=APdofBnEiRhMrn6tLKwH076
|
|
273
273
|
alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py,sha256=fdNAayMB3W7avMfKJCcbf2_P54vUXbq8KVebOB48348,10508
|
274
274
|
alita_sdk/tools/pandas/statsmodels/regression.py,sha256=Y1pWK4u_qzrfA740K-FX0nZ5FREGGPk8mfvykPIYoiI,9164
|
275
275
|
alita_sdk/tools/postman/__init__.py,sha256=W0HdtACnTZw6tnzj7_qY_X5RoRyX3czcUSVaZJjBW-Y,4236
|
276
|
-
alita_sdk/tools/postman/api_wrapper.py,sha256=
|
276
|
+
alita_sdk/tools/postman/api_wrapper.py,sha256=DvdZtLPpe6LpsGfsF38UmNyDHjORwWWutisd5AVIogg,78094
|
277
277
|
alita_sdk/tools/postman/postman_analysis.py,sha256=2d-Oi2UORosIePIUyncSONw9hY7dw8Zc7BQvCd4aqpg,45115
|
278
278
|
alita_sdk/tools/pptx/__init__.py,sha256=LNSTQk0BncfdWLXAOGX2WXezG3D4qSEuYwLpokmF9iM,3438
|
279
279
|
alita_sdk/tools/pptx/pptx_wrapper.py,sha256=yyCYcTlIY976kJ4VfPo4dyxj4yeii9j9TWP6W8ZIpN8,29195
|
@@ -317,8 +317,8 @@ alita_sdk/tools/zephyr_enterprise/api_wrapper.py,sha256=Ir3zHljhbZQJRJJQOBzS_GL5
|
|
317
317
|
alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py,sha256=hV9LIrYfJT6oYp-ZfQR0YHflqBFPsUw2Oc55HwK0H48,6809
|
318
318
|
alita_sdk/tools/zephyr_scale/__init__.py,sha256=2NTcdrfkx4GSegqyXhsPLsEpc4FlACuDy85b0fk6cAo,4572
|
319
319
|
alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=UHVQUVqcBc3SZvDfO78HSuBzwAsRw2cCDQa-xMOzndE,68663
|
320
|
-
alita_sdk-0.3.
|
321
|
-
alita_sdk-0.3.
|
322
|
-
alita_sdk-0.3.
|
323
|
-
alita_sdk-0.3.
|
324
|
-
alita_sdk-0.3.
|
320
|
+
alita_sdk-0.3.162.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
321
|
+
alita_sdk-0.3.162.dist-info/METADATA,sha256=rOXYxNG9XRAmQ1BhPz2Fkb3CRmq-I_oaG3atjj67JBg,18667
|
322
|
+
alita_sdk-0.3.162.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
323
|
+
alita_sdk-0.3.162.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
|
324
|
+
alita_sdk-0.3.162.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|