Skip to content

Commit a0d8c63

Browse files
Updated build-dists.py to work with pyproject.toml (#83)
Co-authored-by: Quentin Pradet <quentin.pradet@elastic.co>
1 parent 8d594d4 commit a0d8c63

File tree

1 file changed

+28
-23
lines changed

1 file changed

+28
-23
lines changed

utils/build-dists.py

+28-23
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
"""A command line tool for building and verifying releases
1919
Can be used for building both 'elasticsearch' and 'elasticsearchX' dists.
20-
Only requires 'name' in 'setup.py' and the directory to be changed.
20+
Only requires 'name' in 'pyproject.toml' and the directory to be changed.
2121
"""
2222

2323
import contextlib
@@ -50,7 +50,7 @@ def run(*argv, expect_exit_code=0):
5050
else:
5151
os.chdir(tmp_dir)
5252

53-
cmd = " ".join(shlex.quote(x) for x in argv)
53+
cmd = shlex.join(argv)
5454
print("$ " + cmd)
5555
exit_code = os.system(cmd)
5656
if exit_code != expect_exit_code:
@@ -65,7 +65,9 @@ def run(*argv, expect_exit_code=0):
6565

6666
def test_dist(dist):
6767
with set_tmp_dir() as tmp_dir:
68-
dist_name = re.match(r"^(elasticsearch\d*)-", os.path.basename(dist)).group(1)
68+
dist_name = re.match(
69+
r"^(elasticsearch_serverless\d*)-", os.path.basename(dist)
70+
).group(1)
6971

7072
# Build the venv and install the dist
7173
run("python", "-m", "venv", os.path.join(tmp_dir, "venv"))
@@ -80,6 +82,7 @@ def test_dist(dist):
8082
"mypy",
8183
"numpy",
8284
"pandas-stubs",
85+
"opentelemetry-api",
8386
)
8487
run(venv_python, "-m", "pip", "install", dist)
8588

@@ -120,14 +123,15 @@ def test_dist(dist):
120123
"--strict",
121124
"--install-types",
122125
"--non-interactive",
126+
"--ignore-missing-imports",
123127
os.path.join(
124128
base_dir, "test_elasticsearch_serverless/test_types/async_types.py"
125129
),
126130
)
127131

128132
# Ensure that the namespaces are correct for the dist
129133
for suffix in ("", "1", "2", "5", "6", "7", "8", "9", "10"):
130-
distx_name = f"elasticsearch{suffix}"
134+
distx_name = f"elasticsearch_serverless{suffix}"
131135
run(
132136
venv_python,
133137
"-c",
@@ -136,7 +140,7 @@ def test_dist(dist):
136140
)
137141

138142
# Check that sync types work for 'elasticsearch_serverless' and
139-
# that aliased types work for 'elasticsearchX'
143+
# that aliased types work for 'elasticsearch_serverlessX'
140144
if dist_name == "elasticsearch_serverless":
141145
run(
142146
venv_python,
@@ -145,6 +149,7 @@ def test_dist(dist):
145149
"--strict",
146150
"--install-types",
147151
"--non-interactive",
152+
"--ignore-missing-imports",
148153
os.path.join(
149154
base_dir, "test_elasticsearch_serverless/test_types/sync_types.py"
150155
),
@@ -174,16 +179,16 @@ def test_dist(dist):
174179

175180

176181
def main():
177-
run("git", "checkout", "--", "setup.py", "elasticsearch_serverless/")
178-
run("rm", "-rf", "build/", "dist/*", "*.egg-info", ".eggs")
182+
run("git", "checkout", "--", "pyproject.toml", "elasticsearch_serverless/")
183+
run("rm", "-rf", "dist")
179184

180185
# Grab the major version to be used as a suffix.
181186
version_path = os.path.join(base_dir, "elasticsearch_serverless/_version.py")
182187
with open(version_path) as f:
183188
version = re.search(
184189
r"^__versionstr__\s+=\s+[\"\']([^\"\']+)[\"\']", f.read(), re.M
185190
).group(1)
186-
major_version = version.split(".")[0]
191+
# major_version = version.split(".")[0]
187192

188193
# If we're handed a version from the build manager we
189194
# should check that the version is correct or write
@@ -231,17 +236,19 @@ def main():
231236
)
232237
exit(1)
233238

234-
for suffix in ("", major_version):
239+
for suffix in ("",):
235240
run("rm", "-rf", "build/", "*.egg-info", ".eggs")
236241

237242
# Rename the module to fit the suffix.
238243
shutil.move(
239244
os.path.join(base_dir, "elasticsearch_serverless"),
240-
os.path.join(base_dir, f"elasticsearch{suffix}"),
245+
os.path.join(base_dir, f"elasticsearch_serverless{suffix}"),
241246
)
242247

243248
# Ensure that the version within 'elasticsearch_serverless/_version.py' is correct.
244-
version_path = os.path.join(base_dir, f"elasticsearch{suffix}/_version.py")
249+
version_path = os.path.join(
250+
base_dir, f"elasticsearch_serverless{suffix}/_version.py"
251+
)
245252
with open(version_path) as f:
246253
version_data = f.read()
247254
version_data = re.sub(
@@ -253,31 +260,29 @@ def main():
253260
f.truncate()
254261
f.write(version_data)
255262

256-
# Rewrite setup.py with the new name.
257-
setup_py_path = os.path.join(base_dir, "setup.py")
258-
with open(setup_py_path) as f:
259-
setup_py = f.read()
260-
with open(setup_py_path, "w") as f:
263+
# Rewrite pyproject.toml with the new name.
264+
pyproject_toml_path = os.path.join(base_dir, "pyproject.toml")
265+
with open(pyproject_toml_path) as f:
266+
pyproject_toml = f.read()
267+
with open(pyproject_toml_path, "w") as f:
261268
f.truncate()
262-
assert 'package_name = "elasticsearch_serverless"' in setup_py
263269
f.write(
264-
setup_py.replace(
265-
'package_name = "elasticsearch_serverless"',
266-
f'package_name = "elasticsearch{suffix}"',
270+
pyproject_toml.replace(
271+
"elasticsearch_serverless", f"elasticsearch_serverless{suffix}"
267272
)
268273
)
269274

270275
# Build the sdist/wheels
271276
run("python", "-m", "build")
272277

273278
# Clean up everything.
274-
run("git", "checkout", "--", "setup.py", "elasticsearch_serverless/")
279+
run("git", "checkout", "--", "pyproject.toml", "elasticsearch_serverless/")
275280
if suffix:
276-
run("rm", "-rf", f"elasticsearch{suffix}/")
281+
run("rm", "-rf", f"elasticsearch_serverless{suffix}/")
277282

278283
# Test everything that got created
279284
dists = os.listdir(os.path.join(base_dir, "dist"))
280-
assert len(dists) == 4
285+
assert len(dists) == 2
281286
for dist in dists:
282287
test_dist(os.path.join(base_dir, "dist", dist))
283288
os.system('bash -c "chmod a+w dist/*"')

0 commit comments

Comments
 (0)