1# This should be extended for each Python release.
2# The product code must change whenever the name of the MSI file
3# changes, and when new component codes are issued for existing
4# components. See "Changing the Product Code". As we change the
5# component codes with every build, we need a new product code
6# each time. For intermediate (snapshot) releases, they are automatically
7# generated. For official releases, we record the product codes,
8# so people can refer to them.
9product_codes = {
10    '2.5.101': '{bc14ce3e-5e72-4a64-ac1f-bf59a571898c}', # 2.5a1
11    '2.5.102': '{5eed51c1-8e9d-4071-94c5-b40de5d49ba5}', # 2.5a2
12    '2.5.103': '{73dcd966-ffec-415f-bb39-8342c1f47017}', # 2.5a3
13    '2.5.111': '{c797ecf8-a8e6-4fec-bb99-526b65f28626}', # 2.5b1
14    '2.5.112': '{32beb774-f625-439d-b587-7187487baf15}', # 2.5b2
15    '2.5.113': '{89f23918-11cf-4f08-be13-b9b2e6463fd9}', # 2.5b3
16    '2.5.121': '{8e9321bc-6b24-48a3-8fd4-c95f8e531e5f}', # 2.5c1
17    '2.5.122': '{a6cd508d-9599-45da-a441-cbffa9f7e070}', # 2.5c2
18    '2.5.150': '{0a2c5854-557e-48c8-835a-3b9f074bdcaa}', # 2.5.0
19    '2.5.1121':'{0378b43e-6184-4c2f-be1a-4a367781cd54}', # 2.5.1c1
20    '2.5.1150':'{31800004-6386-4999-a519-518f2d78d8f0}', # 2.5.1
21    '2.5.2150':'{6304a7da-1132-4e91-a343-a296269eab8a}', # 2.5.2c1
22    '2.5.2150':'{6b976adf-8ae8-434e-b282-a06c7f624d2f}', # 2.5.2
23    '2.6.101': '{0ba82e1b-52fd-4e03-8610-a6c76238e8a8}', # 2.6a1
24    '2.6.102': '{3b27e16c-56db-4570-a2d3-e9a26180c60b}', # 2.6a2
25    '2.6.103': '{cd06a9c5-bde5-4bd7-9874-48933997122a}', # 2.6a3
26    '2.6.104': '{dc6ed634-474a-4a50-a547-8de4b7491e53}', # 2.6a4
27    '2.6.111': '{3f82079a-5bee-4c4a-8a41-8292389e24ae}', # 2.6b1
28    '2.6.112': '{8a0e5970-f3e6-4737-9a2b-bc5ff0f15fb5}', # 2.6b2
29    '2.6.113': '{df4f5c21-6fcc-4540-95de-85feba634e76}', # 2.6b3
30    '2.6.121': '{bbd34464-ddeb-4028-99e5-f16c4a8fbdb3}', # 2.6c1
31    '2.6.122': '{8f64787e-a023-4c60-bfee-25d3a3f592c6}', # 2.6c2
32    '2.6.150': '{110eb5c4-e995-4cfb-ab80-a5f315bea9e8}', # 2.6.0
33    '2.6.1150':'{9cc89170-000b-457d-91f1-53691f85b223}', # 2.6.1
34    '2.6.2121':'{adac412b-b209-4c15-b6ab-dca1b6e47144}', # 2.6.2c1
35    '2.6.2150':'{24aab420-4e30-4496-9739-3e216f3de6ae}', # 2.6.2
36    '2.6.3121':'{a73e0254-dcda-4fe4-bf37-c7e1c4f4ebb6}', # 2.6.3c1
37    '2.6.3150':'{3d9ac095-e115-4e94-bdef-7f7edf17697d}', # 2.6.3
38    '2.6.4121':'{727de605-0359-4606-a94b-c2033652379b}', # 2.6.4c1
39    '2.6.4122':'{4f7603c6-6352-4299-a398-150a31b19acc}', # 2.6.4c2
40    '2.6.4150':'{e7394a0f-3f80-45b1-87fc-abcd51893246}', # 2.6.4
41    '2.6.5121':'{e0e273d7-7598-4701-8325-c90c069fd5ff}', # 2.6.5c1
42    '2.6.5122':'{fa227b76-0671-4dc6-b826-c2ff2a70dfd5}', # 2.6.5c2
43    '2.6.5150':'{4723f199-fa64-4233-8e6e-9fccc95a18ee}', # 2.6.5
44    '2.7.101': '{eca1bbef-432c-49ae-a667-c213cc7bbf22}', # 2.7a1
45    '2.7.102': '{21ce16ed-73c4-460d-9b11-522f417b2090}', # 2.7a2
46    '2.7.103': '{6e7dbd55-ba4a-48ac-a688-6c75db4d7500}', # 2.7a3
47    '2.7.104': '{ee774ba3-74a5-48d9-b425-b35a287260c8}', # 2.7a4
48    '2.7.111': '{9cfd9ec7-a9c7-4980-a1c6-054fc6493eb3}', # 2.7b1
49    '2.7.112': '{9a72faf6-c304-4165-8595-9291ff30cac6}', # 2.7b2
50    '2.7.121': '{f530c94a-dd53-4de9-948e-b632b9cb48d2}', # 2.7c1
51    '2.7.122': '{f80905d2-dd8d-4b8e-8a40-c23c93dca07d}', # 2.7c2
52    '2.7.150': '{20c31435-2a0a-4580-be8b-ac06fc243ca4}', # 2.7.0
53    '2.7.1121':'{60a4036a-374c-4fd2-84b9-bfae7db03931}', # 2.7.1rc1
54    '2.7.1122':'{5965e7d1-5584-4de9-b13a-694e0b2ee3a6}', # 2.7.1rc2
55    '2.7.1150':'{32939827-d8e5-470a-b126-870db3c69fdf}', # 2.7.1
56    '2.7.2121':'{B2E1F06E-F719-4786-972A-488A336EB2A0}', # 2.7.2rc1
57    '2.7.2150':'{2E295B5B-1AD4-4d36-97C2-A316084722CF}', # 2.7.2
58    '2.7.3121':'{1ACB88BF-1425-4f11-B664-6C89A3D7699C}', # 2.7.3rc1
59    '2.7.3122':'{B12311BE-6364-4b2a-A49A-551EEE10F3E4}', # 2.7.3rc2
60    '2.7.3150':'{C0C31BCC-56FB-42a7-8766-D29E1BD74C7C}', # 2.7.3
61    '2.7.4121':'{47F45F45-72D7-4e54-AF41-26767EDE95CF}', # 2.7.4rc1
62    '2.7.4150':'{84ADC96C-B7E0-4938-9D6E-2B640D5DA224}', # 2.7.4
63    '2.7.5150':'{DBDD570E-0952-475f-9453-AB88F3DD5659}', # 2.7.5
64    '2.7.6121':'{D1EBC07F-A7B1-4163-83DB-AE813CEF392F}', # 2.7.6rc1
65    '2.7.6150':'{C3CC4DF5-39A5-4027-B136-2B3E1F5AB6E2}', # 2.7.6
66    '2.7.7121':'{5E0D187D-238B-4e96-9C75-C4CF141F5385}', # 2.7.7rc1
67    '2.7.7150':'{049CA433-77A0-4e48-AC76-180A282C4E10}', # 2.7.7
68    '2.7.8150':'{61121B12-88BD-4261-A6EE-AB32610A56DD}', # 2.7.8
69    '2.7.9121':'{AAB1E8FF-6D00-4409-8F13-BE365AB92FFE}', # 2.7.9rc1
70    '2.7.9150':'{79F081BF-7454-43DB-BD8F-9EE596813232}', # 2.7.9
71    '2.7.10121':'{872BE558-2E5F-4E9C-A42D-8561FA43811C}', # 2.7.10rc1
72    '2.7.10150':'{E2B51919-207A-43EB-AE78-733F9C6797C2}', # 2.7.10
73    '2.7.11121':'{9872896F-3558-4361-8518-23E611FCA35A}', # 2.7.11rc1
74    '2.7.11150':'{16E52445-1392-469F-9ADB-FC03AF00CD61}', # 2.7.11
75    '2.7.12121':'{3FC2B676-0216-4361-AFAC-73D299065CC5}', # 2.7.12rc1
76    '2.7.12150':'{9DA28CE5-0AA5-429E-86D8-686ED898C665}', # 2.7.12
77    '2.7.13121':'{FC03C4BD-2D42-4E0E-8B4F-FCC2FB0EC8E3}', # 2.7.13rc1
78    '2.7.13150':'{4A656C6C-D24A-473F-9747-3A8D00907A03}', # 2.7.13
79    '2.7.14121':'{614347BE-6269-4F2C-A34A-30AFC080C50B}', # 2.7.14rc1
80    '2.7.14150':'{0398A685-FD8D-46B3-9816-C47319B0CF5E}', # 2.7.14
81    '2.7.15121':'{B4B95EEC-7227-4F69-A918-043AF75653AC}', # 2.7.15rc1
82    '2.7.15150':'{16CD92A4-0152-4CB7-8FD6-9788D3363616}', # 2.7.15
83}
84