Skip to content

Commit 96e9bd3

Browse files
Re-use single session instead of opening many connections (#390)
Co-authored-by: Savannah Ostrowski <savannah@python.org>
1 parent a0a84ff commit 96e9bd3

1 file changed

Lines changed: 15 additions & 18 deletions

File tree

add_to_pydotorg.py

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,10 @@ def run_cmd(
7575

7676
tag_cre = re.compile(r"(\d+)(?:\.(\d+)(?:\.(\d+))?)?(?:([ab]|rc)(\d+))?$")
7777

78-
headers = {"Authorization": f"ApiKey {auth_info}", "Content-Type": "application/json"}
78+
session = requests.Session()
79+
session.headers.update(
80+
{"Authorization": f"ApiKey {auth_info}", "Content-Type": "application/json"}
81+
)
7982

8083
github_oidc_provider = "https://github.com/login/oauth"
8184
google_oidc_provider = "https://accounts.google.com"
@@ -174,7 +177,7 @@ def slug_for(release: str) -> str:
174177

175178

176179
def sigfile_for(release: str, rfile: str) -> str:
177-
return download_root + f"{release}/{rfile}.asc"
180+
return f"{download_root}{release}/{rfile}.asc"
178181

179182

180183
def sha256sum_for(filename: str) -> str:
@@ -227,7 +230,7 @@ def build_file_dict(
227230
"release": f"/api/v1/downloads/release/{rel_pk}/",
228231
"description": add_desc,
229232
"is_source": os_pk == 3,
230-
"url": download_root + f"{base_version(release)}/{rfile}",
233+
"url": f"{download_root}{base_version(release)}/{rfile}",
231234
"sha256_sum": sha256sum_for(filename),
232235
"filesize": filesize_for(filename),
233236
"download_button": add_download,
@@ -238,20 +241,20 @@ def build_file_dict(
238241
# Upload Sigstore signature
239242
if os.path.exists(filename + ".sig"):
240243
d["sigstore_signature_file"] = (
241-
download_root + f"{base_version(release)}/{rfile}.sig"
244+
f"{download_root}{base_version(release)}/{rfile}.sig"
242245
)
243246
# Upload Sigstore certificate
244247
if os.path.exists(filename + ".crt"):
245-
d["sigstore_cert_file"] = download_root + f"{base_version(release)}/{rfile}.crt"
248+
d["sigstore_cert_file"] = f"{download_root}{base_version(release)}/{rfile}.crt"
246249
# Upload Sigstore bundle
247250
if os.path.exists(filename + ".sigstore"):
248251
d["sigstore_bundle_file"] = (
249-
download_root + f"{base_version(release)}/{rfile}.sigstore"
252+
f"{download_root}{base_version(release)}/{rfile}.sigstore"
250253
)
251254
# Upload SPDX SBOM file
252255
if os.path.exists(filename + ".spdx.json"):
253256
d["sbom_spdx2_file"] = (
254-
download_root + f"{base_version(release)}/{rfile}.spdx.json"
257+
f"{download_root}{base_version(release)}/{rfile}.spdx.json"
255258
)
256259

257260
return d
@@ -291,9 +294,9 @@ def list_files(
291294
@cache
292295
def query_object(base_url: str, objtype: str, **params: Any) -> int:
293296
"""Find an API object by query parameters."""
294-
uri = base_url + f"downloads/{objtype}/"
297+
uri = f"{base_url}downloads/{objtype}/"
295298
uri += "?" + "&".join(f"{k}={v}" for k, v in params.items())
296-
resp = requests.get(uri, headers=headers)
299+
resp = session.get(uri)
297300
if resp.status_code != 200 or not json.loads(resp.text)["objects"]:
298301
raise RuntimeError(f"no object for {objtype} params={params!r}")
299302
obj = json.loads(resp.text)["objects"][0]
@@ -302,11 +305,7 @@ def query_object(base_url: str, objtype: str, **params: Any) -> int:
302305

303306
def post_object(base_url: str, objtype: str, datadict: dict[str, Any]) -> int:
304307
"""Create a new API object."""
305-
resp = requests.post(
306-
base_url + "downloads/" + objtype + "/",
307-
data=json.dumps(datadict),
308-
headers=headers,
309-
)
308+
resp = session.post(f"{base_url}downloads/{objtype}/", data=json.dumps(datadict))
310309
if resp.status_code != 201:
311310
try:
312311
info = json.loads(resp.text)
@@ -325,7 +324,7 @@ def sign_release_files_with_sigstore(
325324
ftp_root: str, release: str, release_files: list[tuple[str, str, str, bool, str]]
326325
) -> None:
327326
filenames = [
328-
ftp_root + f"{base_version(release)}/{rfile}" for rfile, *_ in release_files
327+
f"{ftp_root}{base_version(release)}/{rfile}" for rfile, *_ in release_files
329328
]
330329

331330
def has_sigstore_signature(filename: str) -> bool:
@@ -468,9 +467,7 @@ def main() -> None:
468467
raise RuntimeError(f"duplicate slug generated: {key}")
469468
file_dicts[key] = file_dict
470469
print("Deleting previous release files")
471-
resp = requests.delete(
472-
args.base_url + f"downloads/release_file/?release={rel_pk}", headers=headers
473-
)
470+
resp = session.delete(f"{args.base_url}downloads/release_file/?release={rel_pk}")
474471
if resp.status_code != 204:
475472
raise RuntimeError(f"deleting previous releases failed: {resp.status_code}")
476473
for file_dict in file_dicts.values():

0 commit comments

Comments
 (0)