Repository: joke2k/faker

Issue:
Support ISO 3166-1 alpha-3 country codes
Presently, faker only supports alpha-2 (two character) country codes. I have a need for alpha-3 (three character) country codes.

See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3

Discussion:
joke2k: HI, thank you for PR.
It seems to miss the alpha3 codes in ar_AA provider?
crd: I deliberately added tests for the ar_AA provider to make sure, since I wasn't confident at first
joke2k: Yes your're right!
Isn't necessary convert ar_AA `countries.code`s.
But it's ok for now.

In future we should rewrite date_time provider to handle these translations better then this.
fcurella: @crd A 3% decrease in coverage is too much. Can you write some more test? 

Patch:
diff --git a/faker/providers/address/__init__.py b/faker/providers/address/__init__.py
index d1ac15f2..d186b38d 100644
--- a/faker/providers/address/__init__.py
+++ b/faker/providers/address/__init__.py
@@ -18,7 +18,12 @@ class Provider(BaseProvider):
     building_number_formats = ('##', )
     postcode_formats = ('#####', )
     countries = [tz['name'] for tz in date_time.Provider.countries]
-    country_codes = [tz['code'] for tz in date_time.Provider.countries]
+
+    ALPHA_2 = 'alpha-2'
+    ALPHA_3 = 'alpha-3'
+
+    alpha_2_country_codes = [tz['alpha-2-code'] for tz in date_time.Provider.countries]
+    alpha_3_country_codes = [tz['alpha-3-code'] for tz in date_time.Provider.countries]
 
     def city_suffix(self):
         """
@@ -75,8 +80,13 @@ class Provider(BaseProvider):
     def country(self):
         return self.random_element(self.countries)
 
-    def country_code(self):
-        return self.random_element(self.country_codes)
+    def country_code(self, representation=ALPHA_2):
+        if representation == self.ALPHA_2:
+            return self.random_element(self.alpha_2_country_codes)
+        elif representation == self.ALPHA_3:
+            return self.random_element(self.alpha_3_country_codes)
+        else:
+            raise ValueError("`representation` must be one of `alpha-2` or `alpha-3`.")
 
     def geo_coordinate(self, center=None, radius=0.001):
         """
diff --git a/faker/providers/date_time/__init__.py b/faker/providers/date_time/__init__.py
index 8b10d4c3..a0c4a49e 100644
--- a/faker/providers/date_time/__init__.py
+++ b/faker/providers/date_time/__init__.py
@@ -70,32 +70,38 @@ class Provider(BaseProvider):
         'XXI']
 
     countries = [{'timezones': ['Europe/Andorra'],
-                  'code': 'AD',
+                  'alpha-2-code': 'AD',
+                  'alpha-3-code': 'AND',
                   'continent': 'Europe',
                   'name': 'Andorra',
                   'capital': 'Andorra la Vella'},
                  {'timezones': ['Asia/Kabul'],
-                  'code': 'AF',
+                  'alpha-2-code': 'AF',
+                  'alpha-3-code': 'AFG',
                   'continent': 'Asia',
                   'name': 'Afghanistan',
                   'capital': 'Kabul'},
                  {'timezones': ['America/Antigua'],
-                  'code': 'AG',
+                  'alpha-2-code': 'AG',
+                  'alpha-3-code': 'ATG',
                   'continent': 'North America',
                   'name': 'Antigua and Barbuda',
                   'capital': "St. John's"},
                  {'timezones': ['Europe/Tirane'],
-                  'code': 'AL',
+                  'alpha-2-code': 'AL',
+                  'alpha-3-code': 'ALB',
                   'continent': 'Europe',
                   'name': 'Albania',
                   'capital': 'Tirana'},
                  {'timezones': ['Asia/Yerevan'],
-                  'code': 'AM',
+                  'alpha-2-code': 'AM',
+                  'alpha-3-code': 'ARM',
                   'continent': 'Asia',
                   'name': 'Armenia',
                   'capital': 'Yerevan'},
                  {'timezones': ['Africa/Luanda'],
-                  'code': 'AO',
+                  'alpha-2-code': 'AO',
+                  'alpha-3-code': 'AGO',
                   'continent': 'Africa',
                   'name': 'Angola',
                   'capital': 'Luanda'},
@@ -109,12 +115,14 @@ class Provider(BaseProvider):
                                 'America/Argentina/Mendoza',
                                 'America/Argentina/Rio_Gallegos',
                                 'America/Argentina/Ushuaia'],
-                  'code': 'AR',
+                  'alpha-2-code': 'AR',
+                  'alpha-3-code': 'ARG',
                   'continent': 'South America',
                   'name': 'Argentina',
                   'capital': 'Buenos Aires'},
                  {'timezones': ['Europe/Vienna'],
-                  'code': 'AT',
+                  'alpha-2-code': 'AT',
+                  'alpha-3-code': 'AUT',
                   'continent': 'Europe',
                   'name': 'Austria',
                   'capital': 'Vienna'},
@@ -129,62 +137,74 @@ class Provider(BaseProvider):
                                 'Australia/Adelaide',
                                 'Australia/Darwin',
                                 'Australia/Perth'],
-                  'code': 'AU',
+                  'alpha-2-code': 'AU',
+                  'alpha-3-code': 'AUS',
                   'continent': 'Oceania',
                   'name': 'Australia',
                   'capital': 'Canberra'},
                  {'timezones': ['Asia/Baku'],
-                  'code': 'AZ',
+                  'alpha-2-code': 'AZ',
+                  'alpha-3-code': 'AZE',
                   'continent': 'Asia',
                   'name': 'Azerbaijan',
                   'capital': 'Baku'},
                  {'timezones': ['America/Barbados'],
-                  'code': 'BB',
+                  'alpha-2-code': 'BB',
+                  'alpha-3-code': 'BRB',
                   'continent': 'North America',
                   'name': 'Barbados',
                   'capital': 'Bridgetown'},
                  {'timezones': ['Asia/Dhaka'],
-                  'code': 'BD',
+                  'alpha-2-code': 'BD',
+                  'alpha-3-code': 'BGD',
                   'continent': 'Asia',
                   'name': 'Bangladesh',
                   'capital': 'Dhaka'},
                  {'timezones': ['Europe/Brussels'],
-                  'code': 'BE',
+                  'alpha-2-code': 'BE',
+                  'alpha-3-code': 'BEL',
                   'continent': 'Europe',
                   'name': 'Belgium',
                   'capital': 'Brussels'},
                  {'timezones': ['Africa/Ouagadougou'],
-                  'code': 'BF',
+                  'alpha-2-code': 'BF',
+                  'alpha-3-code': 'BFA',
                   'continent': 'Africa',
                   'name': 'Burkina Faso',
                   'capital': 'Ouagadougou'},
                  {'timezones': ['Europe/Sofia'],
-                  'code': 'BG',
+                  'alpha-2-code': 'BG',
+                  'alpha-3-code': 'BGR',
                   'continent': 'Europe',
                   'name': 'Bulgaria',
                   'capital': 'Sofia'},
                  {'timezones': ['Asia/Bahrain'],
-                  'code': 'BH',
+                  'alpha-2-code': 'BH',
+                  'alpha-3-code': 'BHR',
                   'continent': 'Asia',
                   'name': 'Bahrain',
                   'capital': 'Manama'},
                  {'timezones': ['Africa/Bujumbura'],
-                  'code': 'BI',
+                  'alpha-2-code': 'BI',
+                  'alpha-3-code': 'BDI',
                   'continent': 'Africa',
                   'name': 'Burundi',
                   'capital': 'Bujumbura'},
                  {'timezones': ['Africa/Porto-Novo'],
-                  'code': 'BJ',
+                  'alpha-2-code': 'BJ',
+                  'alpha-3-code': 'BEN',
                   'continent': 'Africa',
                   'name': 'Benin',
                   'capital': 'Porto-Novo'},
                  {'timezones': ['Asia/Brunei'],
-                  'code': 'BN',
+                  'alpha-2-code': 'BN',
+                  'alpha-3-code': 'BRN',
                   'continent': 'Asia',
                   'name': 'Brunei Darussalam',
                   'capital': 'Bandar Seri Begawan'},
                  {'timezones': ['America/La_Paz'],
-                  'code': 'BO',
+                  'alpha-2-code': 'BO',
+                  'alpha-3-code': 'BOL',
                   'continent': 'South America',
                   'name': 'Bolivia',
                   'capital': 'Sucre'},
@@ -203,32 +223,38 @@ class Provider(BaseProvider):
                                 'America/Manaus',
                                 'America/Eirunepe',
                                 'America/Rio_Branco'],
-                  'code': 'BR',
+                  'alpha-2-code': 'BR',
+                  'alpha-3-code': 'BRA',
                   'continent': 'South America',
                   'name': 'Brazil',
                   'capital': 'Bras\xc3\xadlia'},
                  {'timezones': ['America/Nassau'],
-                  'code': 'BS',
+                  'alpha-2-code': 'BS',
+                  'alpha-3-code': 'BHS',
                   'continent': 'North America',
                   'name': 'Bahamas',
                   'capital': 'Nassau'},
                  {'timezones': ['Asia/Thimphu'],
-                  'code': 'BT',
+                  'alpha-2-code': 'BT',
+                  'alpha-3-code': 'BTN',
                   'continent': 'Asia',
                   'name': 'Bhutan',
                   'capital': 'Thimphu'},
                  {'timezones': ['Africa/Gaborone'],
-                  'code': 'BW',
+                  'alpha-2-code': 'BW',
+                  'alpha-3-code': 'BWA',
                   'continent': 'Africa',
                   'name': 'Botswana',
                   'capital': 'Gaborone'},
                  {'timezones': ['Europe/Minsk'],
-                  'code': 'BY',
+                  'alpha-2-code': 'BY',
+                  'alpha-3-code': 'BLR',
                   'continent': 'Europe',
                   'name': 'Belarus',
                   'capital': 'Minsk'},
                  {'timezones': ['America/Belize'],
-                  'code': 'BZ',
+                  'alpha-2-code': 'BZ',
+                  'alpha-3-code': 'BLZ',
                   'continent': 'North America',
                   'name': 'Belize',
                   'capital': 'Belmopan'},
@@ -258,34 +284,40 @@ class Provider(BaseProvider):
                                 'America/Vancouver',
                                 'America/Whitehorse',
                                 'America/Dawson'],
-                  'code': 'CA',
+                  'alpha-2-code': 'CA',
+                  'alpha-3-code': 'CAN',
                   'continent': 'North America',
                   'name': 'Canada',
                   'capital': 'Ottawa'},
                  {'timezones': ['Africa/Kinshasa',
                                 'Africa/Lubumbashi'],
-                  'code': 'CD',
+                  'alpha-2-code': 'CD',
+                  'alpha-3-code': 'COD',
                   'continent': 'Africa',
                   'name': 'Democratic Republic of the Congo',
                   'capital': 'Kinshasa'},
                  {'timezones': ['Africa/Brazzaville'],
-                  'code': 'CG',
+                  'alpha-2-code': 'CG',
+                  'alpha-3-code': 'COG',
                   'continent': 'Africa',
                   'name': 'Republic of the Congo',
                   'capital': 'Brazzaville'},
                  {'timezones': ['Africa/Abidjan'],
-                  'code': 'CI',
+                  'alpha-2-code': 'CI',
+                  'alpha-3-code': 'CIV',
                   'continent': 'Africa',
                   'name': "C\xc3\xb4te d'Ivoire",
                   'capital': 'Yamoussoukro'},
                  {'timezones': ['America/Santiago',
                                 'Pacific/Easter'],
-                  'code': 'CL',
+                  'alpha-2-code': 'CL',
+                  'alpha-3-code': 'CHL',
                   'continent': 'South America',
                   'name': 'Chile',
                   'capital': 'Santiago'},
                  {'timezones': ['Africa/Douala'],
-                  'code': 'CM',
+                  'alpha-2-code': 'CM',
+                  'alpha-3-code': 'CMR',
                   'continent': 'Africa',
                   'name': 'Cameroon',
                   'capital': 'Yaound\xc3\xa9'},
@@ -294,163 +326,195 @@ class Provider(BaseProvider):
                                 'Asia/Chongqing',
                                 'Asia/Urumqi',
                                 'Asia/Kashgar'],
