forked from saigontechnology/AgentCrew
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathverify_package.py
More file actions
159 lines (131 loc) · 4.89 KB
/
verify_package.py
File metadata and controls
159 lines (131 loc) · 4.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#!/usr/bin/env python3
"""
Verification script for AgentCrew package.
This script verifies that the built package contains all the necessary files.
"""
import sys
import zipfile
import tarfile
from pathlib import Path
def check_wheel_files(wheel_path):
"""Check if the wheel file contains expected files and directories."""
required_dirs = [
"AgentCrew",
"AgentCrew/modules",
"AgentCrew/modules/chat",
"AgentCrew/modules/gui",
"AgentCrew/modules/memory",
]
required_files = [
"AgentCrew/__init__.py",
"AgentCrew/main.py",
]
found_dirs = set()
found_files = set()
with zipfile.ZipFile(wheel_path, "r") as wheel:
for file_info in wheel.filelist:
path = file_info.filename
if path.endswith("/"):
# It's a directory
path = path.rstrip("/")
for req_dir in required_dirs:
if path.endswith(req_dir) or path.endswith(
req_dir.replace("/", "-")
):
found_dirs.add(req_dir)
else:
# It's a file
for req_file in required_files:
if path.endswith(req_file.replace("/", "-")):
found_files.add(req_file)
missing_dirs = set(required_dirs) - found_dirs
missing_files = set(required_files) - found_files
return not missing_dirs and not missing_files, missing_dirs, missing_files
def check_sdist_files(sdist_path):
"""Check if the source distribution contains expected files and directories."""
required_dirs = [
"AgentCrew",
"AgentCrew/modules",
]
required_files = [
"pyproject.toml",
"README.md",
"LICENSE",
"MANIFEST.in",
"AgentCrew/__init__.py",
"AgentCrew/main.py",
]
found_dirs = set()
found_files = set()
with tarfile.open(sdist_path, "r:gz") as sdist:
package_prefix = None
for member in sdist.getmembers():
path = member.name
# Find the package prefix (usually "package-name-version/")
if package_prefix is None and "/" in path:
package_prefix = path.split("/")[0] + "/"
if package_prefix and path.startswith(package_prefix):
rel_path = path[len(package_prefix) :]
if member.isdir():
for req_dir in required_dirs:
if rel_path == req_dir or rel_path == req_dir + "/":
found_dirs.add(req_dir)
else:
for req_file in required_files:
if rel_path == req_file:
found_files.add(req_file)
missing_dirs = set(required_dirs) - found_dirs
missing_files = set(required_files) - found_files
return not missing_dirs and not missing_files, missing_dirs, missing_files
def main():
"""Main entry point for package verification."""
# Check if dist/ directory exists
dist_dir = Path("dist")
if not dist_dir.exists() or not dist_dir.is_dir():
print("Error: 'dist' directory not found. Run 'uv build' first.")
return 1
# Find wheel files
wheel_files = list(dist_dir.glob("*.whl"))
if not wheel_files:
print("Error: No wheel files found in 'dist' directory.")
return 1
# Find sdist files
sdist_files = list(dist_dir.glob("*.tar.gz"))
if not sdist_files:
print("Error: No source distribution files found in 'dist' directory.")
return 1
# Check wheel file
# wheel_ok, missing_wheel_dirs, missing_wheel_files = check_wheel_files(wheel_files[0])
# if wheel_ok:
# print(f"✅ Wheel file {wheel_files[0].name} contains all required files")
# else:
# print(f"❌ Wheel file {wheel_files[0].name} is missing files/directories:")
# if missing_wheel_dirs:
# print(" Missing directories:", ", ".join(missing_wheel_dirs))
# if missing_wheel_files:
# print(" Missing files:", ", ".join(missing_wheel_files))
# Check sdist file
sdist_ok, missing_sdist_dirs, missing_sdist_files = check_sdist_files(
sdist_files[0]
)
if sdist_ok:
print(
f"✅ Source distribution {sdist_files[0].name} contains all required files"
)
else:
print(
f"❌ Source distribution {sdist_files[0].name} is missing files/directories:"
)
if missing_sdist_dirs:
print(" Missing directories:", ", ".join(missing_sdist_dirs))
if missing_sdist_files:
print(" Missing files:", ", ".join(missing_sdist_files))
# Overall result
if sdist_ok:
print("✅ All package checks passed!")
return 0
else:
print("❌ Some package checks failed!")
return 1
if __name__ == "__main__":
sys.exit(main())