#Copyright ReportLab Europe Ltd. 2000-2004
#see license.txt for license details
#history www.reportlab.co.uk/rl-cgi/viewcvs.cgi/rlextra/utils/iso_cc.py
__version__=''' $Id: iso_cc.py 13212 2004-06-28 12:31:48Z rgbecker $ '''
# mappings associated with country names
import string	

_c2isocc = {
	"Afghanistan": "AF",
	"Albania": "AL",
	"Algeria": "DZ",
	"American Samoa": "AS",
	"Andorra": "AD",
	"Angola": "AO",
	"Anguilla": "AI",
	"Antarctica": "AQ",
	"Antigua And Barbuda": "AG",
	"Argentina": "AR",
	"Armenia": "AM",
	"Aruba": "AW",
	"Australia": "AU",
	"Austria": "AT",
	"Azerbaijan": "AZ",
	"Bahamas": "BS",
	"Bahrain": "BH",
	"Bangladesh": "BD",
	"Barbados": "BB",
	"Belarus": "BY",
	"Belgium": "BE",
	"Belize": "BZ",
	"Benin": "BJ",
	"Bermuda": "BM",
	"Bhutan": "BT",
	"Bolivia": "BO",
	"Bosnia And Herzegovina": "BA",
	"Botswana": "BW",
	"Bouvet Island": "BV",
	"Brazil": "BR",
	"British Indian Ocean Territory": "IO",
	"Brunei Darussalam": "BN",
	"Bulgaria": "BG",
	"Burkina Faso": "BF",
	"Burundi": "BI",
	"Cambodia": "KH",
	"Cameroon": "CM",
	"Canada": "CA",
	"Cape Verde": "CV",
	"Cayman Islands": "KY",
	"Central African Republic": "CF",
	"Chad": "TD",
	"Chile": "CL",
	"China": "CN",
	"Christmas Island": "CX",
	"Cocos (Keeling) Islands": "CC",
	"Colombia": "CO",
	"Comoros": "KM",
	"Congo": "CG",
	"Congo, The Democratic Republic Of The": "CD",
	"Cook Islands": "CK",
	"Costa Rica": "CR",
	"Cote D'ivoire": "CI",
	"Croatia": "HR",
	"Cuba": "CU",
	"Cyprus": "CY",
	"Czech Republic": "CZ",
	"Denmark": "DK",
	"Djibouti": "DJ",
	"Dominica": "DM",
	"Dominican Republic": "DO",
	"East Timor": "TP",
	"Ecuador": "EC",
	"Egypt": "EG",
	"El Salvador": "SV",
	"Equatorial Guinea": "GQ",
	"Eritrea": "ER",
	"Estonia": "EE",
	"Ethiopia": "ET",
	"Falkland Islands (Malvinas)": "FK",
	"Faroe Islands": "FO",
	"Fiji": "FJ",
	"Finland": "FI",
	"France": "FR",
	"France, Metropolitan": "FX",
	"French Guiana": "GF",
	"French Polynesia": "PF",
	"French Southern Territories": "TF",
	"Gabon": "GA",
	"Gambia": "GM",
	"Georgia": "GE",
	"Germany": "DE",
	"Ghana": "GH",
	"Gibraltar": "GI",
	"Greece": "GR",
	"Greenland": "GL",
	"Grenada": "GD",
	"Guadeloupe": "GP",
	"Guam": "GU",
	"Guatemala": "GT",
	"Guinea": "GN",
	"Guinea-bissau": "GW",
	"Guyana": "GY",
	"Haiti": "HT",
	"Heard Island And Mcdonald Islands": "HM",
	"Holy See (Vatican City State)": "VA",
	"Honduras": "HN",
	"Hong Kong": "HK",
	"Hungary": "HU",
	"Iceland": "IS",
	"India": "IN",
	"Indonesia": "ID",
	"Iran, Islamic Republic Of": "IR",
	"Iraq": "IQ",
	"Ireland": "IE",
	"Israel": "IL",
	"Italy": "IT",
	"Jamaica": "JM",
	"Japan": "JP",
	"Jordan": "JO",
	"Kazakstan": "KZ",
	"Kenya": "KE",
	"Kiribati": "KI",
	"Korea, Democratic People's Republic Of": "KP",
	"Korea, Republic Of": "KR",
	"Kuwait": "KW",
	"Kyrgyzstan": "KG",
	"Lao People's Democratic Republic": "LA",
	"Latvia": "LV",
	"Lebanon": "LB",
	"Lesotho": "LS",
	"Liberia": "LR",
	"Libyan Arab Jamahiriya": "LY",
	"Liechtenstein": "LI",
	"Lithuania": "LT",
	"Luxembourg": "LU",
	"Macau": "MO",
	"Macedonia, The Former Yugoslav Republic Of": "MK",
	"Madagascar": "MG",
	"Malawi": "MW",
	"Malaysia": "MY",
	"Maldives": "MV",
	"Mali": "ML",
	"Malta": "MT",
	"Marshall Islands": "MH",
	"Martinique": "MQ",
	"Mauritania": "MR",
	"Mauritius": "MU",
	"Mayotte": "YT",
	"Mexico": "MX",
	"Micronesia, Federated States Of": "FM",
	"Moldova, Republic Of": "MD",
	"Monaco": "MC",
	"Mongolia": "MN",
	"Montserrat": "MS",
	"Morocco": "MA",
	"Mozambique": "MZ",
	"Myanmar": "MM",
	"Namibia": "NA",
	"Nauru": "NR",
	"Nepal": "NP",
	"Netherlands": "NL",
	"Netherlands Antilles": "AN",
	"New Caledonia": "NC",
	"New Zealand": "NZ",
	"Nicaragua": "NI",
	"Niger": "NE",
	"Nigeria": "NG",
	"Niue": "NU",
	"Norfolk Island": "NF",
	"Northern Mariana Islands": "MP",
	"Norway": "NO",
	"Oman": "OM",
	"Pakistan": "PK",
	"Palau": "PW",
	"Palestinian Territory, Occupied": "PS",
	"Panama": "PA",
	"Papua New Guinea": "PG",
	"Paraguay": "PY",
	"Peru": "PE",
	"Philippines": "PH",
	"Pitcairn": "PN",
	"Poland": "PL",
	"Portugal": "PT",
	"Puerto Rico": "PR",
	"Qatar": "QA",
	"Reunion": "RE",
	"Romania": "RO",
	"Russian Federation": "RU",
	"Rwanda": "RW",
	"Saint Helena": "SH",
	"Saint Kitts And Nevis": "KN",
	"Saint Lucia": "LC",
	"Saint Pierre And Miquelon": "PM",
	"Saint Vincent And The Grenadines": "VC",
	"Samoa": "WS",
	"San Marino": "SM",
	"Sao Tome And Principe": "ST",
	"Saudi Arabia": "SA",
	"Senegal": "SN",
	"Seychelles": "SC",
	"Sierra Leone": "SL",
	"Singapore": "SG",
	"Slovakia": "SK",
	"Slovenia": "SI",
	"Solomon Islands": "SB",
	"Somalia": "SO",
	"South Africa": "ZA",
	"South Georgia And The South Sandwich Islands": "GS",
	"Spain": "ES",
	"Sri Lanka": "LK",
	"Sudan": "SD",
	"Suriname": "SR",
	"Svalbard And Jan Mayen": "SJ",
	"Swaziland": "SZ",
	"Sweden": "SE",
	"Switzerland": "CH",
	"Syrian Arab Republic": "SY",
	"Taiwan, Province Of China": "TW",
	"Tajikistan": "TJ",
	"Tanzania, United Republic Of": "TZ",
	"Thailand": "TH",
	"Togo": "TG",
	"Tokelau": "TK",
	"Tonga": "TO",
	"Trinidad And Tobago": "TT",
	"Tunisia": "TN",
	"Turkey": "TR",
	"Turkmenistan": "TM",
	"Turks And Caicos Islands": "TC",
	"Tuvalu": "TV",
	"Uganda": "UG",
	"Ukraine": "UA",
	"United Arab Emirates": "AE",
	"United Kingdom": "GB",
	"United States": "US",
	"United States Minor Outlying Islands": "UM",
	"Uruguay": "UY",
	"Uzbekistan": "UZ",
	"Vanuatu": "VU",
	"Venezuela": "VE",
	"Vietnam": "VN",
	"Virgin Islands, British": "VG",
	"Virgin Islands, U.S.": "VI",
	"Wallis And Futuna": "WF",
	"Western Sahara": "EH",
	"Yemen": "YE",
	"Yugoslavia": "YU",
	"Zambia": "ZM",
	"Zimbabwe": "ZW",
	}