-                  'code': 'CN',
+                  'alpha-2-code': 'CN',
+                  'alpha-3-code': 'CHN',
                   'continent': 'Asia',
                   'name': "People's Republic of China",
                   'capital': 'Beijing'},
                  {'timezones': ['America/Bogota'],
-                  'code': 'CO',
+                  'alpha-2-code': 'CO',
+                  'alpha-3-code': 'COL',
                   'continent': 'South America',
                   'name': 'Colombia',
                   'capital': 'Bogot\xc3\xa1'},
                  {'timezones': ['America/Costa_Rica'],
-                  'code': 'CR',
+                  'alpha-2-code': 'CR',
+                  'alpha-3-code': 'CRI',
                   'continent': 'North America',
                   'name': 'Costa Rica',
                   'capital': 'San Jos\xc3\xa9'},
                  {'timezones': ['America/Havana'],
-                  'code': 'CU',
+                  'alpha-2-code': 'CU',
+                  'alpha-3-code': 'CUB',
                   'continent': 'North America',
                   'name': 'Cuba',
                   'capital': 'Havana'},
                  {'timezones': ['Atlantic/Cape_Verde'],
-                  'code': 'CV',
+                  'alpha-2-code': 'CV',
+                  'alpha-3-code': 'CPV',
                   'continent': 'Africa',
                   'name': 'Cape Verde',
                   'capital': 'Praia'},
                  {'timezones': ['Asia/Nicosia'],
-                  'code': 'CY',
+                  'alpha-2-code': 'CY',
+                  'alpha-3-code': 'CYP',
                   'continent': 'Asia',
                   'name': 'Cyprus',
                   'capital': 'Nicosia'},
                  {'timezones': ['Europe/Prague'],
-                  'code': 'CZ',
+                  'alpha-2-code': 'CZ',
+                  'alpha-3-code': 'CZE',
                   'continent': 'Europe',
                   'name': 'Czech Republic',
                   'capital': 'Prague'},
                  {'timezones': ['Europe/Berlin'],
-                  'code': 'DE',
+                  'alpha-2-code': 'DE',
+                  'alpha-3-code': 'DEU',
                   'continent': 'Europe',
                   'name': 'Germany',
                   'capital': 'Berlin'},
                  {'timezones': ['Africa/Djibouti'],
-                  'code': 'DJ',
+                  'alpha-2-code': 'DJ',
+                  'alpha-3-code': 'DJI',
                   'continent': 'Africa',
                   'name': 'Djibouti',
                   'capital': 'Djibouti City'},
                  {'timezones': ['Europe/Copenhagen'],
-                  'code': 'DK',
+                  'alpha-2-code': 'DK',
+                  'alpha-3-code': 'DNK',
                   'continent': 'Europe',
                   'name': 'Denmark',
                   'capital': 'Copenhagen'},
                  {'timezones': ['America/Dominica'],
-                  'code': 'DM',
+                  'alpha-2-code': 'DM',
+                  'alpha-3-code': 'DMA',
                   'continent': 'North America',
                   'name': 'Dominica',
                   'capital': 'Roseau'},
                  {'timezones': ['America/Santo_Domingo'],
-                  'code': 'DO',
+                  'alpha-2-code': 'DO',
+                  'alpha-3-code': 'DOM',
                   'continent': 'North America',
                   'name': 'Dominican Republic',
                   'capital': 'Santo Domingo'},
                  {'timezones': ['America/Guayaquil',
                                 'Pacific/Galapagos'],
-                  'code': 'EC',
+                  'alpha-2-code': 'EC',
+                  'alpha-3-code': 'ECU',
                   'continent': 'South America',
                   'name': 'Ecuador',
                   'capital': 'Quito'},
                  {'timezones': ['Europe/Tallinn'],
-                  'code': 'EE',
+                  'alpha-2-code': 'EE',
+                  'alpha-3-code': 'EST',
                   'continent': 'Europe',
                   'name': 'Estonia',
                   'capital': 'Tallinn'},
                  {'timezones': ['Africa/Cairo'],
-                  'code': 'EG',
+                  'alpha-2-code': 'EG',
+                  'alpha-3-code': 'EGY',
                   'continent': 'Africa',
                   'name': 'Egypt',
                   'capital': 'Cairo'},
                  {'timezones': ['Africa/Asmera'],
-                  'code': 'ER',
+                  'alpha-2-code': 'ER',
+                  'alpha-3-code': 'ERI',
                   'continent': 'Africa',
                   'name': 'Eritrea',
                   'capital': 'Asmara'},
                  {'timezones': ['Africa/Addis_Ababa'],
-                  'code': 'ET',
+                  'alpha-2-code': 'ET',
+                  'alpha-3-code': 'ETH',
                   'continent': 'Africa',
                   'name': 'Ethiopia',
                   'capital': 'Addis Ababa'},
                  {'timezones': ['Europe/Helsinki'],
-                  'code': 'FI',
+                  'alpha-2-code': 'FI',
+                  'alpha-3-code': 'FIN',
                   'continent': 'Europe',
                   'name': 'Finland',
                   'capital': 'Helsinki'},
                  {'timezones': ['Pacific/Fiji'],
-                  'code': 'FJ',
+                  'alpha-2-code': 'FJ',
+                  'alpha-3-code': 'FJI',
                   'continent': 'Oceania',
                   'name': 'Fiji',
                   'capital': 'Suva'},
                  {'timezones': ['Europe/Paris'],
-                  'code': 'FR',
+                  'alpha-2-code': 'FR',
+                  'alpha-3-code': 'FRA',
                   'continent': 'Europe',
                   'name': 'France',
                   'capital': 'Paris'},
                  {'timezones': ['Africa/Libreville'],
-                  'code': 'GA',
+                  'alpha-2-code': 'GA',
+                  'alpha-3-code': 'GAB',
                   'continent': 'Africa',
                   'name': 'Gabon',
                   'capital': 'Libreville'},
                  {'timezones': ['Asia/Tbilisi'],
-                  'code': 'GE',
+                  'alpha-2-code': 'GE',
+                  'alpha-3-code': 'GEO',
                   'continent': 'Asia',
                   'name': 'Georgia',
                   'capital': 'Tbilisi'},
                  {'timezones': ['Africa/Accra'],
-                  'code': 'GH',
+                  'alpha-2-code': 'GH',
+                  'alpha-3-code': 'GHA',
                   'continent': 'Africa',
                   'name': 'Ghana',
                   'capital': 'Accra'},
                  {'timezones': ['Africa/Banjul'],
-                  'code': 'GM',
+                  'alpha-2-code': 'GM',
+                  'alpha-3-code': 'GMB',
                   'continent': 'Africa',
                   'name': 'The Gambia',
                   'capital': 'Banjul'},
                  {'timezones': ['Africa/Conakry'],
-                  'code': 'GN',
+                  'alpha-2-code': 'GN',
+                  'alpha-3-code': 'GIN',
                   'continent': 'Africa',
                   'name': 'Guinea',
                   'capital': 'Conakry'},
                  {'timezones': ['Europe/Athens'],
-                  'code': 'GR',
+                  'alpha-2-code': 'GR',
+                  'alpha-3-code': 'GRC',
                   'continent': 'Europe',
                   'name': 'Greece',
                   'capital': 'Athens'},
                  {'timezones': ['America/Guatemala'],
-                  'code': 'GT',
+                  'alpha-2-code': 'GT',
+                  'alpha-3-code': 'GTM',
                   'continent': 'North America',
                   'name': 'Guatemala',
                   'capital': 'Guatemala City'},
                  {'timezones': ['America/Guatemala'],
-                  'code': 'GT',
+                  'alpha-2-code': 'GT',
+                  'alpha-3-code': 'HTI',
                   'continent': 'North America',
                   'name': 'Haiti',
                   'capital': 'Port-au-Prince'},
                  {'timezones': ['Africa/Bissau'],
-                  'code': 'GW',
+                  'alpha-2-code': 'GW',
+                  'alpha-3-code': 'GNB',
                   'continent': 'Africa',
                   'name': 'Guinea-Bissau',
                   'capital': 'Bissau'},
                  {'timezones': ['America/Guyana'],
-                  'code': 'GY',
+                  'alpha-2-code': 'GY',
+                  'alpha-3-code': 'GUY',
                   'continent': 'South America',
                   'name': 'Guyana',
                   'capital': 'Georgetown'},
                  {'timezones': ['America/Tegucigalpa'],
-                  'code': 'HN',
+                  'alpha-2-code': 'HN',
+                  'alpha-3-code': 'HND',
                   'continent': 'North America',
                   'name': 'Honduras',
                   'capital': 'Tegucigalpa'},
                  {'timezones': ['Europe/Budapest'],
-                  'code': 'HU',
+                  'alpha-2-code': 'HU',
+                  'alpha-3-code': 'HUN',
                   'continent': 'Europe',
                   'name': 'Hungary',
                   'capital': 'Budapest'},
@@ -458,187 +522,223 @@ class Provider(BaseProvider):
                                 'Asia/Pontianak',
                                 'Asia/Makassar',
                                 'Asia/Jayapura'],
-                  'code': 'ID',
+                  'alpha-2-code': 'ID',
+                  'alpha-3-code': 'IDN',
                   'continent': 'Asia',
                   'name': 'Indonesia',
                   'capital': 'Jakarta'},
                  {'timezones': ['Europe/Dublin'],
-                  'code': 'IE',
+                  'alpha-2-code': 'IE',
+                  'alpha-3-code': 'IRL',
                   'continent': 'Europe',
                   'name': 'Republic of Ireland',
                   'capital': 'Dublin'},
                  {'timezones': ['Asia/Jerusalem'],
-                  'code': 'IL',
+                  'alpha-2-code': 'IL',
+                  'alpha-3-code': 'ISR',
                   'continent': 'Asia',
                   'name': 'Israel',
                   'capital': 'Jerusalem'},
                  {'timezones': ['Asia/Calcutta'],
-                  'code': 'IN',
+                  'alpha-2-code': 'IN',
+                  'alpha-3-code': 'IND',
                   'continent': 'Asia',
                   'name': 'India',
                   'capital': 'New Delhi'},
                  {'timezones': ['Asia/Baghdad'],
-                  'code': 'IQ',
+                  'alpha-2-code': 'IQ',
+                  'alpha-3-code': 'IRQ',
                   'continent': 'Asia',
                   'name': 'Iraq',
                   'capital': 'Baghdad'},
                  {'timezones': ['Asia/Tehran'],
-                  'code': 'IR',
+                  'alpha-2-code': 'IR',
+                  'alpha-3-code': 'IRN',
                   'continent': 'Asia',
                   'name': 'Iran',
                   'capital': 'Tehran'},
                  {'timezones': ['Atlantic/Reykjavik'],
-                  'code': 'IS',
+                  'alpha-2-code': 'IS',
+                  'alpha-3-code': 'ISL',
                   'continent': 'Europe',
                   'name': 'Iceland',
                   'capital': 'Reykjav\xc3\xadk'},
                  {'timezones': ['Europe/Rome'],
-                  'code': 'IT',
+                  'alpha-2-code': 'IT',
+                  'alpha-3-code': 'ITA',
                   'continent': 'Europe',
                   'name': 'Italy',
                   'capital': 'Rome'},
                  {'timezones': ['America/Jamaica'],
-                  'code': 'JM',
+                  'alpha-2-code': 'JM',
+                  'alpha-3-code': 'JAM',
                   'continent': 'North America',
                   'name': 'Jamaica',
                   'capital': 'Kingston'},
                  {'timezones': ['Asia/Amman'],
-                  'code': 'JO',
+                  'alpha-2-code': 'JO',
+                  'alpha-3-code': 'JOR',
                   'continent': 'Asia',
                   'name': 'Jordan',
                   'capital': 'Amman'},
                  {'timezones': ['Asia/Tokyo'],
-                  'code': 'JP',
+                  'alpha-2-code': 'JP',
+                  'alpha-3-code': 'JPN',
                   'continent': 'Asia',
                   'name': 'Japan',
                   'capital': 'Tokyo'},
                  {'timezones': ['Africa/Nairobi'],
-                  'code': 'KE',
+                  'alpha-2-code': 'KE',
+                  'alpha-3-code': 'KEN',
                   'continent': 'Africa',
                   'name': 'Kenya',
                   'capital': 'Nairobi'},
                  {'timezones': ['Asia/Bishkek'],
-                  'code': 'KG',
+                  'alpha-2-code': 'KG',
+                  'alpha-3-code': 'KGZ',
                   'continent': 'Asia',
                   'name': 'Kyrgyzstan',
                   'capital': 'Bishkek'},
                  {'timezones': ['Pacific/Tarawa',
                                 'Pacific/Enderbury',
                                 'Pacific/Kiritimati'],
-                  'code': 'KI',
+                  'alpha-2-code': 'KI',
+                  'alpha-3-code': 'KIR',
                   'continent': 'Oceania',
                   'name': 'Kiribati',
                   'capital': 'Tarawa'},
                  {'timezones': ['Asia/Pyongyang'],
-                  'code': 'KP',
+                  'alpha-2-code': 'KP',
+                  'alpha-3-code': 'PRK',
                   'continent': 'Asia',
                   'name': 'North Korea',
                   'capital': 'Pyongyang'},
                  {'timezones': ['Asia/Seoul'],
-                  'code': 'KR',
+                  'alpha-2-code': 'KR',
+                  'alpha-3-code': 'KOR',
                   'continent': 'Asia',
                   'name': 'South Korea',
                   'capital': 'Seoul'},
                  {'timezones': ['Asia/Kuwait'],
-                  'code': 'KW',
+                  'alpha-2-code': 'KW',
+                  'alpha-3-code': 'KWT',
                   'continent': 'Asia',
                   'name': 'Kuwait',
                   'capital': 'Kuwait City'},
                  {'timezones': ['Asia/Beirut'],
-                  'code': 'LB',
+                  'alpha-2-code': 'LB',
+                  'alpha-3-code': 'LBN',
                   'continent': 'Asia',
                   'name': 'Lebanon',
                   'capital': 'Beirut'},
                  {'timezones': ['Europe/Vaduz'],
-                  'code': 'LI',
+                  'alpha-2-code': 'LI',
+                  'alpha-3-code': 'LIE',
                   'continent': 'Europe',
                   'name': 'Liechtenstein',
                   'capital': 'Vaduz'},
                  {'timezones': ['Africa/Monrovia'],
-                  'code': 'LR',
+                  'alpha-2-code': 'LR',
+                  'alpha-3-code': 'LBR',
                   'continent': 'Africa',
                   'name': 'Liberia',
                   'capital': 'Monrovia'},
                  {'timezones': ['Africa/Maseru'],
-                  'code': 'LS',
+                  'alpha-2-code': 'LS',
+                  'alpha-3-code': 'LSO',
                   'continent': 'Africa',
                   'name': 'Lesotho',
                   'capital': 'Maseru'},
                  {'timezones': ['Europe/Vilnius'],
-                  'code': 'LT',
+                  'alpha-2-code': 'LT',
+                  'alpha-3-code': 'LTU',
                   'continent': 'Europe',
                   'name': 'Lithuania',
                   'capital': 'Vilnius'},
                  {'timezones': ['Europe/Luxembourg'],
-                  'code': 'LU',
+                  'alpha-2-code': 'LU',
+                  'alpha-3-code': 'LUX',
                   'continent': 'Europe',
                   'name': 'Luxembourg',
                   'capital': 'Luxembourg City'},
                  {'timezones': ['Europe/Riga'],
-                  'code': 'LV',
+                  'alpha-2-code': 'LV',
+                  'alpha-3-code': 'LVA',
                   'continent': 'Europe',
                   'name': 'Latvia',
                   'capital': 'Riga'},
                  {'timezones': ['Africa/Tripoli'],
-                  'code': 'LY',
+                  'alpha-2-code': 'LY',
+                  'alpha-3-code': 'LBY',
                   'continent': 'Africa',
                   'name': 'Libya',
                   'capital': 'Tripoli'},
                  {'timezones': ['Indian/Antananarivo'],
-                  'code': 'MG',
+                  'alpha-2-code': 'MG',
+                  'alpha-3-code': 'MDG',
                   'continent': 'Africa',
                   'name': 'Madagascar',
                   'capital': 'Antananarivo'},
                  {'timezones': ['Pacific/Majuro',
                                 'Pacific/Kwajalein'],
-                  'code': 'MH',
+                  'alpha-2-code': 'MH',
+                  'alpha-3-code': 'MHL',
                   'continent': 'Oceania',
                   'name': 'Marshall Islands',
                   'capital': 'Majuro'},
                  {'timezones': ['Europe/Skopje'],
-                  'code': 'MK',
+                  'alpha-2-code': 'MK',
+                  'alpha-3-code': 'MKD',
                   'continent': 'Europe',
                   'name': 'Macedonia',
                   'capital': 'Skopje'},
                  {'timezones': ['Africa/Bamako'],
-                  'code': 'ML',
+                  'alpha-2-code': 'ML',
+                  'alpha-3-code': 'MLI',
                   'continent': 'Africa',
                   'name': 'Mali',
                   'capital': 'Bamako'},
                  {'timezones': ['Asia/Rangoon'],
-                  'code': 'MM',
+                  'alpha-2-code': 'MM',
+                  'alpha-3-code': 'MMR',
                   'continent': 'Asia',
                   'name': 'Myanmar',
                   'capital': 'Naypyidaw'},
                  {'timezones': ['Asia/Ulaanbaatar',
                                 'Asia/Hovd',
                                 'Asia/Choibalsan'],
-                  'code': 'MN',
+                  'alpha-2-code': 'MN',
+                  'alpha-3-code': 'MNG',
                   'continent': 'Asia',
                   'name': 'Mongolia',
                   'capital': 'Ulaanbaatar'},
                  {'timezones': ['Africa/Nouakchott'],
-                  'code': 'MR',
+                  'alpha-2-code': 'MR',
+                  'alpha-3-code': 'MRT',
                   'continent': 'Africa',
                   'name': 'Mauritania',
                   'capital': 'Nouakchott'},
                  {'timezones': ['Europe/Malta'],
-                  'code': 'MT',
+                  'alpha-2-code': 'MT',
+                  'alpha-3-code': 'MLT',
                   'continent': 'Europe',
                   'name': 'Malta',
                   'capital': 'Valletta'},
                  {'timezones': ['Indian/Mauritius'],
-                  'code': 'MU',
+                  'alpha-2-code': 'MU',
+                  'alpha-3-code': 'MUS',
                   'continent': 'Africa',
                   'name': 'Mauritius',
                   'capital': 'Port Louis'},
                  {'timezones': ['Indian/Maldives'],
-                  'code': 'MV',
+                  'alpha-2-code': 'MV',
+                  'alpha-3-code': 'MDV',
                   'continent': 'Asia',
                   'name': 'Maldives',
                   'capital': 'Mal\xc3\xa9'},
                  {'timezones': ['Africa/Blantyre'],
-                  'code': 'MW',
+                  'alpha-2-code': 'MW',
+                  'alpha-3-code': 'MWI',
                   'continent': 'Africa',
                   'name': 'Malawi',
                   'capital': 'Lilongwe'},
