summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2012-05-02 11:23:51 -0500
committerDan McGee <dan@archlinux.org>2012-09-30 13:11:08 -0500
commitf02f9dd446dfc57d90c55149822932bc236a6a5c (patch)
tree78e0444bbd84890a7c2e54e69e6d963d86e14ca2
parentab1c264ca1bec9b12f655583af0fa284c98e0e89 (diff)
downloadarchweb-f02f9dd446dfc57d90c55149822932bc236a6a5c.tar.gz
archweb-f02f9dd446dfc57d90c55149822932bc236a6a5c.zip
Add continent by country lookupmirror_location
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--mirrors/continents.py286
1 files changed, 286 insertions, 0 deletions
diff --git a/mirrors/continents.py b/mirrors/continents.py
new file mode 100644
index 00000000..20df40f8
--- /dev/null
+++ b/mirrors/continents.py
@@ -0,0 +1,286 @@
+'''
+Contains a list of (continent_code, country_code) tuples. Note that neither
+side is unique as some countries are considered to be in multiple contentents.
+
+Source:
+http://en.wikipedia.org/wiki/List_of_sovereign_states_and_dependent_territories_by_continent_%28data_file%29
+'''
+
+CONTINENTS = {
+ 'AF': 'Africa',
+ 'AS': 'Asia',
+ 'EU': 'Europe',
+ 'NA': 'North America',
+ 'SA': 'South America',
+ 'OC': 'Oceania',
+ 'AN': 'Antarctica',
+}
+
+CONTINENT_COUNTRIES = (
+ ('AS', 'AF'),
+ ('EU', 'AL'),
+ ('AN', 'AQ'),
+ ('AF', 'DZ'),
+ ('OC', 'AS'),
+ ('EU', 'AD'),
+ ('AF', 'AO'),
+ ('NA', 'AG'),
+ ('EU', 'AZ'),
+ ('AS', 'AZ'),
+ ('SA', 'AR'),
+ ('OC', 'AU'),
+ ('EU', 'AT'),
+ ('NA', 'BS'),
+ ('AS', 'BH'),
+ ('AS', 'BD'),
+ ('EU', 'AM'),
+ ('AS', 'AM'),
+ ('NA', 'BB'),
+ ('EU', 'BE'),
+ ('NA', 'BM'),
+ ('AS', 'BT'),
+ ('SA', 'BO'),
+ ('EU', 'BA'),
+ ('AF', 'BW'),
+ ('AN', 'BV'),
+ ('SA', 'BR'),
+ ('NA', 'BZ'),
+ ('AS', 'IO'),
+ ('OC', 'SB'),
+ ('NA', 'VG'),
+ ('AS', 'BN'),
+ ('EU', 'BG'),
+ ('AS', 'MM'),
+ ('AF', 'BI'),
+ ('EU', 'BY'),
+ ('AS', 'KH'),
+ ('AF', 'CM'),
+ ('NA', 'CA'),
+ ('AF', 'CV'),
+ ('NA', 'KY'),
+ ('AF', 'CF'),
+ ('AS', 'LK'),
+ ('AF', 'TD'),
+ ('SA', 'CL'),
+ ('AS', 'CN'),
+ ('AS', 'TW'),
+ ('AS', 'CX'),
+ ('AS', 'CC'),
+ ('SA', 'CO'),
+ ('AF', 'KM'),
+ ('AF', 'YT'),
+ ('AF', 'CG'),
+ ('AF', 'CD'),
+ ('OC', 'CK'),
+ ('NA', 'CR'),
+ ('EU', 'HR'),
+ ('NA', 'CU'),
+ ('EU', 'CY'),
+ ('AS', 'CY'),
+ ('EU', 'CZ'),
+ ('AF', 'BJ'),
+ ('EU', 'DK'),
+ ('NA', 'DM'),
+ ('NA', 'DO'),
+ ('SA', 'EC'),
+ ('NA', 'SV'),
+ ('AF', 'GQ'),
+ ('AF', 'ET'),
+ ('AF', 'ER'),
+ ('EU', 'EE'),
+ ('EU', 'FO'),
+ ('SA', 'FK'),
+ ('AN', 'GS'),
+ ('OC', 'FJ'),
+ ('EU', 'FI'),
+ ('EU', 'AX'),
+ ('EU', 'FR'),
+ ('SA', 'GF'),
+ ('OC', 'PF'),
+ ('AN', 'TF'),
+ ('AF', 'DJ'),
+ ('AF', 'GA'),
+ ('EU', 'GE'),
+ ('AS', 'GE'),
+ ('AF', 'GM'),
+ ('AS', 'PS'),
+ ('EU', 'DE'),
+ ('AF', 'GH'),
+ ('EU', 'GI'),
+ ('OC', 'KI'),
+ ('EU', 'GR'),
+ ('NA', 'GL'),
+ ('NA', 'GD'),
+ ('NA', 'GP'),
+ ('OC', 'GU'),
+ ('NA', 'GT'),
+ ('AF', 'GN'),
+ ('SA', 'GY'),
+ ('NA', 'HT'),
+ ('AN', 'HM'),
+ ('EU', 'VA'),
+ ('NA', 'HN'),
+ ('AS', 'HK'),
+ ('EU', 'HU'),
+ ('EU', 'IS'),
+ ('AS', 'IN'),
+ ('AS', 'ID'),
+ ('AS', 'IR'),
+ ('AS', 'IQ'),
+ ('EU', 'IE'),
+ ('AS', 'IL'),
+ ('EU', 'IT'),
+ ('AF', 'CI'),
+ ('NA', 'JM'),
+ ('AS', 'JP'),
+ ('EU', 'KZ'),
+ ('AS', 'KZ'),
+ ('AS', 'JO'),
+ ('AF', 'KE'),
+ ('AS', 'KP'),
+ ('AS', 'KR'),
+ ('AS', 'KW'),
+ ('AS', 'KG'),
+ ('AS', 'LA'),
+ ('AS', 'LB'),
+ ('AF', 'LS'),
+ ('EU', 'LV'),
+ ('AF', 'LR'),
+ ('AF', 'LY'),
+ ('EU', 'LI'),
+ ('EU', 'LT'),
+ ('EU', 'LU'),
+ ('AS', 'MO'),
+ ('AF', 'MG'),
+ ('AF', 'MW'),
+ ('AS', 'MY'),
+ ('AS', 'MV'),
+ ('AF', 'ML'),
+ ('EU', 'MT'),
+ ('NA', 'MQ'),
+ ('AF', 'MR'),
+ ('AF', 'MU'),
+ ('NA', 'MX'),
+ ('EU', 'MC'),
+ ('AS', 'MN'),
+ ('EU', 'MD'),
+ ('EU', 'ME'),
+ ('NA', 'MS'),
+ ('AF', 'MA'),
+ ('AF', 'MZ'),
+ ('AS', 'OM'),
+ ('AF', 'NA'),
+ ('OC', 'NR'),
+ ('AS', 'NP'),
+ ('EU', 'NL'),
+ ('NA', 'AN'),
+ ('NA', 'CW'),
+ ('NA', 'AW'),
+ ('NA', 'SX'),
+ ('NA', 'BQ'),
+ ('OC', 'NC'),
+ ('OC', 'VU'),
+ ('OC', 'NZ'),
+ ('NA', 'NI'),
+ ('AF', 'NE'),
+ ('AF', 'NG'),
+ ('OC', 'NU'),
+ ('OC', 'NF'),
+ ('EU', 'NO'),
+ ('OC', 'MP'),
+ ('OC', 'UM'),
+ ('NA', 'UM'),
+ ('OC', 'FM'),
+ ('OC', 'MH'),
+ ('OC', 'PW'),
+ ('AS', 'PK'),
+ ('NA', 'PA'),
+ ('OC', 'PG'),
+ ('SA', 'PY'),
+ ('SA', 'PE'),
+ ('AS', 'PH'),
+ ('OC', 'PN'),
+ ('EU', 'PL'),
+ ('EU', 'PT'),
+ ('AF', 'GW'),
+ ('AS', 'TL'),
+ ('NA', 'PR'),
+ ('AS', 'QA'),
+ ('AF', 'RE'),
+ ('EU', 'RO'),
+ ('EU', 'RU'),
+ ('AS', 'RU'),
+ ('AF', 'RW'),
+ ('NA', 'BL'),
+ ('AF', 'SH'),
+ ('NA', 'KN'),
+ ('NA', 'AI'),
+ ('NA', 'LC'),
+ ('NA', 'MF'),
+ ('NA', 'PM'),
+ ('NA', 'VC'),
+ ('EU', 'SM'),
+ ('AF', 'ST'),
+ ('AS', 'SA'),
+ ('AF', 'SN'),
+ ('EU', 'RS'),
+ ('AF', 'SC'),
+ ('AF', 'SL'),
+ ('AS', 'SG'),
+ ('EU', 'SK'),
+ ('AS', 'VN'),
+ ('EU', 'SI'),
+ ('AF', 'SO'),
+ ('AF', 'ZA'),
+ ('AF', 'ZW'),
+ ('EU', 'ES'),
+ ('AF', 'SS'),
+ ('AF', 'EH'),
+ ('AF', 'SD'),
+ ('SA', 'SR'),
+ ('EU', 'SJ'),
+ ('AF', 'SZ'),
+ ('EU', 'SE'),
+ ('EU', 'CH'),
+ ('AS', 'SY'),
+ ('AS', 'TJ'),
+ ('AS', 'TH'),
+ ('AF', 'TG'),
+ ('OC', 'TK'),
+ ('OC', 'TO'),
+ ('NA', 'TT'),
+ ('AS', 'AE'),
+ ('AF', 'TN'),
+ ('EU', 'TR'),
+ ('AS', 'TR'),
+ ('AS', 'TM'),
+ ('NA', 'TC'),
+ ('OC', 'TV'),
+ ('AF', 'UG'),
+ ('EU', 'UA'),
+ ('EU', 'MK'),
+ ('AF', 'EG'),
+ ('EU', 'GB'),
+ ('EU', 'GG'),
+ ('EU', 'JE'),
+ ('EU', 'IM'),
+ ('AF', 'TZ'),
+ ('NA', 'US'),
+ ('NA', 'VI'),
+ ('AF', 'BF'),
+ ('SA', 'UY'),
+ ('AS', 'UZ'),
+ ('SA', 'VE'),
+ ('OC', 'WF'),
+ ('OC', 'WS'),
+ ('AS', 'YE'),
+ ('AF', 'ZM'),
+)
+
+
+def get_continents_for_country(code):
+ '''Return a list of continent codes for the given country code. If the
+ country code is unknown, the returned list will be empty.'''
+ return [con for con, cty in CONTINENT_COUNTRIES if cty == code]
+
+# vim: set ts=4 sw=4 et: