Home | History | Annotate | Download | only in msi
      1 # Purges the Fastly cache for Windows download files
      2 #
      3 # Usage:
      4 #   py -3 purge.py 3.5.1rc1
      5 #
      6 
      7 __author__ = 'Steve Dower <steve.dower (at] python.org>'
      8 __version__ = '1.0.0'
      9 
     10 import re
     11 import sys
     12 
     13 from urllib.request import *
     14 
     15 VERSION_RE = re.compile(r'(\d+\.\d+\.\d+)(\w+\d+)?$')
     16 
     17 try:
     18     m = VERSION_RE.match(sys.argv[1])
     19     if not m:
     20         print('Invalid version:', sys.argv[1])
     21         print('Expected something like "3.5.1rc1"')
     22         sys.exit(1)
     23 except LookupError:
     24     print('Missing version argument. Expected something like "3.5.1rc1"')
     25     sys.exit(1)
     26 
     27 URL = "https://www.python.org/ftp/python/{}/".format(m.group(1))
     28 REL = m.group(2) or ''
     29 
     30 FILES = [
     31     "core.msi",
     32     "core_d.msi",
     33     "core_pdb.msi",
     34     "dev.msi",
     35     "dev_d.msi",
     36     "doc.msi",
     37     "exe.msi",
     38     "exe_d.msi",
     39     "exe_pdb.msi",
     40     "launcher.msi",
     41     "lib.msi",
     42     "lib_d.msi",
     43     "lib_pdb.msi",
     44     "path.msi",
     45     "pip.msi",
     46     "tcltk.msi",
     47     "tcltk_d.msi",
     48     "tcltk_pdb.msi",
     49     "test.msi",
     50     "test_d.msi",
     51     "test_pdb.msi",
     52     "tools.msi",
     53     "ucrt.msi",
     54     "Windows6.0-KB2999226-x64.msu",
     55     "Windows6.0-KB2999226-x86.msu",
     56     "Windows6.1-KB2999226-x64.msu",
     57     "Windows6.1-KB2999226-x86.msu",
     58     "Windows8.1-KB2999226-x64.msu",
     59     "Windows8.1-KB2999226-x86.msu",
     60     "Windows8-RT-KB2999226-x64.msu",
     61     "Windows8-RT-KB2999226-x86.msu",
     62 ]
     63 PATHS = [
     64     "python-{}.exe".format(m.group(0)),
     65     "python-{}-webinstall.exe".format(m.group(0)),
     66     "python-{}-amd64.exe".format(m.group(0)),
     67     "python-{}-amd64-webinstall.exe".format(m.group(0)),
     68 ] + ["win32{}/{}".format(REL, f) for f in FILES] + ["amd64{}/{}".format(REL, f) for f in FILES]
     69 
     70 print('Purged:')
     71 for n in PATHS:
     72     u = URL + n
     73     with urlopen(Request(u, method='PURGE', headers={'Fastly-Soft-Purge': 1})) as r:
     74         r.read()
     75     print('  ', u)
     76