@@ -650,126 +750,150 @@ class Provider(BaseProvider):
                                 'America/Chihuahua',
                                 'America/Hermosillo',
                                 'America/Tijuana'],
-                  'code': 'MX',
+                  'alpha-2-code': 'MX',
+                  'alpha-3-code': 'MEX',
                   'continent': 'North America',
                   'name': 'Mexico',
                   'capital': 'Mexico City'},
                  {'timezones': ['Asia/Kuala_Lumpur',
                                 'Asia/Kuching'],
-                  'code': 'MY',
+                  'alpha-2-code': 'MY',
+                  'alpha-3-code': 'MYS',
                   'continent': 'Asia',
                   'name': 'Malaysia',
                   'capital': 'Kuala Lumpur'},
                  {'timezones': ['Africa/Maputo'],
-                  'code': 'MZ',
+                  'alpha-2-code': 'MZ',
+                  'alpha-3-code': 'MOZ',
                   'continent': 'Africa',
                   'name': 'Mozambique',
                   'capital': 'Maputo'},
                  {'timezones': ['Africa/Windhoek'],
-                  'code': 'NA',
+                  'alpha-2-code': 'NA',
+                  'alpha-3-code': 'NAM',
                   'continent': 'Africa',
                   'name': 'Namibia',
                   'capital': 'Windhoek'},
                  {'timezones': ['Africa/Niamey'],
-                  'code': 'NE',
+                  'alpha-2-code': 'NE',
+                  'alpha-3-code': 'NER',
                   'continent': 'Africa',
                   'name': 'Niger',
                   'capital': 'Niamey'},
                  {'timezones': ['Africa/Lagos'],
-                  'code': 'NG',
+                  'alpha-2-code': 'NG',
+                  'alpha-3-code': 'NGA',
                   'continent': 'Africa',
                   'name': 'Nigeria',
                   'capital': 'Abuja'},
                  {'timezones': ['America/Managua'],
-                  'code': 'NI',
+                  'alpha-2-code': 'NI',
+                  'alpha-3-code': 'NIC',
                   'continent': 'North America',
                   'name': 'Nicaragua',
                   'capital': 'Managua'},
                  {'timezones': ['Europe/Amsterdam'],
-                  'code': 'NL',
+                  'alpha-2-code': 'NL',
+                  'alpha-3-code': 'NLD',
                   'continent': 'Europe',
                   'name': 'Kingdom of the Netherlands',
                   'capital': 'Amsterdam'},
                  {'timezones': ['Europe/Oslo'],
-                  'code': 'NO',
+                  'alpha-2-code': 'NO',
+                  'alpha-3-code': 'NOR',
                   'continent': 'Europe',
                   'name': 'Norway',
                   'capital': 'Oslo'},
                  {'timezones': ['Asia/Katmandu'],
-                  'code': 'NP',
+                  'alpha-2-code': 'NP',
+                  'alpha-3-code': 'NPL',
                   'continent': 'Asia',
                   'name': 'Nepal',
                   'capital': 'Kathmandu'},
                  {'timezones': ['Pacific/Nauru'],
-                  'code': 'NR',
+                  'alpha-2-code': 'NR',
+                  'alpha-3-code': 'NRU',
                   'continent': 'Oceania',
                   'name': 'Nauru',
                   'capital': 'Yaren'},
                  {'timezones': ['Pacific/Auckland',
                                 'Pacific/Chatham'],
-                  'code': 'NZ',
+                  'alpha-2-code': 'NZ',
+                  'alpha-3-code': 'NZL',
                   'continent': 'Oceania',
                   'name': 'New Zealand',
                   'capital': 'Wellington'},
                  {'timezones': ['Asia/Muscat'],
-                  'code': 'OM',
+                  'alpha-2-code': 'OM',
+                  'alpha-3-code': 'OMN',
                   'continent': 'Asia',
                   'name': 'Oman',
                   'capital': 'Muscat'},
                  {'timezones': ['America/Panama'],
-                  'code': 'PA',
+                  'alpha-2-code': 'PA',
+                  'alpha-3-code': 'PAN',
                   'continent': 'North America',
                   'name': 'Panama',
                   'capital': 'Panama City'},
                  {'timezones': ['America/Lima'],
-                  'code': 'PE',
+                  'alpha-2-code': 'PE',
+                  'alpha-3-code': 'PER',
                   'continent': 'South America',
                   'name': 'Peru',
                   'capital': 'Lima'},
                  {'timezones': ['Pacific/Port_Moresby'],
-                  'code': 'PG',
+                  'alpha-2-code': 'PG',
+                  'alpha-3-code': 'PNG',
                   'continent': 'Oceania',
                   'name': 'Papua New Guinea',
                   'capital': 'Port Moresby'},
                  {'timezones': ['Asia/Manila'],
-                  'code': 'PH',
+                  'alpha-2-code': 'PH',
+                  'alpha-3-code': 'PHL',
                   'continent': 'Asia',
                   'name': 'Philippines',
                   'capital': 'Manila'},
                  {'timezones': ['Asia/Karachi'],
-                  'code': 'PK',
+                  'alpha-2-code': 'PK',
+                  'alpha-3-code': 'PAK',
                   'continent': 'Asia',
                   'name': 'Pakistan',
                   'capital': 'Islamabad'},
                  {'timezones': ['Europe/Warsaw'],
-                  'code': 'PL',
+                  'alpha-2-code': 'PL',
+                  'alpha-3-code': 'POL',
                   'continent': 'Europe',
                   'name': 'Poland',
                   'capital': 'Warsaw'},
                  {'timezones': ['Europe/Lisbon',
                                 'Atlantic/Madeira',
                                 'Atlantic/Azores'],
-                  'code': 'PT',
+                  'alpha-2-code': 'PT',
+                  'alpha-3-code': 'PRT',
                   'continent': 'Europe',
                   'name': 'Portugal',
                   'capital': 'Lisbon'},
                  {'timezones': ['Pacific/Palau'],
-                  'code': 'PW',
+                  'alpha-2-code': 'PW',
+                  'alpha-3-code': 'PLW',
                   'continent': 'Oceania',
                   'name': 'Palau',
                   'capital': 'Ngerulmud'},
                  {'timezones': ['America/Asuncion'],
-                  'code': 'PY',
+                  'alpha-2-code': 'PY',
+                  'alpha-3-code': 'PRY',
                   'continent': 'South America',
                   'name': 'Paraguay',
                   'capital': 'Asunci\xc3\xb3n'},
                  {'timezones': ['Asia/Qatar'],
-                  'code': 'QA',
+                  'alpha-2-code': 'QA',
+                  'alpha-3-code': 'QAT',
                   'continent': 'Asia',
                   'name': 'Qatar',
                   'capital': 'Doha'},
                  {'timezones': ['Europe/Bucharest'],
-                  'code': 'RO',
+                  'alpha-2-code': 'RO',
+                  'alpha-3-code': 'ROU',
                   'continent': 'Europe',
                   'name': 'Romania',
                   'capital': 'Bucharest'},
@@ -788,137 +912,164 @@ class Provider(BaseProvider):
                                 'Asia/Magadan',
                                 'Asia/Kamchatka',
                                 'Asia/Anadyr'],
