kamau1's picture
feat: add complete Kenya regions data layer, validation, and location API endpoints; remove outdated tests
6c59dab
"""
Kenya Administrative Regions
47 Counties with 290+ Sub-Counties
Data source: Official Kenyan government administrative boundaries (2024)
Sub-county codes format: COUNTY_CODE-SUBCOUNTY_ABBREV
Example: 47-EMB-E = Nairobi (47) - Embakasi East
"""
from typing import List
from app.data.regions import County, SubCounty
KENYA_REGIONS: List[County] = [
County(
name="Mombasa",
code=1,
capital="Mombasa City",
sub_counties=[
SubCounty(name="Changamwe", code="1-CHA"),
SubCounty(name="Jomvu", code="1-JOM"),
SubCounty(name="Kisauni", code="1-KIS"),
SubCounty(name="Likoni", code="1-LIK"),
SubCounty(name="Mvita", code="1-MVI"),
SubCounty(name="Nyali", code="1-NYA"),
]
),
County(
name="Kwale",
code=2,
capital="Kwale",
sub_counties=[
SubCounty(name="Kinango", code="2-KIN"),
SubCounty(name="Lungalunga", code="2-LUN"),
SubCounty(name="Msambweni", code="2-MSA"),
SubCounty(name="Matuga", code="2-MAT"),
]
),
County(
name="Kilifi",
code=3,
capital="Kilifi",
sub_counties=[
SubCounty(name="Ganze", code="3-GAN"),
SubCounty(name="Kaloleni", code="3-KAL"),
SubCounty(name="Kilifi North", code="3-KLN"),
SubCounty(name="Kilifi South", code="3-KLS"),
SubCounty(name="Magarini", code="3-MAG"),
SubCounty(name="Malindi", code="3-MAL"),
SubCounty(name="Rabai", code="3-RAB"),
]
),
County(
name="Tana River",
code=4,
capital="Hola",
sub_counties=[
SubCounty(name="Bura", code="4-BUR"),
SubCounty(name="Galole", code="4-GAL"),
SubCounty(name="Garsen", code="4-GAR"),
]
),
County(
name="Lamu",
code=5,
capital="Lamu",
sub_counties=[
SubCounty(name="Lamu East", code="5-LAE"),
SubCounty(name="Lamu West", code="5-LAW"),
]
),
County(
name="Taita-Taveta",
code=6,
capital="Voi",
sub_counties=[
SubCounty(name="Mwatate", code="6-MWA"),
SubCounty(name="Taveta", code="6-TAV"),
SubCounty(name="Voi", code="6-VOI"),
SubCounty(name="Wundanyi", code="6-WUN"),
]
),
County(
name="Garissa",
code=7,
capital="Garissa",
sub_counties=[
SubCounty(name="Daadab", code="7-DAA"),
SubCounty(name="Fafi", code="7-FAF"),
SubCounty(name="Garissa", code="7-GAR"),
SubCounty(name="Hulugho", code="7-HUL"),
SubCounty(name="Ijara", code="7-IJA"),
SubCounty(name="Lagdera Balambala", code="7-LAG"),
]
),
County(
name="Wajir",
code=8,
capital="Wajir",
sub_counties=[
SubCounty(name="Eldas", code="8-ELD"),
SubCounty(name="Tarbaj", code="8-TAR"),
SubCounty(name="Wajir East", code="8-WAE"),
SubCounty(name="Wajir North", code="8-WAN"),
SubCounty(name="Wajir South", code="8-WAS"),
SubCounty(name="Wajir West", code="8-WAW"),
]
),
County(
name="Mandera",
code=9,
capital="Mandera",
sub_counties=[
SubCounty(name="Banissa", code="9-BAN"),
SubCounty(name="Lafey", code="9-LAF"),
SubCounty(name="Mandera East", code="9-MAE"),
SubCounty(name="Mandera North", code="9-MAN"),
SubCounty(name="Mandera South", code="9-MAS"),
SubCounty(name="Mandera West", code="9-MAW"),
]
),
County(
name="Marsabit",
code=10,
capital="Marsabit",
sub_counties=[
SubCounty(name="Laisamis", code="10-LAI"),
SubCounty(name="Moyale", code="10-MOY"),
SubCounty(name="North Hor", code="10-NHO"),
SubCounty(name="Saku", code="10-SAK"),
]
),
County(
name="Isiolo",
code=11,
capital="Isiolo",
sub_counties=[
SubCounty(name="Isiolo", code="11-ISI"),
SubCounty(name="Garba Tulla", code="11-GAR"),
SubCounty(name="Merit", code="11-MER"),
]
),
County(
name="Meru",
code=12,
capital="Meru",
sub_counties=[
SubCounty(name="Buuri", code="12-BUU"),
SubCounty(name="Igembe Central", code="12-IGC"),
SubCounty(name="Igembe North", code="12-IGN"),
SubCounty(name="Igembe South", code="12-IGS"),
SubCounty(name="Imenti Central", code="12-IMC"),
SubCounty(name="Imenti North", code="12-IMN"),
SubCounty(name="Imenti South", code="12-IMS"),
SubCounty(name="Tigania East", code="12-TIE"),
SubCounty(name="Tigania West", code="12-TIW"),
]
),
County(
name="Tharaka-Nithi",
code=13,
capital="Chuka",
sub_counties=[
SubCounty(name="Chuka", code="13-CHU"),
SubCounty(name="Igambangobe", code="13-IGA"),
SubCounty(name="Maara", code="13-MAA"),
SubCounty(name="Muthambi", code="13-MUT"),
SubCounty(name="Tharaka North", code="13-THN"),
SubCounty(name="Tharaka South", code="13-THS"),
]
),
County(
name="Embu",
code=14,
capital="Embu",
sub_counties=[
SubCounty(name="Manyatta", code="14-MAN"),
SubCounty(name="Mbeere North", code="14-MBN"),
SubCounty(name="Mbeere South", code="14-MBS"),
SubCounty(name="Runyenjes", code="14-RUN"),
]
),
County(
name="Kitui",
code=15,
capital="Kitui",
sub_counties=[
SubCounty(name="Ikutha", code="15-IKU"),
SubCounty(name="Katulani", code="15-KAT"),
SubCounty(name="Kisasi", code="15-KIS"),
SubCounty(name="Kitui Central", code="15-KTC"),
SubCounty(name="Kitui West", code="15-KTW"),
SubCounty(name="Lower Yatta", code="15-LYA"),
SubCounty(name="Matinyani", code="15-MAT"),
SubCounty(name="Migwani", code="15-MIG"),
SubCounty(name="Mutitu", code="15-MUT"),
SubCounty(name="Mutomo", code="15-MTO"),
SubCounty(name="Muumoni", code="15-MUU"),
SubCounty(name="Mwingi Central", code="15-MWC"),
SubCounty(name="Mwingi East", code="15-MWE"),
SubCounty(name="Nzambani", code="15-NZA"),
SubCounty(name="Tseikuru", code="15-TSE"),
]
),
County(
name="Machakos",
code=16,
capital="Machakos",
sub_counties=[
SubCounty(name="Kathiani", code="16-KAT"),
SubCounty(name="Machakos Town", code="16-MCT"),
SubCounty(name="Masinga", code="16-MAS"),
SubCounty(name="Matungulu", code="16-MAT"),
SubCounty(name="Mavoko", code="16-MAV"),
SubCounty(name="Mwala", code="16-MWA"),
SubCounty(name="Yatta", code="16-YAT"),
]
),
County(
name="Makueni",
code=17,
capital="Wote",
sub_counties=[
SubCounty(name="Kaiti", code="17-KAI"),
SubCounty(name="Kibwezi West", code="17-KBW"),
SubCounty(name="Kibwezi East", code="17-KBE"),
SubCounty(name="Kilome", code="17-KIL"),
SubCounty(name="Makueni", code="17-MAK"),
SubCounty(name="Mbooni", code="17-MBO"),
]
),
County(
name="Nyandarua",
code=18,
capital="Ol Kalou",
sub_counties=[
SubCounty(name="Kinangop", code="18-KIN"),
SubCounty(name="Kipipiri", code="18-KIP"),
SubCounty(name="Ndaragwa", code="18-NDA"),
SubCounty(name="Ol Kalou", code="18-OLK"),
SubCounty(name="Ol Joro Orok", code="18-OJO"),
]
),
County(
name="Nyeri",
code=19,
capital="Nyeri",
sub_counties=[
SubCounty(name="Kieni East", code="19-KIE"),
SubCounty(name="Kieni West", code="19-KIW"),
SubCounty(name="Mathira East", code="19-MAE"),
SubCounty(name="Mathira West", code="19-MAW"),
SubCounty(name="Mukurweini", code="19-MUK"),
SubCounty(name="Nyeri Town", code="19-NYT"),
SubCounty(name="Othaya", code="19-OTH"),
SubCounty(name="Tetu", code="19-TET"),
]
),
County(
name="Kirinyaga",
code=20,
capital="Kerugoya/Kutus",
sub_counties=[
SubCounty(name="Kirinyaga Central", code="20-KRC"),
SubCounty(name="Kirinyaga East", code="20-KRE"),
SubCounty(name="Kirinyaga West", code="20-KRW"),
SubCounty(name="Mwea East", code="20-MWE"),
SubCounty(name="Mwea West", code="20-MWW"),
]
),
County(
name="Murang'a",
code=21,
capital="Murang'a",
sub_counties=[
SubCounty(name="Gatanga", code="21-GAT"),
SubCounty(name="Kahuro", code="21-KAH"),
SubCounty(name="Kandara", code="21-KAN"),
SubCounty(name="Kangema", code="21-KNG"),
SubCounty(name="Kigumo", code="21-KIG"),
SubCounty(name="Kiharu", code="21-KIH"),
SubCounty(name="Mathioya", code="21-MAT"),
SubCounty(name="Murang'a South", code="21-MRS"),
]
),
County(
name="Kiambu",
code=22,
capital="Kiambu",
sub_counties=[
SubCounty(name="Gatundu North", code="22-GTN"),
SubCounty(name="Gatundu South", code="22-GTS"),
SubCounty(name="Githunguri", code="22-GIT"),
SubCounty(name="Juja", code="22-JUJ"),
SubCounty(name="Kabete", code="22-KAB"),
SubCounty(name="Kiambaa", code="22-KIA"),
SubCounty(name="Kiambu", code="22-KMB"),
SubCounty(name="Kikuyu", code="22-KIK"),
SubCounty(name="Limuru", code="22-LIM"),
SubCounty(name="Ruiru", code="22-RUI"),
SubCounty(name="Thika Town", code="22-THI"),
SubCounty(name="Lari", code="22-LAR"),
]
),
County(
name="Turkana",
code=23,
capital="Lodwar",
sub_counties=[
SubCounty(name="Loima", code="23-LOI"),
SubCounty(name="Turkana Central", code="23-TUC"),
SubCounty(name="Turkana East", code="23-TUE"),
SubCounty(name="Turkana North", code="23-TUN"),
SubCounty(name="Turkana South", code="23-TUS"),
]
),
County(
name="West Pokot",
code=24,
capital="Kapenguria",
sub_counties=[
SubCounty(name="Central Pokot", code="24-CPO"),
SubCounty(name="North Pokot", code="24-NPO"),
SubCounty(name="Pokot South", code="24-PSO"),
SubCounty(name="West Pokot", code="24-WPO"),
]
),
County(
name="Samburu",
code=25,
capital="Maralal",
sub_counties=[
SubCounty(name="Samburu East", code="25-SAE"),
SubCounty(name="Samburu North", code="25-SAN"),
SubCounty(name="Samburu West", code="25-SAW"),
]
),
County(
name="Trans-Nzoia",
code=26,
capital="Kitale",
sub_counties=[
SubCounty(name="Cherangany", code="26-CHE"),
SubCounty(name="Endebess", code="26-END"),
SubCounty(name="Kiminini", code="26-KIM"),
SubCounty(name="Kwanza", code="26-KWA"),
SubCounty(name="Saboti", code="26-SAB"),
]
),
County(
name="Uasin Gishu",
code=27,
capital="Eldoret",
sub_counties=[
SubCounty(name="Ainabkoi", code="27-AIN"),
SubCounty(name="Kapseret", code="27-KAP"),
SubCounty(name="Kesses", code="27-KES"),
SubCounty(name="Moiben", code="27-MOI"),
SubCounty(name="Soy", code="27-SOY"),
SubCounty(name="Turbo", code="27-TUR"),
]
),
County(
name="Elgeyo-Marakwet",
code=28,
capital="Iten",
sub_counties=[
SubCounty(name="Keiyo North", code="28-KEN"),
SubCounty(name="Keiyo South", code="28-KES"),
SubCounty(name="Marakwet East", code="28-MAE"),
SubCounty(name="Marakwet West", code="28-MAW"),
]
),
County(
name="Nandi",
code=29,
capital="Kapsabet",
sub_counties=[
SubCounty(name="Aldai", code="29-ALD"),
SubCounty(name="Chesumei", code="29-CHE"),
SubCounty(name="Emgwen", code="29-EMG"),
SubCounty(name="Mosop", code="29-MOS"),
SubCounty(name="Nandi Hills", code="29-NAH"),
SubCounty(name="Tindiret", code="29-TIN"),
]
),
County(
name="Baringo",
code=30,
capital="Kabarnet",
sub_counties=[
SubCounty(name="Baringo Central", code="30-BAC"),
SubCounty(name="Baringo North", code="30-BAN"),
SubCounty(name="Baringo South", code="30-BAS"),
SubCounty(name="Eldama Ravine", code="30-ELD"),
SubCounty(name="Mogotio", code="30-MOG"),
SubCounty(name="Tiaty", code="30-TIA"),
]
),
County(
name="Laikipia",
code=31,
capital="Rumuruti",
sub_counties=[
SubCounty(name="Laikipia Central", code="31-LAC"),
SubCounty(name="Laikipia East", code="31-LAE"),
SubCounty(name="Laikipia North", code="31-LAN"),
SubCounty(name="Laikipia West", code="31-LAW"),
SubCounty(name="Nyahururu", code="31-NYA"),
]
),
County(
name="Nakuru",
code=32,
capital="Nakuru",
sub_counties=[
SubCounty(name="Bahati", code="32-BAH"),
SubCounty(name="Gilgil", code="32-GIL"),
SubCounty(name="Kuresoi North", code="32-KUN"),
SubCounty(name="Kuresoi South", code="32-KUS"),
SubCounty(name="Molo", code="32-MOL"),
SubCounty(name="Naivasha", code="32-NAI"),
SubCounty(name="Nakuru Town East", code="32-NTE"),
SubCounty(name="Nakuru Town West", code="32-NTW"),
SubCounty(name="Njoro", code="32-NJO"),
SubCounty(name="Rongai", code="32-RON"),
SubCounty(name="Subukia", code="32-SUB"),
]
),
County(
name="Narok",
code=33,
capital="Narok",
sub_counties=[
SubCounty(name="Narok East", code="33-NAE"),
SubCounty(name="Narok North", code="33-NAN"),
SubCounty(name="Narok South", code="33-NAS"),
SubCounty(name="Narok West", code="33-NAW"),
SubCounty(name="Transmara East", code="33-TRE"),
SubCounty(name="Transmara West", code="33-TRW"),
]
),
County(
name="Kajiado",
code=34,
capital="Kajiado",
sub_counties=[
SubCounty(name="Isinya", code="34-ISI"),
SubCounty(name="Kajiado Central", code="34-KAC"),
SubCounty(name="Kajiado North", code="34-KAN"),
SubCounty(name="Loitokitok", code="34-LOI"),
SubCounty(name="Mashuuru", code="34-MAS"),
]
),
County(
name="Kericho",
code=35,
capital="Kericho",
sub_counties=[
SubCounty(name="Ainamoi", code="35-AIN"),
SubCounty(name="Belgut", code="35-BEL"),
SubCounty(name="Bureti", code="35-BUR"),
SubCounty(name="Kipkelion East", code="35-KPE"),
SubCounty(name="Kipkelion West", code="35-KPW"),
SubCounty(name="Soin Sigowet", code="35-SOI"),
]
),
County(
name="Bomet",
code=36,
capital="Bomet",
sub_counties=[
SubCounty(name="Bomet Central", code="36-BOC"),
SubCounty(name="Bomet East", code="36-BOE"),
SubCounty(name="Chepalungu", code="36-CHE"),
SubCounty(name="Konoin", code="36-KON"),
SubCounty(name="Sotik", code="36-SOT"),
]
),
County(
name="Kakamega",
code=37,
capital="Kakamega",
sub_counties=[
SubCounty(name="Butere", code="37-BUT"),
SubCounty(name="Ikolomani", code="37-IKO"),
SubCounty(name="Khwisero", code="37-KHW"),
SubCounty(name="Likuyani", code="37-LIK"),
SubCounty(name="Lugari", code="37-LUG"),
SubCounty(name="Lurambi", code="37-LUR"),
SubCounty(name="Malava", code="37-MAL"),
SubCounty(name="Matungu", code="37-MAT"),
SubCounty(name="Mumias East", code="37-MUE"),
SubCounty(name="Mumias West", code="37-MUW"),
SubCounty(name="Navakholo", code="37-NAV"),
SubCounty(name="Shinyalu", code="37-SHI"),
]
),
County(
name="Vihiga",
code=38,
capital="Vihiga",
sub_counties=[
SubCounty(name="Emuhaya", code="38-EMU"),
SubCounty(name="Hamisi", code="38-HAM"),
SubCounty(name="Luanda", code="38-LUA"),
SubCounty(name="Sabatia", code="38-SAB"),
SubCounty(name="Vihiga", code="38-VIH"),
]
),
County(
name="Bungoma",
code=39,
capital="Bungoma",
sub_counties=[
SubCounty(name="Bumula", code="39-BUM"),
SubCounty(name="Kabuchai", code="39-KAB"),
SubCounty(name="Kanduyi", code="39-KAN"),
SubCounty(name="Kimilili", code="39-KIM"),
SubCounty(name="Mt Elgon", code="39-MTE"),
SubCounty(name="Sirisia", code="39-SIR"),
SubCounty(name="Tongaren", code="39-TON"),
SubCounty(name="Webuye East", code="39-WBE"),
SubCounty(name="Webuye West", code="39-WBW"),
]
),
County(
name="Busia",
code=40,
capital="Busia",
sub_counties=[
SubCounty(name="Budalangi", code="40-BUD"),
SubCounty(name="Butula", code="40-BUT"),
SubCounty(name="Funyula", code="40-FUN"),
SubCounty(name="Nambale", code="40-NAM"),
SubCounty(name="Teso North", code="40-TEN"),
SubCounty(name="Teso South", code="40-TES"),
]
),
County(
name="Siaya",
code=41,
capital="Siaya",
sub_counties=[
SubCounty(name="Alego Usonga", code="41-ALE"),
SubCounty(name="Bondo", code="41-BON"),
SubCounty(name="Gem", code="41-GEM"),
SubCounty(name="Rarieda", code="41-RAR"),
SubCounty(name="Ugenya", code="41-UGE"),
SubCounty(name="Ugunja", code="41-UGU"),
]
),
County(
name="Kisumu",
code=42,
capital="Kisumu",
sub_counties=[
SubCounty(name="Kisumu Central", code="42-KIC"),
SubCounty(name="Kisumu East", code="42-KIE"),
SubCounty(name="Kisumu West", code="42-KIW"),
SubCounty(name="Mohoroni", code="42-MOH"),
SubCounty(name="Nyakach", code="42-NYA"),
SubCounty(name="Nyando", code="42-NYN"),
SubCounty(name="Seme", code="42-SEM"),
]
),
County(
name="Homa Bay",
code=43,
capital="Homa Bay",
sub_counties=[
SubCounty(name="Homa Bay Town", code="43-HBT"),
SubCounty(name="Kabondo Kasipul", code="43-KAB"),
SubCounty(name="Karachuonyo", code="43-KAR"),
SubCounty(name="Kasipul", code="43-KAS"),
SubCounty(name="Mbita", code="43-MBI"),
SubCounty(name="Ndhiwa", code="43-NDH"),
SubCounty(name="Rangwe", code="43-RAN"),
SubCounty(name="Suba", code="43-SUB"),
]
),
County(
name="Migori",
code=44,
capital="Migori",
sub_counties=[
SubCounty(name="Awendo", code="44-AWE"),
SubCounty(name="Kuria East", code="44-KUE"),
SubCounty(name="Kuria West", code="44-KUW"),
SubCounty(name="Mabera", code="44-MAB"),
SubCounty(name="Ntimaru", code="44-NTI"),
SubCounty(name="Rongo", code="44-RON"),
SubCounty(name="Suna East", code="44-SUE"),
SubCounty(name="Suna West", code="44-SUW"),
SubCounty(name="Uriri", code="44-URI"),
]
),
County(
name="Kisii",
code=45,
capital="Kisii",
sub_counties=[
SubCounty(name="Bobasi", code="45-BOB"),
SubCounty(name="Bomachoge Borabu", code="45-BMB"),
SubCounty(name="Bomachoge Chache", code="45-BMC"),
SubCounty(name="Bonchari", code="45-BON"),
SubCounty(name="Kitutu Chache North", code="45-KCN"),
SubCounty(name="Kitutu Chache South", code="45-KCS"),
SubCounty(name="Nyaribari Chache", code="45-NYC"),
SubCounty(name="Nyaribari Masaba", code="45-NYM"),
SubCounty(name="South Mugirango", code="45-SMU"),
]
),
County(
name="Nyamira",
code=46,
capital="Nyamira",
sub_counties=[
SubCounty(name="Borabu", code="46-BOR"),
SubCounty(name="Manga", code="46-MAN"),
SubCounty(name="Masaba North", code="46-MAN"),
SubCounty(name="Nyamira North", code="46-NYN"),
SubCounty(name="Nyamira South", code="46-NYS"),
]
),
County(
name="Nairobi",
code=47,
capital="Nairobi City",
sub_counties=[
SubCounty(name="Dagoretti North", code="47-DGN"),
SubCounty(name="Dagoretti South", code="47-DGS"),
SubCounty(name="Embakasi Central", code="47-EMC"),
SubCounty(name="Embakasi East", code="47-EME"),
SubCounty(name="Embakasi North", code="47-EMN"),
SubCounty(name="Embakasi South", code="47-EMS"),
SubCounty(name="Embakasi West", code="47-EMW"),
SubCounty(name="Kamukunji", code="47-KAM"),
SubCounty(name="Kasarani", code="47-KAS"),
SubCounty(name="Kibra", code="47-KIB"),
SubCounty(name="Lang'ata", code="47-LAN"),
SubCounty(name="Makadara", code="47-MAK"),
SubCounty(name="Mathare", code="47-MAT"),
SubCounty(name="Roysambu", code="47-ROY"),
SubCounty(name="Ruaraka", code="47-RUA"),
SubCounty(name="Starehe", code="47-STA"),
SubCounty(name="Westlands", code="47-WES"),
]
),
]