summaryrefslogtreecommitdiffstats
path: root/Tools/msi
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/msi')
-rw-r--r--Tools/msi/purge.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/Tools/msi/purge.py b/Tools/msi/purge.py
new file mode 100644
index 0000000..76dbc49
--- /dev/null
+++ b/Tools/msi/purge.py
@@ -0,0 +1,74 @@
+# Purges the Fastly cache for Windows download files
+#
+# Usage:
+# py -3 purge.py 3.5.1rc1
+#
+
+__author__ = 'Steve Dower <steve.dower@python.org>'
+__version__ = '1.0.0'
+
+import re
+import sys
+
+from urllib.request import *
+
+VERSION_RE = re.compile(r'(\d+\.\d+\.\d+)(\w+\d+)?$')
+
+try:
+ m = VERSION_RE.match(sys.argv[1])
+ if not m:
+ print('Invalid version:', sys.argv[1])
+ print('Expected something like "3.5.1rc1"')
+ sys.exit(1)
+except LookupError:
+ print('Missing version argument. Expected something like "3.5.1rc1"')
+ sys.exit(1)
+
+URL = "https://www.python.org/ftp/python/{}/".format(m.group(1))
+
+
+FILES = [
+ "core.msi",
+ "core_d.msi",
+ "core_pdb.msi",
+ "dev.msi",
+ "dev_d.msi",
+ "doc.msi",
+ "exe.msi",
+ "exe_d.msi",
+ "exe_pdb.msi",
+ "launcher.msi",
+ "lib.msi",
+ "lib_d.msi",
+ "lib_pdb.msi",
+ "path.msi",
+ "pip.msi",
+ "tcltk.msi",
+ "tcltk_d.msi",
+ "tcltk_pdb.msi",
+ "test.msi",
+ "test_d.msi",
+ "test_pdb.msi",
+ "tools.msi",
+ "Windows6.0-KB2999226-x64.msu",
+ "Windows6.0-KB2999226-x86.msu",
+ "Windows6.1-KB2999226-x64.msu",
+ "Windows6.1-KB2999226-x86.msu",
+ "Windows8.1-KB2999226-x64.msu",
+ "Windows8.1-KB2999226-x86.msu",
+ "Windows8-RT-KB2999226-x64.msu",
+ "Windows8-RT-KB2999226-x86.msu",
+]
+PATHS = [
+ "python-{}.exe".format(m.group(0)),
+ "python-{}-webinstall.exe".format(m.group(0)),
+ "python-{}-amd64.exe".format(m.group(0)),
+ "python-{}-amd64-webinstall.exe".format(m.group(0)),
+] + ["win32{}/{}".format(m.group(2), f) for f in FILES] + ["amd64{}/{}".format(m.group(2), f) for f in FILES]
+
+print('Purged:')
+for n in PATHS:
+ u = URL + n
+ with urlopen(Request(u, method='PURGE', headers={'Fastly-Soft-Purge': 1})) as r:
+ r.read()
+ print(' ', u)