-                  'code': 'RU',
+                  'alpha-2-code': 'RU',
+                  'alpha-3-code': 'RUS',
                   'continent': 'Europe',
                   'name': 'Russia',
                   'capital': 'Moscow'},
                  {'timezones': ['Africa/Kigali'],
-                  'code': 'RW',
+                  'alpha-2-code': 'RW',
+                  'alpha-3-code': 'RWA',
                   'continent': 'Africa',
                   'name': 'Rwanda',
                   'capital': 'Kigali'},
                  {'timezones': ['Asia/Riyadh'],
-                  'code': 'SA',
+                  'alpha-2-code': 'SA',
+                  'alpha-3-code': 'SAU',
                   'continent': 'Asia',
                   'name': 'Saudi Arabia',
                   'capital': 'Riyadh'},
                  {'timezones': ['Pacific/Guadalcanal'],
-                  'code': 'SB',
+                  'alpha-2-code': 'SB',
+                  'alpha-3-code': 'SLB',
                   'continent': 'Oceania',
                   'name': 'Solomon Islands',
                   'capital': 'Honiara'},
                  {'timezones': ['Indian/Mahe'],
-                  'code': 'SC',
+                  'alpha-2-code': 'SC',
+                  'alpha-3-code': 'SYC',
                   'continent': 'Africa',
                   'name': 'Seychelles',
                   'capital': 'Victoria'},
                  {'timezones': ['Africa/Khartoum'],
-                  'code': 'SD',
+                  'alpha-2-code': 'SD',
+                  'alpha-3-code': 'SDN',
                   'continent': 'Africa',
                   'name': 'Sudan',
                   'capital': 'Khartoum'},
                  {'timezones': ['Europe/Stockholm'],
-                  'code': 'SE',
+                  'alpha-2-code': 'SE',
+                  'alpha-3-code': 'SWE',
                   'continent': 'Europe',
                   'name': 'Sweden',
                   'capital': 'Stockholm'},
                  {'timezones': ['Asia/Singapore'],
-                  'code': 'SG',
+                  'alpha-2-code': 'SG',
+                  'alpha-3-code': 'SGP',
                   'continent': 'Asia',
                   'name': 'Singapore',
                   'capital': 'Singapore'},
                  {'timezones': ['Europe/Ljubljana'],
-                  'code': 'SI',
+                  'alpha-2-code': 'SI',
+                  'alpha-3-code': 'SVN',
                   'continent': 'Europe',
                   'name': 'Slovenia',
                   'capital': 'Ljubljana'},
                  {'timezones': ['Europe/Bratislava'],
-                  'code': 'SK',
+                  'alpha-2-code': 'SK',
+                  'alpha-3-code': 'SVK',
                   'continent': 'Europe',
                   'name': 'Slovakia',
                   'capital': 'Bratislava'},
                  {'timezones': ['Africa/Freetown'],
-                  'code': 'SL',
+                  'alpha-2-code': 'SL',
+                  'alpha-3-code': 'SLE',
                   'continent': 'Africa',
                   'name': 'Sierra Leone',
                   'capital': 'Freetown'},
                  {'timezones': ['Europe/San_Marino'],
-                  'code': 'SM',
+                  'alpha-2-code': 'SM',
+                  'alpha-3-code': 'SMR',
                   'continent': 'Europe',
                   'name': 'San Marino',
                   'capital': 'San Marino'},
                  {'timezones': ['Africa/Dakar'],
-                  'code': 'SN',
+                  'alpha-2-code': 'SN',
+                  'alpha-3-code': 'SEN',
                   'continent': 'Africa',
                   'name': 'Senegal',
                   'capital': 'Dakar'},
                  {'timezones': ['Africa/Mogadishu'],
-                  'code': 'SO',
+                  'alpha-2-code': 'SO',
+                  'alpha-3-code': 'SOM',
                   'continent': 'Africa',
                   'name': 'Somalia',
                   'capital': 'Mogadishu'},
                  {'timezones': ['America/Paramaribo'],
-                  'code': 'SR',
+                  'alpha-2-code': 'SR',
+                  'alpha-3-code': 'SUR',
                   'continent': 'South America',
                   'name': 'Suriname',
                   'capital': 'Paramaribo'},
                  {'timezones': ['Africa/Sao_Tome'],
-                  'code': 'ST',
+                  'alpha-2-code': 'ST',
+                  'alpha-3-code': 'STP',
                   'continent': 'Africa',
                   'name': 'S\xc3\xa3o Tom\xc3\xa9 and Pr\xc3\xadncipe',
                   'capital': 'S\xc3\xa3o Tom\xc3\xa9'},
                  {'timezones': ['Asia/Damascus'],
-                  'code': 'SY',
+                  'alpha-2-code': 'SY',
+                  'alpha-3-code': 'SYR',
                   'continent': 'Asia',
                   'name': 'Syria',
                   'capital': 'Damascus'},
                  {'timezones': ['Africa/Lome'],
-                  'code': 'TG',
+                  'alpha-2-code': 'TG',
+                  'alpha-3-code': 'TGO',
                   'continent': 'Africa',
                   'name': 'Togo',
                   'capital': 'Lom\xc3\xa9'},
                  {'timezones': ['Asia/Bangkok'],
-                  'code': 'TH',
+                  'alpha-2-code': 'TH',
+                  'alpha-3-code': 'THA',
                   'continent': 'Asia',
                   'name': 'Thailand',
                   'capital': 'Bangkok'},
                  {'timezones': ['Asia/Dushanbe'],
-                  'code': 'TJ',
+                  'alpha-2-code': 'TJ',
+                  'alpha-3-code': 'TJK',
                   'continent': 'Asia',
                   'name': 'Tajikistan',
                   'capital': 'Dushanbe'},
                  {'timezones': ['Asia/Ashgabat'],
-                  'code': 'TM',
+                  'alpha-2-code': 'TM',
+                  'alpha-3-code': 'TKM',
                   'continent': 'Asia',
                   'name': 'Turkmenistan',
                   'capital': 'Ashgabat'},
                  {'timezones': ['Africa/Tunis'],
-                  'code': 'TN',
+                  'alpha-2-code': 'TN',
+                  'alpha-3-code': 'TUN',
                   'continent': 'Africa',
                   'name': 'Tunisia',
                   'capital': 'Tunis'},
                  {'timezones': ['Pacific/Tongatapu'],
-                  'code': 'TO',
+                  'alpha-2-code': 'TO',
+                  'alpha-3-code': 'TON',
                   'continent': 'Oceania',
                   'name': 'Tonga',
                   'capital': 'Nuku\xca\xbbalofa'},
                  {'timezones': ['Europe/Istanbul'],
-                  'code': 'TR',
+                  'alpha-2-code': 'TR',
+                  'alpha-3-code': 'TUR',
                   'continent': 'Asia',
                   'name': 'Turkey',
                   'capital': 'Ankara'},
                  {'timezones': ['America/Port_of_Spain'],
-                  'code': 'TT',
+                  'alpha-2-code': 'TT',
+                  'alpha-3-code': 'TTO',
                   'continent': 'North America',
                   'name': 'Trinidad and Tobago',
                   'capital': 'Port of Spain'},
                  {'timezones': ['Pacific/Funafuti'],
-                  'code': 'TV',
+                  'alpha-2-code': 'TV',
+                  'alpha-3-code': 'TUV',
                   'continent': 'Oceania',
                   'name': 'Tuvalu',
                   'capital': 'Funafuti'},
                  {'timezones': ['Africa/Dar_es_Salaam'],
-                  'code': 'TZ',
+                  'alpha-2-code': 'TZ',
+                  'alpha-3-code': 'TZA',
                   'continent': 'Africa',
                   'name': 'Tanzania',
                   'capital': 'Dodoma'},
@@ -926,12 +1077,14 @@ class Provider(BaseProvider):
                                 'Europe/Uzhgorod',
                                 'Europe/Zaporozhye',
                                 'Europe/Simferopol'],
-                  'code': 'UA',
+                  'alpha-2-code': 'UA',
+                  'alpha-3-code': 'UKR',
                   'continent': 'Europe',
                   'name': 'Ukraine',
                   'capital': 'Kiev'},
                  {'timezones': ['Africa/Kampala'],
-                  'code': 'UG',
+                  'alpha-2-code': 'UG',
+                  'alpha-3-code': 'UGA',
                   'continent': 'Africa',
                   'name': 'Uganda',
                   'capital': 'Kampala'},
@@ -960,108 +1113,129 @@ class Provider(BaseProvider):
                                 'America/Nome',
                                 'America/Adak',
                                 'Pacific/Honolulu'],
-                  'code': 'US',
+                  'alpha-2-code': 'US',
+                  'alpha-3-code': 'USA',
                   'continent': 'North America',
                   'name': 'United States',
                   'capital': 'Washington, D.C.'},
                  {'timezones': ['America/Montevideo'],
-                  'code': 'UY',
+                  'alpha-2-code': 'UY',
+                  'alpha-3-code': 'URY',
                   'continent': 'South America',
                   'name': 'Uruguay',
                   'capital': 'Montevideo'},
                  {'timezones': ['Asia/Samarkand',
                                 'Asia/Tashkent'],
-                  'code': 'UZ',
+                  'alpha-2-code': 'UZ',
+                  'alpha-3-code': 'UZB',
                   'continent': 'Asia',
                   'name': 'Uzbekistan',
                   'capital': 'Tashkent'},
                  {'timezones': ['Europe/Vatican'],
-                  'code': 'VA',
+                  'alpha-2-code': 'VA',
+                  'alpha-3-code': 'VAT',
                   'continent': 'Europe',
                   'name': 'Vatican City',
                   'capital': 'Vatican City'},
                  {'timezones': ['America/Caracas'],
-                  'code': 'VE',
+                  'alpha-2-code': 'VE',
+                  'alpha-3-code': 'VEN',
                   'continent': 'South America',
                   'name': 'Venezuela',
                   'capital': 'Caracas'},
                  {'timezones': ['Asia/Saigon'],
-                  'code': 'VN',
+                  'alpha-2-code': 'VN',
+                  'alpha-3-code': 'VNM',
                   'continent': 'Asia',
                   'name': 'Vietnam',
                   'capital': 'Hanoi'},
                  {'timezones': ['Pacific/Efate'],
-                  'code': 'VU',
+                  'alpha-2-code': 'VU',
+                  'alpha-3-code': 'VUT',
                   'continent': 'Oceania',
                   'name': 'Vanuatu',
                   'capital': 'Port Vila'},
                  {'timezones': ['Asia/Aden'],
-                  'code': 'YE',
+                  'alpha-2-code': 'YE',
+                  'alpha-3-code': 'YEM',
                   'continent': 'Asia',
                   'name': 'Yemen',
                   'capital': "Sana'a"},
                  {'timezones': ['Africa/Lusaka'],
-                  'code': 'ZM',
+                  'alpha-2-code': 'ZM',
+                  'alpha-3-code': 'ZMB',
                   'continent': 'Africa',
                   'name': 'Zambia',
                   'capital': 'Lusaka'},
                  {'timezones': ['Africa/Harare'],
-                  'code': 'ZW',
+                  'alpha-2-code': 'ZW',
+                  'alpha-3-code': 'ZWE',
                   'continent': 'Africa',
                   'name': 'Zimbabwe',
                   'capital': 'Harare'},
                  {'timezones': ['Africa/Algiers'],
-                  'code': 'DZ',
+                  'alpha-2-code': 'DZ',
+                  'alpha-3-code': 'DZA',
                   'continent': 'Africa',
                   'name': 'Algeria',
                   'capital': 'Algiers'},
                  {'timezones': ['Europe/Sarajevo'],
-                  'code': 'BA',
+                  'alpha-2-code': 'BA',
+                  'alpha-3-code': 'BIH',
                   'continent': 'Europe',
                   'name': 'Bosnia and Herzegovina',
                   'capital': 'Sarajevo'},
                  {'timezones': ['Asia/Phnom_Penh'],
-                  'code': 'KH',
+                  'alpha-2-code': 'KH',
+                  'alpha-3-code': 'KHM',
                   'continent': 'Asia',
                   'name': 'Cambodia',
                   'capital': 'Phnom Penh'},
                  {'timezones': ['Africa/Bangui'],
-                  'code': 'CF',
+                  'alpha-2-code': 'CF',
+                  'alpha-3-code': 'CAF',
                   'continent': 'Africa',
                   'name': 'Central African Republic',
                   'capital': 'Bangui'},
                  {'timezones': ['Africa/Ndjamena'],
-                  'code': 'TD',
+                  'alpha-2-code': 'TD',
+                  'alpha-3-code': 'TCD',
                   'continent': 'Africa',
                   'name': 'Chad',
                   'capital': "N'Djamena"},
                  {'timezones': ['Indian/Comoro'],
-                  'code': 'KM',
+                  'alpha-2-code': 'KM',
+                  'alpha-3-code': 'COM',
                   'continent': 'Africa',
                   'name': 'Comoros',
                   'capital': 'Moroni'},
                  {'timezones': ['Europe/Zagreb'],
-                  'code': 'HR',
+                  'alpha-2-code': 'HR',
+                  'alpha-3-code': 'HRV',
                   'continent': 'Europe',
                   'name': 'Croatia',
                   'capital': 'Zagreb'},
                  {'timezones': ['Asia/Dili'],
-                  'code': 'TL',
+                  'alpha-2-code': 'TL',
+                  'alpha-3-code': 'TLS',
                   'continent': 'Asia',
                   'name': 'East Timor',
                   'capital': 'Dili'},
                  {'timezones': ['America/El_Salvador'],
-                  'code': 'SV',
+                  'alpha-2-code': 'SV',
+                  'alpha-3-code': 'SLV',
                   'continent': 'North America',
                   'name': 'El Salvador',
                   'capital': 'San Salvador'},
                  {'timezones': ['Africa/Malabo'],
-                  'code': 'GQ',
+                  'alpha-2-code': 'GQ',
+                  'alpha-3-code': 'GNQ',
                   'continent': 'Africa',
                   'name': 'Equatorial Guinea',
                   'capital': 'Malabo'},
                  {'timezones': ['America/Grenada'],
-                  'code': 'GD',
+                  'alpha-2-code': 'GD',
+                  'alpha-3-code': 'GRD',
                   'continent': 'North America',
                   'name': 'Grenada',
                   'capital': "St. George's"},
@@ -1070,101 +1244,120 @@ class Provider(BaseProvider):
                                 'Asia/Aqtobe',
                                 'Asia/Aqtau',
                                 'Asia/Oral'],
-                  'code': 'KZ',
+                  'alpha-2-code': 'KZ',
+                  'alpha-3-code': 'KAZ',
                   'continent': 'Asia',
                   'name': 'Kazakhstan',
                   'capital': 'Astana'},
                  {'timezones': ['Asia/Vientiane'],
-                  'code': 'LA',
+                  'alpha-2-code': 'LA',
+                  'alpha-3-code': 'LAO',
                   'continent': 'Asia',
                   'name': 'Laos',
                   'capital': 'Vientiane'},
                  {'timezones': ['Pacific/Truk',
                                 'Pacific/Ponape',
                                 'Pacific/Kosrae'],
-                  'code': 'FM',
+                  'alpha-2-code': 'FM',
+                  'alpha-3-code': 'FSM',
                   'continent': 'Oceania',
                   'name': 'Federated States of Micronesia',
                   'capital': 'Palikir'},
                  {'timezones': ['Europe/Chisinau'],
-                  'code': 'MD',
+                  'alpha-2-code': 'MD',
+                  'alpha-3-code': 'MDA',
                   'continent': 'Europe',
                   'name': 'Moldova',
                   'capital': 'Chi\xc5\x9fin\xc4\x83u'},
                  {'timezones': ['Europe/Monaco'],
-                  'code': 'MC',
+                  'alpha-2-code': 'MC',
+                  'alpha-3-code': 'MCO',
                   'continent': 'Europe',
                   'name': 'Monaco',
                   'capital': 'Monaco'},
                  {'timezones': ['Europe/Podgorica'],
-                  'code': 'ME',
+                  'alpha-2-code': 'ME',
+                  'alpha-3-code': 'MNE',
                   'continent': 'Europe',
                   'name': 'Montenegro',
                   'capital': 'Podgorica'},
                  {'timezones': ['Africa/Casablanca'],
-                  'code': 'MA',
+                  'alpha-2-code': 'MA',
+                  'alpha-3-code': 'MAR',
                   'continent': 'Africa',
                   'name': 'Morocco',
                   'capital': 'Rabat'},
                  {'timezones': ['America/St_Kitts'],
-                  'code': 'KN',
+                  'alpha-2-code': 'KN',
+                  'alpha-3-code': 'KNA',
                   'continent': 'North America',
                   'name': 'Saint Kitts and Nevis',
                   'capital': 'Basseterre'},
                  {'timezones': ['America/St_Lucia'],
-                  'code': 'LC',
+                  'alpha-2-code': 'LC',
+                  'alpha-3-code': 'LCA',
                   'continent': 'North America',
                   'name': 'Saint Lucia',
                   'capital': 'Castries'},
                  {'timezones': ['America/St_Vincent'],
-                  'code': 'VC',
+                  'alpha-2-code': 'VC',
+                  'alpha-3-code': 'VCT',
                   'continent': 'North America',
                   'name': 'Saint Vincent and the Grenadines',
                   'capital': 'Kingstown'},
                  {'timezones': ['Pacific/Apia'],
-                  'code': 'WS',
+                  'alpha-2-code': 'WS',
+                  'alpha-3-code': 'WSM',
                   'continent': 'Oceania',
                   'name': 'Samoa',
                   'capital': 'Apia'},
                  {'timezones': ['Europe/Belgrade'],
-                  'code': 'RS',
+                  'alpha-2-code': 'RS',
+                  'alpha-3-code': 'SRB',
                   'continent': 'Europe',
                   'name': 'Serbia',
                   'capital': 'Belgrade'},
                  {'timezones': ['Africa/Johannesburg'],
-                  'code': 'ZA',
+                  'alpha-2-code': 'ZA',
+                  'alpha-3-code': 'ZAF',
                   'continent': 'Africa',
                   'name': 'South Africa',
                   'capital': 'Pretoria'},
                  {'timezones': ['Europe/Madrid',
                                 'Africa/Ceuta',
                                 'Atlantic/Canary'],
-                  'code': 'ES',
+                  'alpha-2-code': 'ES',
+                  'alpha-3-code': 'ESP',
                   'continent': 'Europe',
                   'name': 'Spain',
                   'capital': 'Madrid'},
                  {'timezones': ['Asia/Colombo'],
-                  'code': 'LK',
+                  'alpha-2-code': 'LK',
+                  'alpha-3-code': 'LKA',
                   'continent': 'Asia',
                   'name': 'Sri Lanka',
                   'capital': 'Sri Jayewardenepura Kotte'},
                  {'timezones': ['Africa/Mbabane'],
-                  'code': 'SZ',
+                  'alpha-2-code': 'SZ',
+                  'alpha-3-code': 'SWZ',
                   'continent': 'Africa',
                   'name': 'Swaziland',
                   'capital': 'Mbabane'},
                  {'timezones': ['Europe/Zurich'],
-                  'code': 'CH',
+                  'alpha-2-code': 'CH',
+                  'alpha-3-code': 'CHE',
                   'continent': 'Europe',
                   'name': 'Switzerland',
                   'capital': 'Bern'},
                  {'timezones': ['Asia/Dubai'],
-                  'code': 'AE',
+                  'alpha-2-code': 'AE',
+                  'alpha-3-code': 'ARE',
                   'continent': 'Asia',
                   'name': 'United Arab Emirates',
                   'capital': 'Abu Dhabi'},
                  {'timezones': ['Europe/London'],
-                  'code': 'GB',
+                  'alpha-2-code': 'GB',
+                  'alpha-3-code': 'GBR',
                   'continent': 'Europe',
                   'name': 'United Kingdom',
                   'capital': 'London'},
