| #!/usr/bin/env python2.5 |
| # |
| # Copyright 2008 the Melange authors. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| """Set of known *current* country and territory names. |
| |
| Legacy (duplicate) names for some countries have been removed from the |
| original list. Also missing are the following U.S. OFAC embargoed and |
| Commerce Department export-controlled countries: |
| |
| Cuba, Iran, Myanmar (formerly Burma), North Korea, Sudan, Syria |
| """ |
| |
| |
| COUNTRY_INFO = { |
| "Afghanistan, Islamic State of": ('.af', 'Asia'), |
| "Albania": ('.al', 'Europe'), |
| "Algeria": ('.dz', 'Africa'), |
| "American Samoa": ('.as', 'Australia'), |
| "Andorra, Principality of": ('.ad', 'Europe'), |
| "Angola": ('.ao', 'Africa'), |
| "Anguilla": ('.ai', 'North America'), |
| "Antarctica": ('.aq', 'Europe'), |
| "Antigua and Barbuda": ('.ag', 'North America'), |
| "Argentina": ('.ar', 'South America'), |
| "Armenia": ('.am', 'Asia'), |
| "Aruba": ('.aw', 'North America'), |
| "Australia": ('.au', 'Australia'), |
| "Austria": ('.at', 'Europe'), |
| "Azerbaidjan": ('.az', 'Asia'), |
| "Bahamas": ('.bs', 'North America'), |
| "Bahrain": ('.bh', 'Asia'), |
| "Bangladesh": ('.bd', 'Asia'), |
| "Barbados": ('.bb', 'North America'), |
| "Belarus": ('.by', 'Europe'), |
| "Belgium": ('.be', 'Europe'), |
| "Belize": ('.bz', 'North America'), |
| "Benin": ('.bj', 'Africa'), |
| "Bermuda": ('.bm', 'North America'), |
| "Bhutan": ('.bt', 'Asia'), |
| "Bolivia": ('.bo', 'South America'), |
| "Bosnia-Herzegovina": ('.ba', 'Europe'), |
| "Botswana": ('.bw', 'Africa'), |
| "Bouvet Island": ('.bv', 'Europe'), |
| "Brazil": ('.br', 'South America'), |
| "British Indian Ocean Territory": ('.io', 'Asia'), |
| "Brunei Darussalam": ('.bn', 'Asia'), |
| "Bulgaria": ('', 'Europe'), |
| "Burkina Faso": ('.bg', 'Africa'), |
| "Burundi": ('.bi', 'Africa'), |
| "Cambodia, Kingdom of": ('.kh', 'Asia'), |
| "Cameroon": ('.cm', 'Africa'), |
| "Canada": ('.ca', 'North America'), |
| "Cape Verde": ('.cv', 'Africa'), |
| "Cayman Islands": ('.ky', 'North America'), |
| "Central African Republic": ('.cf', 'Africa'), |
| "Chad": ('.td', 'Africa'), |
| "Chile": ('.cl', 'South America'), |
| "China": ('.cn', 'Asia'), |
| "Christmas Island": ('.cx', 'Australia'), |
| "Cocos (Keeling) Islands": ('.cc', 'Australia'), |
| "Colombia": ('.co', 'South America'), |
| "Comoros": ('.km', 'Africa'), |
| "Congo": ('.cg', 'Africa'), |
| "Congo, Democratic Republic of the": ('.cd', 'Africa'), |
| "Cook Islands": ('.ck', 'Australia'), |
| "Costa Rica": ('.cr', 'North America'), |
| "Croatia": ('.hr', 'Europe'), |
| "Cyprus": ('.cy', 'Asia'), |
| "Czech Republic": ('.cz', 'Europe'), |
| "Denmark": ('.dk', 'Europe'), |
| "Djibouti": ('.dj', 'Africa'), |
| "Dominica": ('.dm', 'North America'), |
| "Dominican Republic": ('.do', 'North America'), |
| "East Timor": ('.tl', 'Asia'), |
| "Ecuador": ('.ec', 'South America'), |
| "Egypt": ('.eg', 'Africa'), |
| "El Salvador": ('.sv', 'North America'), |
| "Equatorial Guinea": ('.gq', 'Africa'), |
| "Eritrea": ('.er', 'Africa'), |
| "Estonia": ('.ee', 'Europe'), |
| "Ethiopia": ('.et', 'Africa'), |
| "Falkland Islands": ('.fk', 'South America'), |
| "Faroe Islands": ('.fo', 'Europe'), |
| "Fiji": ('.fj', 'Australia'), |
| "Finland": ('.fi', 'Europe'), |
| "France": ('.fr', 'Europe'), |
| "French Guyana": ('.gf', 'South America'), |
| "French Southern Territories": ('.tf', 'Africa'), |
| "Gabon": ('.ga', 'Africa'), |
| "Gambia": ('.gm', 'Africa'), |
| "Georgia": ('.ge', 'Asia'), |
| "Germany": ('.de', 'Europe'), |
| "Ghana": ('.gh', 'Africa'), |
| "Gibraltar": ('.gi', 'Europe'), |
| "Greece": ('.gr', 'Europe'), |
| "Greenland": ('.gl', 'North America'), |
| "Grenada": ('.gd', 'North America'), |
| "Guadeloupe (French)": ('.gp', 'North America'), |
| "Guam (USA)": ('.gu', 'Australia'), |
| "Guatemala": ('.gt', 'North America'), |
| "Guinea": ('.gn', 'Africa'), |
| "Guinea Bissau": ('.gw', 'Africa'), |
| "Guyana": ('.gy', 'South America'), |
| "Haiti": ('.ht', 'North America'), |
| "Heard and McDonald Islands": ('.hm', 'Australia'), |
| "Holy See (Vatican City State)": ('.va', 'Europe'), |
| "Honduras": ('.hn', 'North America'), |
| "Hong Kong": ('.hk', 'Asia'), |
| "Hungary": ('.hu', 'Europe'), |
| "Iceland": ('.is', 'Europe'), |
| "India": ('.in', 'Asia'), |
| "Indonesia": ('.id', 'Asia'), |
| "Iraq": ('.iq', 'Asia'), |
| "Ireland": ('.ie', 'Europe'), |
| "Israel": ('.il', 'Asia'), |
| "Italy": ('.it', 'Europe'), |
| "Ivory Coast (Cote D'Ivoire)": ('.ci', 'Africa'), |
| "Jamaica": ('.jm', 'North America'), |
| "Japan": ('.jp', 'Asia'), |
| "Jordan": ('.jo', 'Asia'), |
| "Kazakhstan": ('.kz', 'Asia'), |
| "Kenya": ('.ke', 'Africa'), |
| "Kiribati": ('.ki', 'Australia'), |
| "Kuwait": ('.kw', 'Asia'), |
| "Kyrgyz Republic (Kyrgyzstan)": ('.kg', 'Asia'), |
| "Laos": ('.la', 'Asia'), |
| "Latvia": ('.lv', 'Europe'), |
| "Lebanon": ('.lb', 'Asia'), |
| "Lesotho": ('.ls', 'Africa'), |
| "Liberia": ('.lr', 'Africa'), |
| "Libya": ('.ly', 'Africa'), |
| "Liechtenstein": ('.li', 'Europe'), |
| "Lithuania": ('.lt', 'Europe'), |
| "Luxembourg": ('.lu', 'Europe'), |
| "Macau": ('.mo', 'Asia'), |
| "Macedonia": ('.mk', 'Europe'), |
| "Madagascar": ('.mg', 'Africa'), |
| "Malawi": ('.mw', 'Africa'), |
| "Malaysia": ('.my', 'Asia'), |
| "Maldives": ('.mv', 'Asia'), |
| "Mali": ('.ml', 'Africa'), |
| "Malta": ('.mt', 'Europe'), |
| "Marshall Islands": ('.mh', 'Australia'), |
| "Martinique (French)": ('.mq', 'North America'), |
| "Mauritania": ('.mr', 'Africa'), |
| "Mauritius": ('.mu', 'Africa'), |
| "Mayotte": ('.yt', 'Africa'), |
| "Mexico": ('.mx', 'North America'), |
| "Micronesia": ('.fm', 'Australia'), |
| "Moldavia": ('.md', 'Europe'), |
| "Monaco": ('.mc', 'Europe'), |
| "Mongolia": ('.mn', 'Asia'), |
| "Montenegro": ('.me', 'Europe'), |
| "Montserrat": ('.ms', 'North America'), |
| "Morocco": ('.ma', 'Africa'), |
| "Mozambique": ('.mz', 'Africa'), |
| "Namibia": ('.na', 'Africa'), |
| "Nauru": ('.nr', 'Australia'), |
| "Nepal": ('.np', 'Asia'), |
| "Netherlands": ('.nl', 'Europe'), |
| "Netherlands Antilles": ('.an', 'North America'), |
| "New Caledonia (French)": ('.nc', 'Australia'), |
| "New Zealand": ('.nz', 'Australia'), |
| "Nicaragua": ('.ni', 'North America'), |
| "Niger": ('.ne', 'Africa'), |
| "Nigeria": ('.ng', 'Africa'), |
| "Niue": ('.nu', 'Australia'), |
| "Northern Mariana Islands": ('.mp', 'Australia'), |
| "Norway": ('.no', 'Europe'), |
| "Oman": ('.om', 'Asia'), |
| "Pakistan": ('.pk', 'Asia'), |
| "Palau": ('.pw', 'Australia'), |
| "Palestinian Territories": ('.ps', 'Asia'), |
| "Panama": ('.pa', 'North America'), |
| "Papua New Guinea": ('.pg', 'Australia'), |
| "Paraguay": ('.py', 'South America'), |
| "Peru": ('.pe', 'South America'), |
| "Philippines": ('.ph', 'Asia'), |
| "Pitcairn Island": ('.pn', 'South America'), |
| "Poland": ('.pl', 'Europe'), |
| "Polynesia (French)": ('.pf', 'Australia'), |
| "Portugal": ('.pt', 'Europe'), |
| "Puerto Rico": ('.pr', 'North America'), |
| "Qatar": ('.qa', 'Asia'), |
| "Reunion (French)": ('.re', 'Africa'), |
| "Romania": ('.ro', 'Europe'), |
| "Russian Federation": ('.ru', 'Europe'), |
| "Rwanda": ('.rw', 'Africa'), |
| "South Georgia & South Sandwich Islands": ('.gs', 'South America'), |
| "Saint Helena": ('.sh', 'Africa'), |
| "Saint Kitts & Nevis Anguilla": ('.kn', 'North America'), |
| "Saint Lucia": ('.lc', 'North America'), |
| "Saint Pierre and Miquelon": ('.pm', 'North America'), |
| "Saint Tome (Sao Tome) and Principe": ('.st', 'Africa'), |
| "Saint Vincent & Grenadines": ('.vc', 'North America'), |
| "Samoa": ('.ws', 'Australia'), |
| "San Marino": ('.sm', 'Europe'), |
| "Saudi Arabia": ('.sa', 'Asia'), |
| "Senegal": ('.sn', 'Africa'), |
| "Serbia": ('.rs', 'Europe'), |
| "Seychelles": ('.sc', 'Africa'), |
| "Sierra Leone": ('.sl', 'Africa'), |
| "Singapore": ('.sg', 'Asia'), |
| "Slovak Republic": ('.sk', 'Europe'), |
| "Slovenia": ('.si', 'Europe'), |
| "Solomon Islands": ('.sb', 'Australia'), |
| "Somalia": ('.so', 'Africa'), |
| "South Africa": ('.za', 'Africa'), |
| "South Korea": ('.kr', 'Asia'), |
| "Spain": ('.es', 'Europe'), |
| "Sri Lanka": ('.lk', 'Asia'), |
| "Suriname": ('.sr', 'South America'), |
| "Svalbard and Jan Mayen Islands": ('.sj', 'Europe'), |
| "Swaziland": ('.sz', 'Africa'), |
| "Sweden": ('.se', 'Europe'), |
| "Switzerland": ('.ch', 'Europe'), |
| "Tadjikistan": ('.tj', 'Asia'), |
| "Taiwan": ('.tw', 'Asia'), |
| "Tanzania": ('.tz', 'Africa'), |
| "Thailand": ('.th', 'Asia'), |
| "Togo": ('.tg', 'Africa'), |
| "Tokelau": ('.tk', 'Australia'), |
| "Tonga": ('.to', 'Australia'), |
| "Trinidad and Tobago": ('.tt', 'North America'), |
| "Tunisia": ('.tn', 'Africa'), |
| "Turkey": ('.tr', 'Asia'), |
| "Turkmenistan": ('.tm', 'Asia'), |
| "Turks and Caicos Islands": ('.tc', 'North America'), |
| "Tuvalu": ('.tv', 'Australia'), |
| "USA Minor Outlying Islands": ('.um', 'North America'), |
| "Uganda": ('.ug', 'Africa'), |
| "Ukraine": ('.ua', 'Europe'), |
| "United Arab Emirates": ('.ae', 'Asia'), |
| "United Kingdom": ('.uk', 'Europe'), |
| "United States": ('.us', 'North America'), |
| "Uruguay": ('.uy', 'South America'), |
| "Uzbekistan": ('.uz', 'Asia'), |
| "Vanuatu": ('.vu', 'Australia'), |
| "Venezuela": ('.ve', 'South America'), |
| "Vietnam": ('.vn', 'Asia'), |
| "Virgin Islands (British)": ('.vg', 'North America'), |
| "Virgin Islands (USA)": ('.vi', 'North America'), |
| "Wallis and Futuna Islands": ('.wf', 'Australia'), |
| "Western Sahara": ('.eh', 'Africa'), |
| "Yemen": ('.ye', 'Asia'), |
| "Zambia": ('.zm', 'Africa'), |
| "Zimbabwe": ('.zw', 'Africa'), |
| } |
| |
| # List of all countries and territories |
| COUNTRIES_AND_TERRITORIES = sorted(COUNTRY_INFO.keys()) |
| |
| # Mapping of countries to their CCTLD |
| COUNTRIES_TO_CCTLD = dict((k, c) for k, (c, _) in COUNTRY_INFO.items()) |
| |
| # Mapping of countries to their continent |
| COUNTRIES_TO_CONTINENT = dict((k, c) for k, (_, c) in COUNTRY_INFO.items()) |