Skip to content

Commit 49bf2f3

Browse files
committed
Add missing ISO alphabetic country codes
1 parent 22786cc commit 49bf2f3

2 files changed

Lines changed: 39 additions & 15 deletions

File tree

‎src/validators/country.py‎

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@
66
# fmt: off
77
_alpha3_to_alpha2 = {
88
# A
9-
"ABW": "AW", "AFG": "AF", "AGO": "AO", "AIA": "AI", "ALB": "AL", "AND": "AD", "ANT": "AN",
10-
"ARE": "AE", "ARG": "AR", "ARM": "AM", "ASM": "AS", "ATA": "AQ", "ATF": "TF", "ATG": "AG",
11-
"AUS": "AU", "AUT": "AT", "AZE": "AZ",
9+
"ABW": "AW", "AFG": "AF", "AGO": "AO", "AIA": "AI", "ALA": "AX", "ALB": "AL", "AND": "AD",
10+
"ANT": "AN", "ARE": "AE", "ARG": "AR", "ARM": "AM", "ASM": "AS", "ATA": "AQ", "ATF": "TF",
11+
"ATG": "AG", "AUS": "AU", "AUT": "AT", "AZE": "AZ",
1212
# B
13-
"BDI": "BI", "BEL": "BE", "BEN": "BJ", "BFA": "BF", "BGD": "BD", "BGR": "BG", "BHR": "BH",
14-
"BHS": "BS", "BIH": "BA", "BLR": "BY", "BLZ": "BZ", "BMU": "BM", "BOL": "BO", "BRA": "BR",
15-
"BRB": "BB", "BRN": "BN", "BTN": "BT", "BVT": "BV", "BWA": "BW",
13+
"BDI": "BI", "BEL": "BE", "BEN": "BJ", "BES": "BQ", "BFA": "BF", "BGD": "BD", "BGR": "BG",
14+
"BHR": "BH", "BHS": "BS", "BIH": "BA", "BLM": "BL", "BLR": "BY", "BLZ": "BZ", "BMU": "BM",
15+
"BOL": "BO", "BRA": "BR", "BRB": "BB", "BRN": "BN", "BTN": "BT", "BVT": "BV", "BWA": "BW",
1616
# C
17-
"CAF": "CF", "CAN": "CA", "CCK": "CC", "CHE": "CH", "CHL": "CL", "CHN": "CN", "CMR": "CM",
18-
"COD": "CD", "COG": "CG", "COK": "CK", "COL": "CO", "COM": "KM", "CPV": "CV", "CRI": "CR",
19-
"CUB": "CU", "CXR": "CX", "CYM": "KY", "CYP": "CY", "CZE": "CZ",
17+
"CAF": "CF", "CAN": "CA", "CCK": "CC", "CHE": "CH", "CHL": "CL", "CHN": "CN", "CIV": "CI",
18+
"CMR": "CM", "COD": "CD", "COG": "CG", "COK": "CK", "COL": "CO", "COM": "KM", "CPV": "CV",
19+
"CRI": "CR", "CUB": "CU", "CUW": "CW", "CXR": "CX", "CYM": "KY", "CYP": "CY", "CZE": "CZ",
2020
# D
2121
"DEU": "DE", "DJI": "DJ", "DMA": "DM", "DNK": "DK", "DOM": "DO", "DZA": "DZ",
2222
# E
@@ -41,10 +41,10 @@
4141
"LAO": "LA", "LBN": "LB", "LBR": "LR", "LBY": "LY", "LCA": "LC", "LIE": "LI", "LKA": "LK",
4242
"LSO": "LS", "LTU": "LT", "LUX": "LU", "LVA": "LV",
4343
# M
44-
"MAC": "MO", "MAR": "MA", "MCO": "MC", "MDA": "MD", "MDG": "MG", "MDV": "MV", "MEX": "MX",
45-
"MHL": "MH", "MKD": "MK", "MLI": "ML", "MLT": "MT", "MMR": "MM", "MNE": "ME", "MNG": "MN",
46-
"MNP": "MP", "MOZ": "MZ", "MRT": "MR", "MSR": "MS", "MTQ": "MQ", "MUS": "MU", "MWI": "MW",
47-
"MYS": "MY", "MYT": "YT",
44+
"MAC": "MO", "MAF": "MF", "MAR": "MA", "MCO": "MC", "MDA": "MD", "MDG": "MG", "MDV": "MV",
45+
"MEX": "MX", "MHL": "MH", "MKD": "MK", "MLI": "ML", "MLT": "MT", "MMR": "MM", "MNE": "ME",
46+
"MNG": "MN", "MNP": "MP", "MOZ": "MZ", "MRT": "MR", "MSR": "MS", "MTQ": "MQ", "MUS": "MU",
47+
"MWI": "MW", "MYS": "MY", "MYT": "YT",
4848
# N
4949
"NAM": "NA", "NCL": "NC", "NER": "NE", "NFK": "NF", "NGA": "NG", "NIC": "NI", "NIU": "NU",
5050
"NLD": "NL", "NOR": "NO", "NPL": "NP", "NRU": "NR", "NZL": "NZ",
@@ -60,8 +60,8 @@
6060
# S
6161
"SAU": "SA", "SDN": "SD", "SEN": "SN", "SGP": "SG", "SGS": "GS", "SHN": "SH", "SJM": "SJ",
6262
"SLB": "SB", "SLE": "SL", "SLV": "SV", "SMR": "SM", "SOM": "SO", "SPM": "PM", "SRB": "RS",
63-
"STP": "ST", "SUR": "SR", "SVK": "SK", "SVN": "SI", "SWE": "SE", "SWZ": "SZ", "SYC": "SC",
64-
"SYR": "SY",
63+
"SSD": "SS", "STP": "ST", "SUR": "SR", "SVK": "SK", "SVN": "SI", "SWE": "SE", "SWZ": "SZ",
64+
"SXM": "SX", "SYC": "SC", "SYR": "SY",
6565
# T
6666
"TCA": "TC", "TCD": "TD", "TGO": "TG", "THA": "TH", "TJK": "TJ", "TKL": "TK", "TKM": "TM",
6767
"TLS": "TL", "TON": "TO", "TTO": "TT", "TUN": "TN", "TUR": "TR", "TUV": "TV", "TWN": "TW",

‎tests/test_country.py‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,30 @@
77
from validators import ValidationError, calling_code, country_code, currency
88

99

10+
@pytest.mark.parametrize(
11+
("alpha2", "alpha3", "numeric"),
12+
[
13+
("AX", "ALA", "248"),
14+
("BQ", "BES", "535"),
15+
("BL", "BLM", "652"),
16+
("CI", "CIV", "384"),
17+
("CW", "CUW", "531"),
18+
("MF", "MAF", "663"),
19+
("SS", "SSD", "728"),
20+
("SX", "SXM", "534"),
21+
],
22+
)
23+
def test_missing_alpha_codes_match_existing_numeric_codes(alpha2: str, alpha3: str, numeric: str):
24+
"""Accept alphabetic codes for countries already supported in numeric form."""
25+
assert country_code(numeric, iso_format="numeric") is True
26+
for value, iso_format in ((alpha2, "alpha2"), (alpha3, "alpha3")):
27+
assert country_code(value, iso_format=iso_format) is True
28+
assert country_code(value) is True
29+
assert country_code(value.lower(), iso_format=iso_format, ignore_case=True) is True
30+
assert country_code(value.lower(), ignore_case=True) is True
31+
assert isinstance(country_code(value.lower()), ValidationError)
32+
33+
1034
@pytest.mark.parametrize(("value"), ["+1", "+371"])
1135
def test_returns_true_on_valid_calling_code(value: str):
1236
"""Test returns true on valid calling code."""

0 commit comments

Comments
 (0)