diff --git a/faker/providers/date_time/ar_AA/__init__.py b/faker/providers/date_time/ar_AA/__init__.py
index 456f80c2..8bc6d012 100644
--- a/faker/providers/date_time/ar_AA/__init__.py
+++ b/faker/providers/date_time/ar_AA/__init__.py
@@ -40,32 +40,32 @@ class Provider(DateTimeProvider):
     ]
 
     countries = [{'timezones': ['أوروب/أندورا'],
-                  'code': 'AD',
+                  'alpha-2-code': 'AD',
                   'continent': 'أوروبا',
                   'name': 'أندورا',
                   'capital': 'أندورا لا فيلا'},
                  {'timezones': ['آسيا/كابل'],
-                  'code': 'AF',
+                  'alpha-2-code': 'AF',
                   'continent': 'آسيا',
                   'name': 'أفغانستان',
                   'capital': 'كابل'},
                  {'timezones': ['أمريكا/أنتيغوا'],
-                  'code': 'AG',
+                  'alpha-2-code': 'AG',
                   'continent': 'أمريكا الشمالية',
                   'name': 'أنتيغوا وباربودا',
                   'capital': "سانت جونز"},
                  {'timezones': ['أوروبا/تيرانا'],
-                  'code': 'AL',
+                  'alpha-2-code': 'AL',
                   'continent': 'أوروبا',
                   'name': 'ألبانيا',
                   'capital': 'تيرانا'},
                  {'timezones': ['آسيا/يريفان'],
-                  'code': 'AM',
+                  'alpha-2-code': 'AM',
                   'continent': 'آسيا',
                   'name': 'أرمينيا',
                   'capital': 'يريفان'},
                  {'timezones': ['إفريقيا/لواندا'],
-                  'code': 'AO',
+                  'alpha-2-code': 'AO',
                   'continent': 'إفريقيا',
                   'name': 'أنغولا',
                   'capital': 'لواندا'},
@@ -79,12 +79,12 @@ class Provider(DateTimeProvider):
                                 'أمريكا/الأرجنتين/مندوزا',
                                 'أمريكا/الأرجنتين/ريو_غاليغوس',
                                 'أمريكا/الأرجنتين/أوشوايا'],
-                  'code': 'AR',
+                  'alpha-2-code': 'AR',
                   'continent': 'أمريكا الجنوبية',
                   'name': 'الأرجنتين',
                   'capital': 'بوينس آيرس'},
                  {'timezones': ['أوروبا/النمسا'],
-                  'code': 'AT',
+                  'alpha-2-code': 'AT',
                   'continent': 'أوروبا',
                   'name': 'النمسا',
                   'capital': 'فيينا'},
@@ -99,62 +99,62 @@ class Provider(DateTimeProvider):
                                 'أستراليا/أديلايد',
                                 'أستراليا/داروين',
                                 'أستراليا/برث'],
-                  'code': 'AU',
+                  'alpha-2-code': 'AU',
                   'continent': 'أوقيانوسيا',
                   'name': 'أستراليا',
                   'capital': 'كانبرا'},
                  {'timezones': ['آسيا/باكو'],
-                  'code': 'AZ',
+                  'alpha-2-code': 'AZ',
                   'continent': 'آسيا',
                   'name': 'أذربيجان',
                   'capital': 'باكو'},
                  {'timezones': ['أمريكا/باربادوس'],
-                  'code': 'BB',
+                  'alpha-2-code': 'BB',
                   'continent': 'أمريكا الشمالية',
                   'name': 'باربادوس',
                   'capital': 'بريدج تاون'},
                  {'timezones': ['آسيا/دكا'],
-                  'code': 'BD',
+                  'alpha-2-code': 'BD',
                   'continent': 'آسيا',
                   'name': 'بنغلادش',
                   'capital': 'دكا'},
                  {'timezones': ['أوروبا/بروكسل'],
-                  'code': 'BE',
+                  'alpha-2-code': 'BE',
                   'continent': 'أوروبا',
                   'name': 'بلجيكا',
                   'capital': 'بروكسل'},
                  {'timezones': ['إفريقيا/واغادوغو'],
-                  'code': 'BF',
+                  'alpha-2-code': 'BF',
                   'continent': 'إفريقيا',
                   'name': 'بوركينا فاسو',
                   'capital': 'واغادوغو'},
                  {'timezones': ['أوروبا/صوفيا'],
-                  'code': 'BG',
+                  'alpha-2-code': 'BG',
                   'continent': 'أوروبا',
                   'name': 'بلغاريا',
                   'capital': 'صوفيا'},
                  {'timezones': ['آسيا/البحرين'],
-                  'code': 'BH',
+                  'alpha-2-code': 'BH',
                   'continent': 'آسيا',
                   'name': 'البحرين',
                   'capital': 'المنامة'},
                  {'timezones': ['إفريقيا/بوجمبورا'],
-                  'code': 'BI',
+                  'alpha-2-code': 'BI',
                   'continent': 'إفريقيا',
                   'name': 'بوروندي',
                   'capital': 'بوجمبورا'},
                  {'timezones': ['إفريقيا/بورتو نوفو'],
-                  'code': 'BJ',
+                  'alpha-2-code': 'BJ',
                   'continent': 'إفريقيا',
                   'name': 'بنين',
                   'capital': 'بورتو نوفو'},
                  {'timezones': ['آسيا/بروناي'],
-                  'code': 'BN',
+                  'alpha-2-code': 'BN',
                   'continent': 'آسيا',
                   'name': 'اتحاد بروناي (دار السلام)',
                   'capital': 'بندر سري بكاوان'},
                  {'timezones': ['أمريكا/لاباز'],
-                  'code': 'BO',
+                  'alpha-2-code': 'BO',
                   'continent': 'أمريكا الجنوبية',
                   'name': 'بوليفيا',
                   'capital': 'سوكري'},
@@ -173,32 +173,32 @@ class Provider(DateTimeProvider):
                                 'أمريكا/ماناوس',
                                 'أمريكا/إيرونيبي',
                                 'أمريكا/ريو_برانكو'],
-                  'code': 'BR',
+                  'alpha-2-code': 'BR',
                   'continent': 'أمريكا الجنوبية',
                   'name': 'البرازيل',
                   'capital': 'برازيليا'},
                  {'timezones': ['أمريكا/ناساو'],
-                  'code': 'BS',
+                  'alpha-2-code': 'BS',
                   'continent': 'أمريكا الشمالية',
                   'name': 'باهاماس',
                   'capital': 'ناساو'},
                  {'timezones': ['آسيا/تيمفو'],
-                  'code': 'BT',
+                  'alpha-2-code': 'BT',
                   'continent': 'آسيا',
                   'name': 'بوتان',
                   'capital': 'تيمفو'},
                  {'timezones': ['إفريقيا/غابورون'],
-                  'code': 'BW',
+                  'alpha-2-code': 'BW',
                   'continent': 'إفريقيا',
                   'name': 'بوتسوانا',
                   'capital': 'غابورون'},
                  {'timezones': ['أوروبا/مينسك'],
-                  'code': 'BY',
+                  'alpha-2-code': 'BY',
                   'continent': 'أوروبا',
                   'name': 'روسيا البيضاء',
                   'capital': 'مينسك'},
                  {'timezones': ['أمريكا/بليز'],
-                  'code': 'BZ',
+                  'alpha-2-code': 'BZ',
                   'continent': 'أمريكا الشمالية',
                   'name': 'بليز',
                   'capital': 'بلموبان'},
@@ -228,34 +228,34 @@ class Provider(DateTimeProvider):
                                 'أمريكا/فانكوفر',
                                 'أمريكا/وايت_هورس',
                                 'أمريكا/داوسون'],
-                  'code': 'CA',
+                  'alpha-2-code': 'CA',
                   'continent': 'أمريكا الشمالية',
                   'name': 'كندا',
                   'capital': 'أوتاوا'},
                  {'timezones': ['إفريقيا/كينشاسا',
                                 'إفريقيا/لوبومباشي'],
-                  'code': 'CD',
+                  'alpha-2-code': 'CD',
                   'continent': 'إفريقيا',
                   'name': 'جمهورية الكونغو الديمقراطية',
                   'capital': 'كينشاسا'},
                  {'timezones': ['إفريقيا/برازافيل'],
-                  'code': 'CG',
+                  'alpha-2-code': 'CG',
                   'continent': 'إفريقيا',
                   'name': 'جمهورية الكونغو',
                   'capital': 'برازافيل'},
                  {'timezones': ['إفريقيا/أبيدجان'],
-                  'code': 'CI',
+                  'alpha-2-code': 'CI',
                   'continent': 'إفريقيا',
                   'name': "ساحل العاج",
                   'capital': 'ياموسوكرو'},
                  {'timezones': ['أمريكا/سانتياغو',
                                 'المحيط_الهاديء/جزيرة_القيامة'],
-                  'code': 'CL',
+                  'alpha-2-code': 'CL',
                   'continent': 'أمريكا الجنوبية',
                   'name': 'تشيلي',
                   'capital': 'سانتياغو'},
                  {'timezones': ['إفريقيا/دوالا'],
-                  'code': 'CM',
+                  'alpha-2-code': 'CM',
                   'continent': 'إفريقيا',
                   'name': 'الكاميرون',
                   'capital': 'ياوندي'},
@@ -264,163 +264,163 @@ class Provider(DateTimeProvider):
                                 'آسيا/تشونغتشينغ',
                                 'آسيا/أورومتشي',
                                 'آسيا/كاشغر'],
