[Python-checkins] release: add-to-pydotorg.py now detects if two files have the same slug, and if so

larry.hastings python-checkins at python.org
Sat May 30 10:48:36 CEST 2015


https://hg.python.org/release/rev/e928125072aa
changeset:   98:e928125072aa
user:        Larry Hastings <larry at hastings.org>
date:        Sat May 30 01:48:32 2015 -0700
summary:
  add-to-pydotorg.py now detects if two files have the same slug, and if so
reports an error without changing anything (including deleting the previous
downloadable files).

files:
  add-to-pydotorg.py |  12 +++++++++---
  1 files changed, 9 insertions(+), 3 deletions(-)


diff --git a/add-to-pydotorg.py b/add-to-pydotorg.py
--- a/add-to-pydotorg.py
+++ b/add-to-pydotorg.py
@@ -191,14 +191,20 @@
     rel_pk = query_object('release', name='Python+' + rel)
     print 'Found Release object: id =', rel_pk
     n = 0
+    file_dicts = {}
+    for rfile, file_desc, os_pk, add_desc in list_files(rel):
+        print 'Creating ReleaseFile object for', rfile
+        file_dict = build_file_dict(rel, rfile, rel_pk, file_desc, os_pk, add_desc)
+        key = file_dict['slug']
+        if key in file_dicts:
+            raise RuntimeError('duplicate slug generated: %s' % key)
+        file_dicts[key] = file_dict
     print 'Deleting previous release files'
     resp = requests.delete(base_url + 'downloads/release_file/?release=%s' % rel_pk,
                            headers=headers)
     if resp.status_code != 204:
         raise RuntimeError('deleting previous releases failed: %s' % resp.status_code)
-    for rfile, file_desc, os_pk, add_desc in list_files(rel):
-        print 'Creating ReleaseFile object for', rfile
-        file_dict = build_file_dict(rel, rfile, rel_pk, file_desc, os_pk, add_desc)
+    for file_dict in file_dicts.values():
         file_pk = post_object('release_file', file_dict)
         if file_pk >= 0:
             print 'Created as id =', file_pk

-- 
Repository URL: https://hg.python.org/release


More information about the Python-checkins mailing list