2222
2323Georg Brandl, March 2014.
2424"""
25- from __future__ import print_function
2625
2726import hashlib
2827import json
2928import os
30- from os import path
3129import re
32- import sys
33- import time
3430import subprocess
31+ import sys
32+ from os import path
3533
3634import requests
3735
36+
3837# Copied from release.py
3938def error (* msgs ):
4039 print ('**ERROR**' , file = sys .stderr )
@@ -138,7 +137,7 @@ def slug_for(release):
138137 ('-' + release [len (base_version (release )):] if release [len (base_version (release )):] else '' )
139138
140139def sigfile_for (release , rfile ):
141- return download_root + '%s/%s .asc' % ( release , rfile )
140+ return download_root + f' { release } / { rfile } .asc'
142141
143142def md5sum_for (release , rfile ):
144143 return hashlib .md5 (open (ftp_root + base_version (release ) + '/' + rfile , 'rb' ).read ()).hexdigest ()
@@ -164,33 +163,33 @@ def minor_version_tuple(release):
164163def build_file_dict (release , rfile , rel_pk , file_desc , os_pk ,
165164 add_download , add_desc ):
166165 """Return a dictionary with all needed fields for a ReleaseFile object."""
167- d = dict (
168- name = file_desc ,
169- slug = slug_for (release ) + '-' + make_slug (file_desc )[:40 ],
170- os = '/api/v1/downloads/os/%s/' % os_pk ,
171- release = '/api/v1/downloads/release/%s/' % rel_pk ,
172- description = add_desc ,
173- is_source = os_pk == 3 ,
174- url = download_root + '%s/%s' % ( base_version (release ), rfile ) ,
175- md5_sum = md5sum_for (release , rfile ),
176- filesize = filesize_for (release , rfile ),
177- download_button = add_download ,
178- )
166+ d = {
167+ ' name' : file_desc ,
168+ ' slug' : slug_for (release ) + '-' + make_slug (file_desc )[:40 ],
169+ 'os' : '/api/v1/downloads/os/%s/' % os_pk ,
170+ ' release' : '/api/v1/downloads/release/%s/' % rel_pk ,
171+ ' description' : add_desc ,
172+ ' is_source' : os_pk == 3 ,
173+ ' url' : download_root + f' { base_version (release )} / { rfile } ' ,
174+ ' md5_sum' : md5sum_for (release , rfile ),
175+ ' filesize' : filesize_for (release , rfile ),
176+ ' download_button' : add_download ,
177+ }
179178 # Upload GPG signature
180- if os .path .exists (ftp_root + "%s/%s.asc" % ( base_version (release ), rfile ) ):
179+ if os .path .exists (ftp_root + f" { base_version (release )} / { rfile } .asc" ):
181180 d ["gpg_signature_file" ] = sigfile_for (base_version (release ), rfile )
182181 # Upload Sigstore signature
183- if os .path .exists (ftp_root + "%s/%s.sig" % ( base_version (release ), rfile ) ):
184- d ["sigstore_signature_file" ] = download_root + '%s/%s.sig' % ( base_version (release ), rfile )
182+ if os .path .exists (ftp_root + f" { base_version (release )} / { rfile } .sig" ):
183+ d ["sigstore_signature_file" ] = download_root + f' { base_version (release )} / { rfile } .sig'
185184 # Upload Sigstore certificate
186- if os .path .exists (ftp_root + "%s/%s.crt" % ( base_version (release ), rfile ) ):
187- d ["sigstore_cert_file" ] = download_root + '%s/%s.crt' % ( base_version (release ), rfile )
185+ if os .path .exists (ftp_root + f" { base_version (release )} / { rfile } .crt" ):
186+ d ["sigstore_cert_file" ] = download_root + f' { base_version (release )} / { rfile } .crt'
188187 # Upload Sigstore bundle
189- if os .path .exists (ftp_root + "%s/%s.sigstore" % ( base_version (release ), rfile ) ):
190- d ["sigstore_bundle_file" ] = download_root + '%s/%s.sigstore' % ( base_version (release ), rfile )
188+ if os .path .exists (ftp_root + f" { base_version (release )} / { rfile } .sigstore" ):
189+ d ["sigstore_bundle_file" ] = download_root + f' { base_version (release )} / { rfile } .sigstore'
191190 # Upload SPDX SBOM file
192- if os .path .exists (ftp_root + "%s/%s .spdx.json" % ( base_version ( release ), rfile ) ):
193- d ["sbom_spdx2_file" ] = download_root + '%s/%s .spdx.json' % ( base_version ( release ), rfile )
191+ if os .path .exists (ftp_root + f" { base_version ( release ) } / { rfile } .spdx.json" ):
192+ d ["sbom_spdx2_file" ] = download_root + f' { base_version ( release ) } / { rfile } .spdx.json'
194193
195194 return d
196195
@@ -206,36 +205,36 @@ def list_files(release):
206205 if rfile .startswith (prefix ):
207206 break
208207 else :
209- print (' File %s/%s has wrong prefix' % ( reldir , rfile ) )
208+ print (f ' File { reldir } / { rfile } has wrong prefix' )
210209 continue
211210 if rfile .endswith ('.chm' ):
212211 if rfile [:- 4 ] != 'python' + release .replace ('.' , '' ):
213- print (' File %s/%s has a different version' % ( reldir , rfile ) )
212+ print (f ' File { reldir } / { rfile } has a different version' )
214213 continue
215214 else :
216215 try :
217216 prefix , rest = rfile .split ('-' , 1 )
218- except :
217+ except : # noqa: E722
219218 prefix , rest = rfile , ''
220219 if not rest .startswith ((release + '-' , release + '.' )):
221- print (' File %s/%s has a different version' % ( reldir , rfile ) )
220+ print (f ' File { reldir } / { rfile } has a different version' )
222221 continue
223222 for rx , info in get_file_descriptions (release ):
224223 if rx .search (rfile ):
225224 file_desc , os_pk , add_download , add_desc = info
226225 yield rfile , file_desc , os_pk , add_download , add_desc
227226 break
228227 else :
229- print (' File %s/%s not recognized' % ( reldir , rfile ) )
228+ print (f ' File { reldir } / { rfile } not recognized' )
230229 continue
231230
232231def query_object (objtype , ** params ):
233232 """Find an API object by query parameters."""
234233 uri = base_url + 'downloads/%s/' % objtype
235- uri += '?' + '&' .join ('%s=%s' % v for v in params .items ())
234+ uri += '?' + '&' .join (f' { k } = { v } ' for k , v in params .items ())
236235 resp = requests .get (uri , headers = headers )
237236 if resp .status_code != 200 or not json .loads (resp .text )['objects' ]:
238- raise RuntimeError ('no object for %s params=%r' % ( objtype , params ) )
237+ raise RuntimeError (f 'no object for { objtype } params={ params !r } ' )
239238 obj = json .loads (resp .text )['objects' ][0 ]
240239 return int (obj ['resource_uri' ].strip ('/' ).split ('/' )[- 1 ])
241240
@@ -248,17 +247,17 @@ def post_object(objtype, datadict):
248247 info = json .loads (resp .text )
249248 print (info .get ('error_message' , 'No error message.' ))
250249 print (info .get ('traceback' , '' ))
251- except :
250+ except : # noqa: E722
252251 pass
253- print ('Creating %s failed: %s' % ( objtype , resp .status_code ) )
252+ print (f 'Creating { objtype } failed: { resp .status_code } ' )
254253 return - 1
255254 newloc = resp .headers ['Location' ]
256255 pk = int (newloc .strip ('/' ).split ('/' )[- 1 ])
257256 return pk
258257
259258def sign_release_files_with_sigstore (release , release_files ):
260259 filenames = [
261- ftp_root + "%s/%s" % ( base_version (release ), rfile )
260+ ftp_root + f" { base_version (release )} / { rfile } "
262261 for rfile , file_desc , os_pk , add_download , add_desc in release_files
263262 ]
264263
0 commit comments