-                  'code': 'CN',
+                  'alpha-2-code': 'CN',
                   'continent': 'آسيا',
                   'name': "جمهورية الصين الشعبية",
                   'capital': 'بكين'},
                  {'timezones': ['أمريكا/بوغوتا'],
-                  'code': 'CO',
+                  'alpha-2-code': 'CO',
                   'continent': 'أمريكا الجنوبية',
                   'name': 'كولومبيا',
                   'capital': 'بوغوتا'},
                  {'timezones': ['أمريكا/كوستاريكا'],
-                  'code': 'CR',
+                  'alpha-2-code': 'CR',
                   'continent': 'أمريكا الشمالية',
                   'name': 'كوستاريكا',
                   'capital': 'سان خوسيه'},
                  {'timezones': ['أمريكا/هافانا'],
-                  'code': 'CU',
+                  'alpha-2-code': 'CU',
                   'continent': 'أمريكا الشمالية',
                   'name': 'كوبا',
                   'capital': 'هافانا'},
                  {'timezones': ['الأطلنطي/الرأس_الأخضر'],
-                  'code': 'CV',
+                  'alpha-2-code': 'CV',
                   'continent': 'إفريقيا',
                   'name': 'جمهورية الرأس الأخضر',
                   'capital': 'برايا'},
                  {'timezones': ['آسيا/نيقوسيا'],
-                  'code': 'CY',
+                  'alpha-2-code': 'CY',
                   'continent': 'آسيا',
                   'name': 'قبرص',
                   'capital': 'نيقوسيا'},
                  {'timezones': ['أوروبا/براغ'],
-                  'code': 'CZ',
+                  'alpha-2-code': 'CZ',
                   'continent': 'أوروبا',
                   'name': 'جمهورية التشيك',
                   'capital': 'براغ'},
                  {'timezones': ['أوروبا/برلين'],
-                  'code': 'DE',
+                  'alpha-2-code': 'DE',
                   'continent': 'أوروبا',
                   'name': 'ألمانيا',
                   'capital': 'برلين'},
                  {'timezones': ['إفريقيا/جيبوتي'],
-                  'code': 'DJ',
+                  'alpha-2-code': 'DJ',
                   'continent': 'إفريقيا',
                   'name': 'جيبوتي',
                   'capital': 'جيبوتي'},
                  {'timezones': ['أوروبا/كوبنهاغن'],
-                  'code': 'DK',
+                  'alpha-2-code': 'DK',
                   'continent': 'أوروبا',
                   'name': 'الدنمارك',
                   'capital': 'كوبنهاغن'},
                  {'timezones': ['أمريكا/دومينيكا'],
-                  'code': 'DM',
+                  'alpha-2-code': 'DM',
                   'continent': 'أمريكا الشمالية',
                   'name': 'دومينيكا',
                   'capital': 'روسياو'},
                  {'timezones': ['أمريكا/سانتو_دومينغو'],
-                  'code': 'DO',
+                  'alpha-2-code': 'DO',
                   'continent': 'أمريكا الشمالية',
                   'name': 'جمهورية الدومينيكان',
                   'capital': 'سانتو دومينغو'},
                  {'timezones': ['أمريكا/غواياكيل',
                                 'المحيط_الهاديء/أرخبيل_غالاباغوس'],
-                  'code': 'EC',
+                  'alpha-2-code': 'EC',
                   'continent': 'أمريكا الجنوبية',
                   'name': 'الإكوادور',
                   'capital': 'كيتو'},
                  {'timezones': ['أوروبا/تالين'],
-                  'code': 'EE',
+                  'alpha-2-code': 'EE',
                   'continent': 'أوروبا',
                   'name': 'إستونيا',
                   'capital': 'تالين'},
                  {'timezones': ['إفريقيا/القاهرة'],
-                  'code': 'EG',
+                  'alpha-2-code': 'EG',
                   'continent': 'إفريقيا',
                   'name': 'مصر',
                   'capital': 'القاهرة'},
                  {'timezones': ['إفريقيا/أسمرة'],
-                  'code': 'ER',
+                  'alpha-2-code': 'ER',
                   'continent': 'إفريقيا',
                   'name': 'إرتيريا',
                   'capital': 'أسمرة'},
                  {'timezones': ['إفريقيا/أديس أبابا'],
-                  'code': 'ET',
+                  'alpha-2-code': 'ET',
                   'continent': 'إفريقيا',
                   'name': 'إثيوبيا',
                   'capital': 'أديس أبابا'},
                  {'timezones': ['أوروبا/هلسنكي'],
-                  'code': 'FI',
+                  'alpha-2-code': 'FI',
                   'continent': 'أوروبا',
                   'name': 'فنلندا',
                   'capital': 'هلسنكي'},
                  {'timezones': ['المحيط_الهاديء/فيجي'],
-                  'code': 'FJ',
+                  'alpha-2-code': 'FJ',
                   'continent': 'أوقيانوسيا',
                   'name': 'فيجي',
                   'capital': 'سوفا'},
                  {'timezones': ['أوروبا/باريس'],
-                  'code': 'FR',
+                  'alpha-2-code': 'FR',
                   'continent': 'أوروبا',
                   'name': 'فرنسا',
                   'capital': 'باريس'},
                  {'timezones': ['إفريقيا/ليبرفيل'],
-                  'code': 'GA',
+                  'alpha-2-code': 'GA',
                   'continent': 'إفريقيا',
                   'name': 'الغابون',
                   'capital': 'ليبرفيل'},
                  {'timezones': ['آسيا/تبليسي'],
-                  'code': 'GE',
+                  'alpha-2-code': 'GE',
                   'continent': 'آسيا',
                   'name': 'جورجيا',
                   'capital': 'تبليسي'},
                  {'timezones': ['إفريقيا/أكرا'],
-                  'code': 'GH',
+                  'alpha-2-code': 'GH',
                   'continent': 'إفريقيا',
                   'name': 'غانا',
                   'capital': 'أكرا'},
                  {'timezones': ['إفريقيا/بانجول'],
-                  'code': 'GM',
+                  'alpha-2-code': 'GM',
                   'continent': 'إفريقيا',
                   'name': 'غامبيا',
                   'capital': 'بانجول'},
                  {'timezones': ['إفريقيا/كوناكري'],
-                  'code': 'GN',
+                  'alpha-2-code': 'GN',
                   'continent': 'إفريقيا',
                   'name': 'غينيا',
                   'capital': 'كوناكري'},
                  {'timezones': ['أوروبا/أثينا'],
-                  'code': 'GR',
+                  'alpha-2-code': 'GR',
                   'continent': 'أوروبا',
                   'name': 'اليونان',
                   'capital': 'أثينا'},
                  {'timezones': ['أمريكا/غواتيمالا'],
-                  'code': 'GT',
+                  'alpha-2-code': 'GT',
                   'continent': 'أمريكا الشمالية',
                   'name': 'غواتيمالا',
                   'capital': 'غواتيمالا سيتي'},
                  {'timezones': ['أمريكا/غواتيمالا'],
-                  'code': 'GT',
+                  'alpha-2-code': 'GT',
                   'continent': 'أمريكا الشمالية',
                   'name': 'هايتي',
                   'capital': 'بورت أو برانس'},
                  {'timezones': ['إفريقيا/بيساو'],
-                  'code': 'GW',
+                  'alpha-2-code': 'GW',
                   'continent': 'إفريقيا',
                   'name': 'غينيا بيساو',
                   'capital': 'بيساو'},
                  {'timezones': ['أمريكا/غيانا'],
-                  'code': 'GY',
+                  'alpha-2-code': 'GY',
                   'continent': 'أمريكا الجنوبية',
                   'name': 'غيانا',
                   'capital': 'جورج تاون'},
                  {'timezones': ['أمريكا/تيجوسيجالبا'],
-                  'code': 'HN',
+                  'alpha-2-code': 'HN',
                   'continent': 'أمريكا الشمالية',
                   'name': 'هندوراس',
                   'capital': 'تيجوسيجالبا'},
                  {'timezones': ['أوروبا/بودابست'],
-                  'code': 'HU',
+                  'alpha-2-code': 'HU',
                   'continent': 'أوروبا',
                   'name': 'هنغاريا',
                   'capital': 'بودابست'},
@@ -428,187 +428,187 @@ class Provider(DateTimeProvider):
                                 'آسيا/بونتياناك',
                                 'آسيا/ماكاسار',
                                 'آسيا/جايابورا'],
-                  'code': 'ID',
+                  'alpha-2-code': 'ID',
                   'continent': 'آسيا',
                   'name': 'إندونسيا',
                   'capital': 'جاكرتا'},
                  {'timezones': ['أوروبا/دبلن'],
-                  'code': 'IE',
+                  'alpha-2-code': 'IE',
                   'continent': 'أوروبا',
                   'name': 'إيرلندا',
                   'capital': 'دبلن'},
                  {'timezones': ['آسيا/القدس'],
-                  'code': 'IL',
+                  'alpha-2-code': 'IL',
                   'continent': 'آسيا',
                   'name': 'فلسطين',
                   'capital': 'القدس'},
                  {'timezones': ['آسيا/كالكتا'],
-                  'code': 'IN',
+                  'alpha-2-code': 'IN',
                   'continent': 'آسيا',
                   'name': 'الهند',
                   'capital': 'نيو دلهي'},
                  {'timezones': ['آسيا/بغداد'],
-                  'code': 'IQ',
+                  'alpha-2-code': 'IQ',
                   'continent': 'آسيا',
                   'name': 'العراق',
                   'capital': 'بغداد'},
                  {'timezones': ['آسيا/طهران'],
-                  'code': 'IR',
+                  'alpha-2-code': 'IR',
                   'continent': 'آسيا',
                   'name': 'إيران',
                   'capital': 'طهران'},
                  {'timezones': ['الأطلنطي/ريكيافيك'],
-                  'code': 'IS',
+                  'alpha-2-code': 'IS',
                   'continent': 'أوروبا',
                   'name': 'آيسلندا',
                   'capital': 'ريكيافيك'},
                  {'timezones': ['أوروبا/روما'],
-                  'code': 'IT',
+                  'alpha-2-code': 'IT',
                   'continent': 'أوروبا',
                   'name': 'إيطاليا',
                   'capital': 'روما'},
                  {'timezones': ['أمريكا/جامايكا'],
-                  'code': 'JM',
+                  'alpha-2-code': 'JM',
                   'continent': 'أمريكا الشمالية',
                   'name': 'جامايكا',
                   'capital': 'كينغستون'},
                  {'timezones': ['آسيا/عمّان'],
-                  'code': 'JO',
+                  'alpha-2-code': 'JO',
                   'continent': 'آسيا',
                   'name': 'الأردن',
                   'capital': 'عمّان'},
                  {'timezones': ['آسيا/طوكيو'],
-                  'code': 'JP',
+                  'alpha-2-code': 'JP',
                   'continent': 'آسيا',
                   'name': 'اليابان',
                   'capital': 'طوكيو'},
                  {'timezones': ['إفريقيا/نيروبي'],
-                  'code': 'KE',
+                  'alpha-2-code': 'KE',
                   'continent': 'إفريقيا',
                   'name': 'كينيا',
                   'capital': 'نيروبي'},
                  {'timezones': ['آسيا/بشكيك'],
-                  'code': 'KG',
+                  'alpha-2-code': 'KG',
                   'continent': 'آسيا',
                   'name': 'قيرغيزستان',
                   'capital': 'بشكيك'},
                  {'timezones': ['المحيط_الهاديء/تاراوا',
                                 'المحيط_الهاديء/إيديربيري',
                                 'المحيط_الهاديء/كريتيماتي'],
-                  'code': 'KI',
+                  'alpha-2-code': 'KI',
                   'continent': 'أوقيانوسيا',
                   'name': 'كيريباتي',
                   'capital': 'جنوب تاراوا'},
                  {'timezones': ['آسيا/بيونغ_يانغ'],
-                  'code': 'KP',
+                  'alpha-2-code': 'KP',
                   'continent': 'آسيا',
                   'name': 'كوريا الشمالية',
                   'capital': 'بيونغ يانغ'},
                  {'timezones': ['آسيا/سيؤول'],
-                  'code': 'KR',
+                  'alpha-2-code': 'KR',
                   'continent': 'آسيا',
                   'name': '؛كوريا الجنوبية',
                   'capital': 'سيؤول'},
                  {'timezones': ['آسيا/الكويت'],
-                  'code': 'KW',
+                  'alpha-2-code': 'KW',
                   'continent': 'آسيا',
                   'name': 'الكويت',
                   'capital': 'الكويت'},
                  {'timezones': ['آسيا/بيروت'],
-                  'code': 'LB',
+                  'alpha-2-code': 'LB',
                   'continent': 'آسيا',
                   'name': 'لبنان',
                   'capital': 'بيروت'},
                  {'timezones': ['أوروبا/فادوز'],
-                  'code': 'LI',
+                  'alpha-2-code': 'LI',
                   'continent': 'أوروبا',
                   'name': 'ليختنشتاين',
                   'capital': 'فادوز'},
                  {'timezones': ['إفريقيا/مونروفيا'],
-                  'code': 'LR',
+                  'alpha-2-code': 'LR',
                   'continent': 'إفريقيا',
                   'name': 'ليبيريا',
                   'capital': 'مونروفيا'},
                  {'timezones': ['إفريقيا/ماسيرو'],
-                  'code': 'LS',
+                  'alpha-2-code': 'LS',
                   'continent': 'إفريقيا',
                   'name': 'ليسوتو',
                   'capital': 'ماسيرو'},
                  {'timezones': ['أوروبا/فيلنيوس'],
-                  'code': 'LT',
+                  'alpha-2-code': 'LT',
                   'continent': 'أوروبا',
                   'name': 'ليتوانيا',
                   'capital': 'فيلنيوس'},
                  {'timezones': ['أوروبا/لوكسمبرغ'],
-                  'code': 'LU',
+                  'alpha-2-code': 'LU',
                   'continent': 'أوروبا',
                   'name': 'لوكسمبرغ',
                   'capital': 'لوكسمبرغ سيتي'},
                  {'timezones': ['أوروبا/ربيغ'],
-                  'code': 'LV',
+                  'alpha-2-code': 'LV',
                   'continent': 'أوروبا',
                   'name': 'لاتفيا',
                   'capital': 'ربيغ'},
                  {'timezones': ['إفريقيا/طرابلس'],
-                  'code': 'LY',
+                  'alpha-2-code': 'LY',
                   'continent': 'إفريقيا',
                   'name': 'ليبيا',
                   'capital': 'طرابلس'},
                  {'timezones': ['الهندي/أنتاناناريفو'],
-                  'code': 'MG',
+                  'alpha-2-code': 'MG',
                   'continent': 'إفريقيا',
                   'name': 'مدغشقر',
                   'capital': 'أنتاناناريفو'},
                  {'timezones': ['المحيط_الهاديء/ماجورو',
                                 'المحيط_الهاديء/كواجلين_أتول'],
-                  'code': 'MH',
+                  'alpha-2-code': 'MH',
                   'continent': 'أوقيانوسيا',
                   'name': 'جزر مارشال',
                   'capital': 'ماجورو'},
                  {'timezones': ['أوروبا/سكوبيه'],
-                  'code': 'MK',
+                  'alpha-2-code': 'MK',
                   'continent': 'أوروبا',
                   'name': 'جمهورية مقدونيا',
                   'capital': 'سكوبيه'},
                  {'timezones': ['إفريقيا/باماكو'],
-                  'code': 'ML',
+                  'alpha-2-code': 'ML',
                   'continent': 'إفريقيا',
                   'name': 'مالي',
                   'capital': 'باماكو'},
                  {'timezones': ['آسيا/رانغون'],
-                  'code': 'MM',
+                  'alpha-2-code': 'MM',
                   'continent': 'آسيا',
                   'name': 'ميانمار',
                   'capital': 'نايبيداو'},
                  {'timezones': ['آسيا/أولان_باتور',
                                 'آسيا/Hovd',
                                 'آسيا/تشويبالسان'],
-                  'code': 'MN',
+                  'alpha-2-code': 'MN',
                   'continent': 'آسيا',
                   'name': 'مانغوليا',
                   'capital': 'أولان باتور'},
                  {'timezones': ['إفريقيا/نواكشط'],
-                  'code': 'MR',
+                  'alpha-2-code': 'MR',
                   'continent': 'إفريقيا',
                   'name': 'موريتانيا',
                   'capital': 'نواكشط'},
                  {'timezones': ['أوروبا/مالطا'],
-                  'code': 'MT',
+                  'alpha-2-code': 'MT',
                   'continent': 'أوروبا',
                   'name': 'مالطا',
                   'capital': 'فاليتا'},
                  {'timezones': ['الهندي/موريشيوس'],
-                  'code': 'MU',
+                  'alpha-2-code': 'MU',
                   'continent': 'إفريقيا',
                   'name': 'موريشيوس',
                   'capital': 'بور لويس'},
                  {'timezones': ['الهندي/جزر_المالديف'],
-                  'code': 'MV',
+                  'alpha-2-code': 'MV',
                   'continent': 'آسيا',
                   'name': 'جمهورية المالديف',
                   'capital': 'ماليه'},
                  {'timezones': ['إفريقيا/بلانتاير'],
-                  'code': 'MW',
+                  'alpha-2-code': 'MW',
                   'continent': 'إفريقيا',
                   'name': 'ملاوي',
                   'capital': 'ليلونغوي'},