_cccmap = {
    'AED': ("United Arab Emirates, Dirhams","#"),
    'AFA': ("Afghanistan, Afghanis","#"),
    'ALL': ("Albania, Leke","#"),
    'AMD': ("Armenia, Drams","#"),
    'ANG': ("Netherlands Antilles, Guilders","#"),
    'AOA': ("Angola, Kwanza","#"),
    'ARS': ("Argentina, Pesos","#"),
    'AUD': ("Australia, Dollars","$A"),
    'AWG': ("Aruba, Guilders","#"),
    'AZM': ("Azerbaijan, Manats","#"),
    'BAM': ("Bosnia and Herzegovina, Convertible Marka","#"),
    'BBD': ("Barbados, Dollars","Bds$"),
    'BDT': ("Bangladesh, Taka","#"),
    'BGL': ("Bulgaria, Leva","#"),
    'BHD': ("Bahrain, Dinars","#"),
    'BIF': ("Burundi, Francs","#"),
    'BMD': ("Bermuda, Dollars","#"),
    'BND': ("Brunei Darussalam, Dollars","#"),
    'BOB': ("Bolivia, Bolivianos","#"),
    'BRL': ("Brazil, Brazil Real","#"),
    'BSD': ("Bahamas, Dollars","#"),
    'BTN': ("Bhutan, Ngultrum","#"),
    'BWP': ("Botswana, Pulas","#"),
    'BYR': ("Belarus, Rubles","#"),
    'BZD': ("Belize, Dollars","Bez$"),
    'CAD': ("Canada, Dollars","Can$"),
    'CDF': ("Congo/Kinshasa, Congolese Francs","#"),
    'CHF': ("Switzerland, Francs","#"),
    'CLP': ("Chile, Pesos","#"),
    'CNY': ("China, Yuan Renminbi","#"),
    'COP': ("Colombia, Pesos","#"),
    'CRC': ("Costa Rica, Colones","#"),
    'CUP': ("Cuba, Pesos","#"),
    'CVE': ("Cape Verde, Escudos","#"),
    'CYP': ("Cyprus, Pounds","C\xa3"),
    'CZK': ("Czech Republic, Koruny","#"),
    'DJF': ("Djibouti, Francs","#"),
    'DKK': ("Denmark, Kroner","#"),
    'DOP': ("Dominican Republic, Pesos","#"),
    'DZD': ("Algeria, Algeria Dinars","#"),
    'EEK': ("Estonia, Krooni","#"),
    'EGP': ("Egypt, Pounds","\xa3E"),
    'ERN': ("Eritrea, Nakfa","#"),
    'ETB': ("Ethiopia, Birr","#"),
    'EUR': ("Euro Member Countries, Euro",'\x80'),
    'FJD': ("Fiji, Dollars","$F"),
    'FKP': ("Falkland Islands, Pounds","\xa3"),
    'GBP': ("United Kingdom, Pounds","\xa3"),
    'GEL': ("Georgia, Lari","#"),
    'GGP': ("Guernsey, Pounds","\xa3"),
    'GHC': ("Ghana, Cedis","#"),
    'GIP': ("Gibraltar, Pounds","\xa3"),
    'GMD': ("Gambia, Dalasi","#"),
    'GNF': ("Guinea, Francs","#"),
    'GTQ': ("Guatemala, Quetzales","#"),
    'GYD': ("Guyana, Dollars","#"),
    'HKD': ("Hong Kong, Dollars","#"),
    'HNL': ("Honduras, Lempiras","#"),
    'HRK': ("Croatia, Kuna","#"),
    'HTG': ("Haiti, Gourdes","#"),
    'HUF': ("Hungary, Forint","#"),
    'IDR': ("Indonesia, Rupiahs","#"),
    'ILS': ("Israel, New Shekels","#"),
    'IMP': ("Isle of Man, Pounds","\xa3"),
    'INR': ("India, Rupees","#"),
    'IQD': ("Iraq, Dinars","#"),
    'IRR': ("Iran, Rials","#"),
    'ISK': ("Iceland, Kronur","#"),
    'JEP': ("Jersey, Pounds","\xa3"),
    'JMD': ("Jamaica, Dollars","#"),
    'JOD': ("Jordan, Dinars","#"),
    'JPY': ("Japan, Yen","\xa5"),
    'KES': ("Kenya, Shillings","#"),
    'KGS': ("Kyrgyzstan, Soms","#"),
    'KHR': ("Cambodia, Riels","#"),
    'KMF': ("Comoros, Francs","#"),
    'KPW': ("Korea (North), Won","#"),
    'KRW': ("Korea (South), Won","#"),
    'KWD': ("Kuwait, Dinars","#"),
    'KYD': ("Cayman Islands, Dollars","#"),
    'KZT': ("Kazakstan, Tenge","#"),
    'LAK': ("Laos, Kips","#"),
    'LBP': ("Lebanon, Pounds","#"),
    'LKR': ("Sri Lanka, Rupees","#"),
    'LRD': ("Liberia, Dollars","#"),
    'LSL': ("Lesotho, Maloti","#"),
    'LTL': ("Lithuania, Litai","#"),
    'LVL': ("Latvia, Lati","#"),
    'LYD': ("Libya, Dinars","#"),
    'MAD': ("Morocco, Dirhams","#"),
    'MDL': ("Moldova, Lei","#"),
    'MGF': ("Madagascar, Malagasy Francs","#"),
    'MKD': ("Macedonia, Denars","#"),
    'MMK': ("Myanmar (Burma), Kyats","#"),
    'MNT': ("Mongolia, Tugriks","#"),
    'MOP': ("Macau, Patacas","#"),
    'MRO': ("Mauritania, Ouguiyas","#"),
    'MTL': ("Malta, Liri","#"),
    'MUR': ("Mauritius, Rupees","#"),
    'MVR': ("Maldives (Maldive Islands), Rufiyaa","#"),
    'MWK': ("Malawi, Kwachas","#"),
    'MXN': ("Mexico, Pesos","#"),
    'MYR': ("Malaysia, Ringgits","#"),
    'MZM': ("Mozambique, Meticais","#"),
    'NAD': ("Namibia, Dollars","#"),
    'NGN': ("Nigeria, Nairas","#"),
    'NIO': ("Nicaragua, Gold Cordobas","#"),
    'NOK': ("Norway, Krone","#"),
    'NPR': ("Nepal, Nepal Rupees","#"),
    'NZD': ("New Zealand, Dollars","NZ$"),
    'OMR': ("Oman, Rials","#"),
    'PAB': ("Panama, Balboa","#"),
    'PEN': ("Peru, Nuevos Soles","#"),
    'PGK': ("Papua New Guinea, Kina","#"),
    'PHP': ("Philippines, Pesos","#"),
    'PKR': ("Pakistan, Rupees","#"),
    'PLN': ("Poland, Zlotych","#"),
    'PYG': ("Paraguay, Guarani","#"),
    'QAR': ("Qatar, Rials","#"),
    'ROL': ("Romania, Lei","#"),
    'RUR': ("Russia, Rubles","#"),
    'RWF': ("Rwanda, Rwanda Francs","#"),
    'SAR': ("Saudi Arabia, Riyals","#"),
    'SBD': ("Solomon Islands, Dollars","#"),
    'SCR': ("Seychelles, Rupees","#"),
    'SDD': ("Sudan, Dinars","#"),
    'SEK': ("Sweden, Kronor","#"),
    'SGD': ("Singapore, Dollars","#"),
    'SHP': ("Saint Helena, Pounds","\xa3"),
    'SIT': ("Slovenia, Tolars","#"),
    'SKK': ("Slovakia, Koruny","#"),
    'SLL': ("Sierra Leone, Leones","#"),
    'SOS': ("Somalia, Shillings","#"),
    'SPL': ("Seborga, Luigini","#"),
    'SRG': ("Suriname, Guilders","#"),
    'STD': ("S\xe3o Tome and Principe, Dobras","#"),
    'SVC': ("El Salvador, Colones","#"),
    'SYP': ("Syria, Pounds","Syr\xa3"),
    'SZL': ("Swaziland, Emalangeni","#"),
    'THB': ("Thailand, Baht","#"),
    'TJR': ("Tajikistan, Rubles","#"),
    'TMM': ("Turkmenistan, Manats","#"),
    'TND': ("Tunisia, Dinars","#"),
    'TOP': ("Tonga, Pa\x27anga","#"),
    'TRL': ("Turkey, Liras","#"),
    'TTD': ("Trinidad and Tobago, Dollars","#"),
    'TVD': ("Tuvalu, Tuvalu Dollars","#"),
    'TWD': ("Taiwan, New Dollars","#"),
    'TZS': ("Tanzania, Shillings","#"),
    'UAH': ("Ukraine, Hryvnia","#"),
    'UGX': ("Uganda, Shillings","#"),
    'USD': ("United States of America, Dollars","$"),
    'UYU': ("Uruguay, Pesos","#"),
    'UZS': ("Uzbekistan, Sums","#"),
    'VEB': ("Venezuela, Bolivares","#"),
    'VND': ("Viet Nam, Dong","#"),
    'VUV': ("Vanuatu, Vatu","#"),
    'WST': ("Samoa, Tala","#"),
    'XAF': ("Communaut\xe9 Financi\xe8re Africaine BEAC, Francs","#"),
    'XAG': ("Silver, Ounces","#"),
    'XAU': ("Gold, Ounces","#"),
    'XCD': ("East Caribbean Dollars","#"),
    'XDR': ("International Monetary Fund (IMF) Special Drawing Rights","#"),
    'XOF': ("Communaut\xe9 Financi\xe8re Africaine BCEAO, Francs","#"),
    'XPD': ("Palladium Ounces","#"),
    'XPF': ("Comptoirs Fran\xe7ais du Pacifique Francs","#"),
    'XPT': ("Platinum, Ounces","#"),
    'YER': ("Yemen, Rials","#"),
    'YUM': ("Yugoslavia, New Dinars","#"),
    'ZAR': ("South Africa, Rand","#"),
    'ZMK': ("Zambia, Kwacha","#"),
    'ZWD': ("Zimbabwe, Zimbabwe Dollars","#"),
    }

_isocc2c = {}
for k,v in _c2isocc.items():
	v = string.upper(v)
	_isocc2c[v] = k
	del _c2isocc[k]
	_c2isocc[string.upper(k)] = v
del k, v

def iso2country(cc):
	'''map an iso code to a country'''
	return _isocc2c[string.upper(cc)]

def country2iso(c):
	'''map a country to an iso code'''
	c = string.upper(c)
	return _c2isocc[c]

def ccc2sym(ccc):
	return _cccmap[ccc.upper()][1]