@@ -620,126 +620,126 @@ class Provider(DateTimeProvider):
                                 'أمريكا/شيواوا',
                                 'أمريكا/ارموسييو_سونورا',
                                 'أمريكا/تيخوانا'],
-                  'code': 'MX',
+                  'alpha-2-code': 'MX',
                   'continent': 'أمريكا الشمالية',
                   'name': 'المكسيك',
                   'capital': 'ميكسيكو سيتي§'},
                  {'timezones': ['آسيا/كوالا_لامبور',
                                 'آسيا/Kuching'],
-                  'code': 'MY',
+                  'alpha-2-code': 'MY',
                   'continent': 'آسيا',
                   'name': 'ماليزيا',
                   'capital': 'كوالا لامبور'},
                  {'timezones': ['إفريقيا/مابوتو'],
-                  'code': 'MZ',
+                  'alpha-2-code': 'MZ',
                   'continent': 'إفريقيا',
                   'name': 'موزمبيق',
                   'capital': 'مابوتو'},
                  {'timezones': ['إفريقيا/ويندهوك'],
-                  'code': 'NA',
+                  'alpha-2-code': 'NA',
                   'continent': 'إفريقيا',
                   'name': 'ناميبيا',
                   'capital': 'ويندهوك'},
                  {'timezones': ['إفريقيا/نيامي'],
-                  'code': 'NE',
+                  'alpha-2-code': 'NE',
                   'continent': 'إفريقيا',
                   'name': 'النيجر',
                   'capital': 'نيامي'},
                  {'timezones': ['إفريقيا/لاغوس'],
-                  'code': 'NG',
+                  'alpha-2-code': 'NG',
                   'continent': 'إفريقيا',
                   'name': 'نيجيريا',
                   'capital': 'أبوجا'},
                  {'timezones': ['أمريكا/ماناغوا'],
-                  'code': 'NI',
+                  'alpha-2-code': 'NI',
                   'continent': 'أمريكا الشمالية',
                   'name': 'نيكاراغوا',
                   'capital': 'ماناغوا'},
                  {'timezones': ['أوروبا/أمستردام'],
-                  'code': 'NL',
+                  'alpha-2-code': 'NL',
                   'continent': 'أوروبا',
                   'name': 'هولندا',
                   'capital': 'أمستردام'},
                  {'timezones': ['أوروبا/أوسلو'],
-                  'code': 'NO',
+                  'alpha-2-code': 'NO',
                   'continent': 'أوروبا',
                   'name': 'النرويج',
                   'capital': 'أوسلو'},
                  {'timezones': ['آسيا/كاتماندو'],
-                  'code': 'NP',
+                  'alpha-2-code': 'NP',
                   'continent': 'آسيا',
                   'name': 'النيبال',
                   'capital': 'كاتماندو'},
                  {'timezones': ['المحيط_الهاديء/ناورو'],
-                  'code': 'NR',
+                  'alpha-2-code': 'NR',
                   'continent': 'أوقيانوسيا',
                   'name': 'ناورو',
                   'capital': 'يارين'},
                  {'timezones': ['المحيط_الهاديء/أوكلاند',
                                 'المحيط_الهاديء/تشاتهام'],
-                  'code': 'NZ',
+                  'alpha-2-code': 'NZ',
                   'continent': 'أوقيانوسيا',
                   'name': 'نيوزيلاندا',
                   'capital': 'ويلينغتون'},
                  {'timezones': ['آسيا/مسقط'],
-                  'code': 'OM',
+                  'alpha-2-code': 'OM',
                   'continent': 'آسيا',
                   'name': 'عمان',
                   'capital': 'مسقط'},
                  {'timezones': ['أمريكا/بنما'],
-                  'code': 'PA',
+                  'alpha-2-code': 'PA',
                   'continent': 'أمريكا الشمالية',
                   'name': 'بنما',
                   'capital': 'بنما'},
                  {'timezones': ['أمريكا/ليما'],
-                  'code': 'PE',
+                  'alpha-2-code': 'PE',
                   'continent': 'أمريكا الجنوبية',
                   'name': 'البيرو',
                   'capital': 'ليما'},
                  {'timezones': ['المحيط_الهاديء/بورت_مورسبي'],
-                  'code': 'PG',
+                  'alpha-2-code': 'PG',
                   'continent': 'أوقيانوسيا',
                   'name': 'بابوا غينيا الجديدة',
                   'capital': 'بورت مورسبي'},
                  {'timezones': ['آسيا/مانيلا'],
-                  'code': 'PH',
+                  'alpha-2-code': 'PH',
                   'continent': 'آسيا',
                   'name': 'الفيليبين',
                   'capital': 'مانيلا'},
                  {'timezones': ['آسيا/كاراتشي'],
-                  'code': 'PK',
+                  'alpha-2-code': 'PK',
                   'continent': 'آسيا',
                   'name': 'باكستان',
                   'capital': 'إسلام أباد'},
                  {'timezones': ['أوروبا/وارسو'],
-                  'code': 'PL',
+                  'alpha-2-code': 'PL',
                   'continent': 'أوروبا',
                   'name': 'بولندا',
                   'capital': 'وارسو'},
                  {'timezones': ['أوروبا/لشبونة',
                                 'الأطلنطي/ماديرا',
                                 'الأطلنطي/الأزور'],
-                  'code': 'PT',
+                  'alpha-2-code': 'PT',
                   'continent': 'أوروبا',
                   'name': 'البرتغال',
                   'capital': 'لشبونة'},
                  {'timezones': ['المحيط_الهاديء/بالاو'],
-                  'code': 'PW',
+                  'alpha-2-code': 'PW',
                   'continent': 'أوقيانوسيا',
                   'name': 'بالاو',
                   'capital': 'نجيرولمد'},
                  {'timezones': ['أمريكا/أسونسيون'],
-                  'code': 'PY',
+                  'alpha-2-code': 'PY',
                   'continent': 'أمريكا الجنوبية',
                   'name': 'بابرغوي',
                   'capital': 'أسونسيون'},
                  {'timezones': ['آسيا/قطر'],
-                  'code': 'QA',
+                  'alpha-2-code': 'QA',
                   'continent': 'آسيا',
                   'name': 'قطر',
                   'capital': 'الدوحة'},
                  {'timezones': ['أوروبا/بوخارست'],
-                  'code': 'RO',
+                  'alpha-2-code': 'RO',
                   'continent': 'أوروبا',
                   'name': 'رومانيا',
                   'capital': 'بوخارست'},
@@ -758,137 +758,137 @@ class Provider(DateTimeProvider):
                                 'آسيا/ماغادان',
                                 'آسيا/كامشتكا',
                                 'آسيا/أنادير'],
-                  'code': 'RU',
+                  'alpha-2-code': 'RU',
                   'continent': 'أوروبا',
                   'name': 'روسيا',
                   'capital': 'موسكو'},
                  {'timezones': ['إفريقيا/كيغالي'],
-                  'code': 'RW',
+                  'alpha-2-code': 'RW',
                   'continent': 'إفريقيا',
                   'name': 'رواندا',
                   'capital': 'كيغالي'},
                  {'timezones': ['آسيا/الرياض'],
-                  'code': 'SA',
+                  'alpha-2-code': 'SA',
                   'continent': 'آسيا',
                   'name': 'المملكة العربية السعودية',
                   'capital': 'الرياض'},
                  {'timezones': ['المحيط_الهاديء/غوادالكانال'],
-                  'code': 'SB',
+                  'alpha-2-code': 'SB',
                   'continent': 'أوقيانوسيا',
                   'name': 'جزر سولمون',
                   'capital': 'هونيارا'},
                  {'timezones': ['الهندي/ماهي'],
-                  'code': 'SC',
+                  'alpha-2-code': 'SC',
                   'continent': 'إفريقيا',
                   'name': 'سيشل',
                   'capital': 'فيكتوريا'},
                  {'timezones': ['إفريقيا/الخرطوم'],
-                  'code': 'SD',
+                  'alpha-2-code': 'SD',
                   'continent': 'إفريقيا',
                   'name': 'السودان',
                   'capital': 'الخرطوم'},
                  {'timezones': ['أوروبا/ستوكهولم'],
-                  'code': 'SE',
+                  'alpha-2-code': 'SE',
                   'continent':'أوروبا',
                   'name': 'السويد',
                   'capital': 'ستوكهولم'},
                  {'timezones': ['آسيا/سنغافورة'],
-                  'code': 'SG',
+                  'alpha-2-code': 'SG',
                   'continent': 'آسيا',
                   'name': 'سنغافورة',
                   'capital': 'سنغافورة'},
                  {'timezones': ['أوروبا/ليوبليانا'],
-                  'code': 'SI',
+                  'alpha-2-code': 'SI',
                   'continent': 'أوروبا',
                   'name': 'سلوفانيا',
                   'capital': 'ليوبليانا'},
                  {'timezones': ['أوروبا/براتيسلافا'],
-                  'code': 'SK',
+                  'alpha-2-code': 'SK',
                   'continent': 'أوروبا',
                   'name': 'سلوفاكيا',
                   'capital': 'براتيسلافا'},
                  {'timezones': ['إفريقيا/فريتاون'],
-                  'code': 'SL',
+                  'alpha-2-code': 'SL',
                   'continent': 'إفريقيا',
                   'name': 'سيراليون',
                   'capital': 'فريتاون'},
                  {'timezones': ['أوروبا/سان_مارينو'],
-                  'code': 'SM',
+                  'alpha-2-code': 'SM',
                   'continent': 'أوروبا',
                   'name': 'جمهورية سان مارينو',
                   'capital': 'سان مارينو'},
                  {'timezones': ['إفريقيا/داكار'],
-                  'code': 'SN',
+                  'alpha-2-code': 'SN',
                   'continent': 'إفريقيا',
                   'name': 'السنغال',
                   'capital': 'داكار'},
                  {'timezones': ['إفريقيا/مقديشو'],
-                  'code': 'SO',
+                  'alpha-2-code': 'SO',
                   'continent': 'إفريقيا',
                   'name': 'الصومال',
                   'capital': 'مقديشو'},
                  {'timezones': ['أمريكا/باراماريبو'],
-                  'code': 'SR',
+                  'alpha-2-code': 'SR',
                   'continent': 'أمريكا الجنوبية',
                   'name': 'Suriname',
                   'capital': 'باراماريبو'},
                  {'timezones': ['إفريقيا/ساو_تومي'],
-                  'code': 'ST',
+                  'alpha-2-code': 'ST',
                   'continent': 'إفريقيا',
                   'name': ' ساو تومي وبرينسيب',
                   'capital': 'ساو تومي'},
                  {'timezones': ['آسيا/دممشق'],
-                  'code': 'SY',
+                  'alpha-2-code': 'SY',
                   'continent': 'آسيا',
                   'name': 'سوريا',
                   'capital': 'دمشق'},
                  {'timezones': ['إفريقيا/لومي'],
-                  'code': 'TG',
+                  'alpha-2-code': 'TG',
                   'continent': 'إفريقيا',
                   'name': 'توغو',
                   'capital': 'لومي'},
                  {'timezones': ['آسيا/بانغوك'],
-                  'code': 'TH',
+                  'alpha-2-code': 'TH',
                   'continent': 'آسيا',
                   'name': 'تايلند',
                   'capital': 'بناغوك'},
                  {'timezones': ['آسيا/دوشنبه'],
-                  'code': 'TJ',
+                  'alpha-2-code': 'TJ',
                   'continent': 'آسيا',
                   'name': 'طاجكيستان',
                   'capital': 'دوشنبه'},
                  {'timezones': ['آسيا/عشق_آباد'],
-                  'code': 'TM',
+                  'alpha-2-code': 'TM',
                   'continent': 'آسيا',
                   'name': 'تركمانستان',
                   'capital': 'عشق آباد'},
                  {'timezones': ['إفريقيا/تونس'],
-                  'code': 'TN',
+                  'alpha-2-code': 'TN',
                   'continent': 'إفريقيا',
                   'name': 'تونس',
                   'capital': 'تونس'},
                  {'timezones': ['المحيط_الهاديء/تونغاتابو'],
-                  'code': 'TO',
+                  'alpha-2-code': 'TO',
                   'continent': 'أوقيانوسيا',
                   'name': 'تونغا',
                   'capital': 'نوكو ألوفا'},
                  {'timezones': ['أوروبا/إسطنبول'],
-                  'code': 'TR',
+                  'alpha-2-code': 'TR',
                   'continent': 'آسيا',
                   'name': 'تركيا',
                   'capital': 'أنقرة'},
                  {'timezones': ['أمريكا/بورت_أوف_سبين'],
-                  'code': 'TT',
+                  'alpha-2-code': 'TT',
                   'continent': 'أمريكا الشمالية',
                   'name': 'ترينيداد وتوباغو',
                   'capital': 'بورت أوف سبين'},
                  {'timezones': ['المحيط_الهاديء/فونافوتي'],
-                  'code': 'TV',
+                  'alpha-2-code': 'TV',
                   'continent': 'أوقيانوسيا',
                   'name': 'توفالو',
                   'capital': 'فونافوتي'},
                  {'timezones': ['إفريقيا/دار_السلام'],
-                  'code': 'TZ',
+                  'alpha-2-code': 'TZ',
                   'continent': 'إفريقيا',
                   'name': 'تانزانيا',
                   'capital': 'دودوما'},
@@ -896,12 +896,12 @@ class Provider(DateTimeProvider):
                                 'أوروبا/أوجهورود',
                                 'أوروبا/زاباروجيا',
                                 'أوروبا/سيمفروبول'],
-                  'code': 'UA',
+                  'alpha-2-code': 'UA',
                   'continent': 'أوروبا',
                   'name': 'أوكرانيا',
                   'capital': 'كييف'},
                  {'timezones': ['إفريقيا/كامبالا'],
-                  'code': 'UG',
+                  'alpha-2-code': 'UG',
                   'continent': 'إفريقيا',
                   'name': 'أوغندا',
                   'capital': 'كامبالا'},
@@ -930,108 +930,108 @@ class Provider(DateTimeProvider):
                                 'أمريكا/نوم',
                                 'أمريكا/أداك',
                                 'المحيط_الهاديء/هونولولو'],
-                  'code': 'US',
+                  'alpha-2-code': 'US',
                   'continent': 'أمريكا الشمالية',
                   'name': 'الولايات المتحدة الأمريكية',
                   'capital': 'واشنطن'},
                  {'timezones': ['أمريكا/مونتفيدو'],
-                  'code': 'UY',
+                  'alpha-2-code': 'UY',
                   'continent': 'أمريكا الجنوبية',
                   'name': 'أوروغواي',
                   'capital': 'مونتفيدو'},
                  {'timezones': ['آسيا/سمرقند',
                                 'آسيا/طشقند'],
-                  'code': 'UZ',
+                  'alpha-2-code': 'UZ',
                   'continent': 'آسيا',
                   'name': 'أوزبكستان',
                   'capital': 'طشقند'},
                  {'timezones': ['أوروبا/الفاتيكان'],
-                  'code': 'VA',
+                  'alpha-2-code': 'VA',
                   'continent': 'أوروبا',
                   'name': 'الفاتيكان',
                   'capital': 'الفاتيكان'},
                  {'timezones': ['أمريكا/كاركاس'],
-                  'code': 'VE',
+                  'alpha-2-code': 'VE',
                   'continent': 'أمريكا الجنوبية',
                   'name': 'فنزويلا',
                   'capital': 'كاركاس'},
                  {'timezones': ['آسيا/سايغون'],
-                  'code': 'VN',
+                  'alpha-2-code': 'VN',
                   'continent': 'آسيا',
                   'name': 'فيتنام',
                   'capital': 'هانوي'},
                  {'timezones': ['المحيط_الهاديء/أيفاتي'],
-                  'code': 'VU',
+                  'alpha-2-code': 'VU',
                   'continent': 'أوقيانوسيا',
                   'name': 'فانواتو',
                   'capital': 'بورت فيلا'},
                  {'timezones': ['آسيا/عدن'],
-                  'code': 'YE',
+                  'alpha-2-code': 'YE',
                   'continent': 'آسيا',
                   'name': 'اليمن',
                   'capital': "صنعاء"},
                  {'timezones': ['إفريقيا/لوساكا'],
-                  'code': 'ZM',
+                  'alpha-2-code': 'ZM',
                   'continent': 'إفريقيا',
                   'name': 'زامبيا',
                   'capital': 'لوساكا'},
                  {'timezones': ['إفريقيا/هراري'],
-                  'code': 'ZW',
+                  'alpha-2-code': 'ZW',
                   'continent': 'إفريقيا',
                   'name': 'زيمبابوي',
                   'capital': 'هراري'},
                  {'timezones': ['إفريقيا/الجزائر'],
-                  'code': 'DZ',
+                  'alpha-2-code': 'DZ',
                   'continent': 'إفريقيا',
                   'name': 'الجزائر',
                   'capital': 'الجزائر'},
                  {'timezones': ['أوروبا/سراييفو'],
-                  'code': 'BA',
+                  'alpha-2-code': 'BA',
                   'continent': 'أوروبا',
                   'name': 'البوسنة والهرسك',
                   'capital': 'سراييفو'},
                  {'timezones': ['آسيا/بنوم_بنه'],
-                  'code': 'KH',
+                  'alpha-2-code': 'KH',
                   'continent': 'آسيا',
                   'name': 'كمبوديا',
                   'capital': 'بنوم بنه'},
                  {'timezones': ['إفريقيا/بانغي'],
-                  'code': 'CF',
+                  'alpha-2-code': 'CF',
                   'continent': 'إفريقيا',
                   'name': 'جمهورية أفريقيا الوسطى',
                   'capital': 'بانغي'},
                  {'timezones': ['إفريقيا/نجامينا'],
-                  'code': 'TD',
+                  'alpha-2-code': 'TD',
                   'continent': 'إفريقيا',
                   'name': 'تشاد',
                   'capital': "نجامينا"},
                  {'timezones': ['الهندي/كومورو'],
-                  'code': 'KM',
+                  'alpha-2-code': 'KM',
                   'continent': 'إفريقيا',
                   'name': 'جزر القمر',
                   'capital': 'موروني'},
                  {'timezones': ['أوروبا/زغرب'],
-                  'code': 'HR',
+                  'alpha-2-code': 'HR',
                   'continent': 'أوروبا',
                   'name': 'كرواتيا',
                   'capital': 'زغرب'},
                  {'timezones': ['آسيا/ديلي'],
-                  'code': 'TL',
+                  'alpha-2-code': 'TL',
                   'continent': 'آسيا',
                   'name': 'تيمور الشرقية',
                   'capital': 'ديلي'},
                  {'timezones': ['أمريكا/السلفادور'],
-                  'code': 'SV',
+                  'alpha-2-code': 'SV',
                   'continent': 'أمريكا الشمالية',
                   'name': 'السلفادور',
                   'capital': 'سان سلفادور'},
                  {'timezones': ['إفريقيا/مالابو'],
-                  'code': 'GQ',
+                  'alpha-2-code': 'GQ',
                   'continent': 'إفريقيا',
                   'name': 'غينيا الاستوائية',
                   'capital': 'مالابو'},
                  {'timezones': ['أمريكا/غرينادا'],
-                  'code': 'GD',
+                  'alpha-2-code': 'GD',
                   'continent': 'أمريكا الشمالية',
                   'name': 'غرينادا',
                   'capital': "سانت جورجز"},
@@ -1040,101 +1040,101 @@ class Provider(DateTimeProvider):
                                 'آسيا/أقتوبي',
                                 'آسيا/أقتاو',
                                 'آسيا/أورال'],
-                  'code': 'KZ',
+                  'alpha-2-code': 'KZ',
                   'continent': 'آسيا',
                   'name': 'كازاخستان',
                   'capital': 'أستانة'},
                  {'timezones': ['آسيا/فيينتيان'],
-                  'code': 'LA',
+                  'alpha-2-code': 'LA',
                   'continent': 'آسيا',
                   'name': 'لاوس',
                   'capital': 'فيينتيان'},
                  {'timezones': ['المحيط_الهاديء/تشوك',
                                 'المحيط_الهاديء/بونابي',
                                 'المحيط_الهاديء/كورساي'],
-                  'code': 'FM',
+                  'alpha-2-code': 'FM',
                   'continent': 'أوقيانوسيا',
                   'name': 'ولايات ميكرونيسيا المتحدة',
                   'capital': 'باليكير'},
                  {'timezones': ['أوروبا/كيشيناو'],
-                  'code': 'MD',
+                  'alpha-2-code': 'MD',
                   'continent': 'أوروبا',
                   'name': 'مولدافيا',
                   'capital': 'كيشيناو'},
                  {'timezones': ['أوروبا/موناكو'],
-                  'code': 'MC',
+                  'alpha-2-code': 'MC',
                   'continent': 'أوروبا',
                   'name': 'موناكو',
                   'capital': 'موناكو'},
                  {'timezones': ['أوروبا/بودغوريتسا'],
-                  'code': 'ME',
+                  'alpha-2-code': 'ME',
                   'continent': 'أوروبا',
                   'name': 'الجبل الأسود',
                   'capital': 'بودغوريتسا'},
                  {'timezones': ['إفريقيا/الدار_البيضاء'],
-                  'code': 'MA',
+                  'alpha-2-code': 'MA',
                   'continent': 'إفريقيا',
                   'name': 'المغرب',
                   'capital': 'الرباط'},
                  {'timezones': ['أمريكا/سانت_كيتس'],
-                  'code': 'KN',
+                  'alpha-2-code': 'KN',
                   'continent': 'أمريكا الشمالية',
                   'name': 'سانت كيتس ونيفيس',
                   'capital': 'باستير'},
                  {'timezones': ['أمريكا/سانت_لوسيا'],
-                  'code': 'LC',
+                  'alpha-2-code': 'LC',
                   'continent': 'أمريكا الشمالية',
                   'name': 'سانت لوسيا',
                   'capital': 'كاستريس'},
                  {'timezones': ['أمريكا/سينت_فينسينت'],
-                  'code': 'VC',
+                  'alpha-2-code': 'VC',
                   'continent': 'أمريكا الشمالية',
                   'name': 'سانت فينسنت والغرينادين',
                   'capital': 'كينغستاون'},
                  {'timezones': ['المحيط_الهاديء/أبيا'],
-                  'code': 'WS',
+                  'alpha-2-code': 'WS',
                   'continent': 'أوقيانوسيا',
                   'name': 'ساموا',
                   'capital': 'أبيا'},
                  {'timezones': ['أوروبا/بلغراد'],
-                  'code': 'RS',
+                  'alpha-2-code': 'RS',
                   'continent': 'أوروبا',
                   'name': 'صربيا',
                   'capital': 'بلغراد'},
                  {'timezones': ['إفريقيا/جوهانسبرغ'],
-                  'code': 'ZA',
+                  'alpha-2-code': 'ZA',
                   'continent': 'إفريقيا',
                   'name': 'جنوب إفريقيا',
                   'capital': 'بريتوريا'},
                  {'timezones': ['أوروبا/مدريد',
                                 'إفريقيا/سبتة',
                                 'الأطلنطي/الكناري'],
-                  'code': 'ES',
+                  'alpha-2-code': 'ES',
                   'continent': 'أوروبا',
                   'name': 'إسبانيا',
                   'capital': 'مدريد'},
                  {'timezones': ['آسيا/كولمبو'],
-                  'code': 'LK',
+                  'alpha-2-code': 'LK',
                   'continent': 'آسيا',
                   'name': 'سريلانكا',
                   'capital': 'سري جاياواردنابورا كوتي'},
                  {'timezones': ['إفريقيا/مبابان'],
-                  'code': 'SZ',
+                  'alpha-2-code': 'SZ',
                   'continent': 'إفريقيا',
                   'name': 'سوازيلاند',
                   'capital': 'مبابان'},
                  {'timezones': ['أوروبا/زيورخ'],
-                  'code': 'CH',
+                  'alpha-2-code': 'CH',
                   'continent': 'أوروبا',
                   'name': 'سويسرا',
                   'capital': 'برن'},
                  {'timezones': ['آسيا/دبي'],
-                  'code': 'AE',
+                  'alpha-2-code': 'AE',
                   'continent': 'آسيا',
                   'name': 'الإمارات العربية المتحدة',
                   'capital': 'أبو ظبي'},
                  {'timezones': ['أوروبا/لندن'],
-                  'code': 'GB',
+                  'alpha-2-code': 'GB',
                   'continent': 'أوروبا',
                   'name': 'المملكة المتحدة',
                   'capital': 'لندن'},


Test patch:
diff --git a/tests/providers/test_address.py b/tests/providers/test_address.py
index 5286cd36..e7385664 100644
--- a/tests/providers/test_address.py
+++ b/tests/providers/test_address.py
@@ -22,6 +22,58 @@ from faker.providers.address.ne_NP import Provider as NeProvider
 from six import string_types
 
 
+class TestBaseProvider(unittest.TestCase):
+    """ Tests addresses in the base provider """
+
+    def setUp(self):
+        self.factory = Faker('')
+
+    def test_alpha_2_country_codes(self):
+        country_code = Faker().country_code(representation='alpha-2')
+        assert len(country_code) == 2
+        assert country_code.isalpha()
+
+    def test_alpha_2_country_codes_as_default(self):
+        country_code = Faker().country_code()
+        assert len(country_code) == 2
+        assert country_code.isalpha()
+
+    def test_alpha_3_country_codes(self):
+        country_code = Faker().country_code(representation='alpha-3')
+        assert len(country_code) == 3
+        assert country_code.isalpha()
+
+    def test_bad_country_code_representation(self):
+        with self.assertRaises(ValueError):
+            country_code = Faker().country_code(representation='hello')
+
+
+class TestAr_AA(unittest.TestCase):
+    """ Tests addresses in the ar_AA locale """
+
+    def setUp(self):
+        self.factory = Faker('ar_AA')
+
+    def test_alpha_2_country_codes(self):
+        country_code = Faker().country_code(representation='alpha-2')
+        assert len(country_code) == 2
+        assert country_code.isalpha()
+
+    def test_alpha_2_country_codes_as_default(self):
+        country_code = Faker().country_code()
+        assert len(country_code) == 2
+        assert country_code.isalpha()
+
+    def test_alpha_3_country_codes(self):
+        country_code = Faker().country_code(representation='alpha-3')
+        assert len(country_code) == 3
+        assert country_code.isalpha()
+
+    def test_bad_country_code_representation(self):
+        with self.assertRaises(ValueError):
+            country_code = Faker().country_code(representation='hello')
+
+
 class TestDeAT(unittest.TestCase):
     """ Tests in addresses in the de_AT locale """