diff --git a/faker/providers/address/es_CO/__init__.py b/faker/providers/address/es_CO/__init__.py new file mode 100644 index 0000000000..98901f1f4e --- /dev/null +++ b/faker/providers/address/es_CO/__init__.py @@ -0,0 +1,1335 @@ +from collections import OrderedDict +from typing import List, Tuple + +from ..es import Provider as AddressProvider + + +class Provider(AddressProvider): + + departments = { + "05": "Antioquia", + "08": "Atlántico", + "11": "Bogotá, D.C.", + "13": "Bolívar", + "15": "Boyacá", + "17": "Caldas", + "18": "Caquetá", + "19": "Cauca", + "20": "Cesar", + "23": "Córdoba", + "25": "Cundinamarca", + "27": "Chocó", + "41": "Huila", + "44": "La Guajira", + "47": "Magdalena", + "50": "Meta", + "52": "Nariño", + "54": "Norte de Santander", + "63": "Quindío", + "66": "Risaralda", + "68": "Santander", + "70": "Sucre", + "73": "Tolima", + "76": "Valle del Cauca", + "81": "Arauca", + "85": "Casanare", + "86": "Putumayo", + "88": "Archipiélago de San Andrés, Providencia y Santa Catalina", + "91": "Amazonas", + "94": "Guainía", + "95": "Guaviare", + "97": "Vaupés", + "99": "Vichada", + } + + municipalities: List[Tuple[str, str]] = [ + ("05001", "Medellín"), + ("05002", "Abejorral"), + ("05004", "Abriaquí"), + ("05021", "Alejandría"), + ("05030", "Amagá"), + ("05031", "Amalfi"), + ("05034", "Andes"), + ("05036", "Angelópolis"), + ("05038", "Angostura"), + ("05040", "Anorí"), + ("05042", "Santa Fé de Antioquia"), + ("05044", "Anzá"), + ("05045", "Apartadó"), + ("05051", "Arboletes"), + ("05055", "Argelia"), + ("05059", "Armenia"), + ("05079", "Barbosa"), + ("05086", "Belmira"), + ("05088", "Bello"), + ("05091", "Betania"), + ("05093", "Betulia"), + ("05101", "Ciudad Bolívar"), + ("05107", "Briceño"), + ("05113", "Buriticá"), + ("05120", "Cáceres"), + ("05125", "Caicedo"), + ("05129", "Caldas"), + ("05134", "Campamento"), + ("05138", "Cañasgordas"), + ("05142", "Caracolí"), + ("05145", "Caramanta"), + ("05147", "Carepa"), + ("05148", "El Carmen de Viboral"), + ("05150", "Carolina"), + ("05154", "Caucasia"), + ("05172", "Chigorodó"), + ("05190", "Cisneros"), + ("05197", "Cocorná"), + ("05206", "Concepción"), + ("05209", "Concordia"), + ("05212", "Copacabana"), + ("05234", "Dabeiba"), + ("05237", "Donmatías"), + ("05240", "Ebéjico"), + ("05250", "El Bagre"), + ("05264", "Entrerríos"), + ("05266", "Envigado"), + ("05282", "Fredonia"), + ("05284", "Frontino"), + ("05306", "Giraldo"), + ("05308", "Girardota"), + ("05310", "Gómez Plata"), + ("05313", "Granada"), + ("05315", "Guadalupe"), + ("05318", "Guarne"), + ("05321", "Guatapé"), + ("05347", "Heliconia"), + ("05353", "Hispania"), + ("05360", "Itagüí"), + ("05361", "Ituango"), + ("05364", "Jardín"), + ("05368", "Jericó"), + ("05376", "La Ceja"), + ("05380", "La Estrella"), + ("05390", "La Pintada"), + ("05400", "La Unión"), + ("05411", "Liborina"), + ("05425", "Maceo"), + ("05440", "Marinilla"), + ("05467", "Montebello"), + ("05475", "Murindó"), + ("05480", "Mutatá"), + ("05483", "Nariño"), + ("05490", "Necoclí"), + ("05495", "Nechí"), + ("05501", "Olaya"), + ("05541", "Peñol"), + ("05543", "Peque"), + ("05576", "Pueblorrico"), + ("05579", "Puerto Berrío"), + ("05585", "Puerto Nare"), + ("05591", "Puerto Triunfo"), + ("05604", "Remedios"), + ("05607", "Retiro"), + ("05615", "Rionegro"), + ("05628", "Sabanalarga"), + ("05631", "Sabaneta"), + ("05642", "Salgar"), + ("05647", "San Andrés de Cuerquía"), + ("05649", "San Carlos"), + ("05652", "San Francisco"), + ("05656", "San Jerónimo"), + ("05658", "San José de la Montaña"), + ("05659", "San Juan de Urabá"), + ("05660", "San Luis"), + ("05664", "San Pedro de los Milagros"), + ("05665", "San Pedro de Urabá"), + ("05667", "San Rafael"), + ("05670", "San Roque"), + ("05674", "San Vicente Ferrer"), + ("05679", "Santa Bárbara"), + ("05686", "Santa Rosa de Osos"), + ("05690", "Santo Domingo"), + ("05697", "El Santuario"), + ("05736", "Segovia"), + ("05756", "Sonsón"), + ("05761", "Sopetrán"), + ("05789", "Támesis"), + ("05790", "Tarazá"), + ("05792", "Tarso"), + ("05809", "Titiribí"), + ("05819", "Toledo"), + ("05837", "Turbo"), + ("05842", "Uramita"), + ("05847", "Urrao"), + ("05854", "Valdivia"), + ("05856", "Valparaíso"), + ("05858", "Vegachí"), + ("05861", "Venecia"), + ("05873", "Vigía del Fuerte"), + ("05885", "Yalí"), + ("05887", "Yarumal"), + ("05890", "Yolombó"), + ("05893", "Yondó"), + ("05895", "Zaragoza"), + ("08001", "Barranquilla"), + ("08078", "Baranoa"), + ("08137", "Campo de la Cruz"), + ("08141", "Candelaria"), + ("08296", "Galapa"), + ("08372", "Juan de Acosta"), + ("08421", "Luruaco"), + ("08433", "Malambo"), + ("08436", "Manatí"), + ("08520", "Palmar de Varela"), + ("08549", "Piojó"), + ("08558", "Polonuevo"), + ("08560", "Ponedera"), + ("08573", "Puerto Colombia"), + ("08606", "Repelón"), + ("08634", "Sabanagrande"), + ("08638", "Sabanalarga"), + ("08675", "Santa Lucía"), + ("08685", "Santo Tomás"), + ("08758", "Soledad"), + ("08770", "Suan"), + ("08832", "Tubará"), + ("08849", "Usiacurí"), + ("11001", "Bogotá, D.C."), + ("13001", "Cartagena de Indias"), + ("13006", "Achí"), + ("13030", "Altos del Rosario"), + ("13042", "Arenal"), + ("13052", "Arjona"), + ("13062", "Arroyohondo"), + ("13074", "Barranco de Loba"), + ("13140", "Calamar"), + ("13160", "Cantagallo"), + ("13188", "Cicuco"), + ("13212", "Córdoba"), + ("13222", "Clemencia"), + ("13244", "El Carmen de Bolívar"), + ("13248", "El Guamo"), + ("13268", "El Peñón"), + ("13300", "Hatillo de Loba"), + ("13430", "Magangué"), + ("13433", "Mahates"), + ("13440", "Margarita"), + ("13442", "María la Baja"), + ("13458", "Montecristo"), + ("13468", "Santa Cruz de Mompox"), + ("13473", "Morales"), + ("13490", "Norosí"), + ("13549", "Pinillos"), + ("13580", "Regidor"), + ("13600", "Río Viejo"), + ("13620", "San Cristóbal"), + ("13647", "San Estanislao"), + ("13650", "San Fernando"), + ("13654", "San Jacinto"), + ("13655", "San Jacinto del Cauca"), + ("13657", "San Juan Nepomuceno"), + ("13667", "San Martín de Loba"), + ("13670", "San Pablo"), + ("13673", "Santa Catalina"), + ("13683", "Santa Rosa"), + ("13688", "Santa Rosa del Sur"), + ("13744", "Simití"), + ("13760", "Soplaviento"), + ("13780", "Talaigua Nuevo"), + ("13810", "Tiquisio"), + ("13836", "Turbaco"), + ("13838", "Turbaná"), + ("13873", "Villanueva"), + ("13894", "Zambrano"), + ("15001", "Tunja"), + ("15022", "Almeida"), + ("15047", "Aquitania"), + ("15051", "Arcabuco"), + ("15087", "Belén"), + ("15090", "Berbeo"), + ("15092", "Betéitiva"), + ("15097", "Boavita"), + ("15104", "Boyacá"), + ("15106", "Briceño"), + ("15109", "Buenavista"), + ("15114", "Busbanzá"), + ("15131", "Caldas"), + ("15135", "Campohermoso"), + ("15162", "Cerinza"), + ("15172", "Chinavita"), + ("15176", "Chiquinquirá"), + ("15180", "Chiscas"), + ("15183", "Chita"), + ("15185", "Chitaraque"), + ("15187", "Chivatá"), + ("15189", "Ciénega"), + ("15204", "Cómbita"), + ("15212", "Coper"), + ("15215", "Corrales"), + ("15218", "Covarachía"), + ("15223", "Cubará"), + ("15224", "Cucaita"), + ("15226", "Cuítiva"), + ("15232", "Chíquiza"), + ("15236", "Chivor"), + ("15238", "Duitama"), + ("15244", "El Cocuy"), + ("15248", "El Espino"), + ("15272", "Firavitoba"), + ("15276", "Floresta"), + ("15293", "Gachantivá"), + ("15296", "Gámeza"), + ("15299", "Garagoa"), + ("15317", "Guacamayas"), + ("15322", "Guateque"), + ("15325", "Guayatá"), + ("15332", "Güicán de la Sierra"), + ("15362", "Iza"), + ("15367", "Jenesano"), + ("15368", "Jericó"), + ("15377", "Labranzagrande"), + ("15380", "La Capilla"), + ("15401", "La Victoria"), + ("15403", "La Uvita"), + ("15407", "Villa de Leyva"), + ("15425", "Macanal"), + ("15442", "Maripí"), + ("15455", "Miraflores"), + ("15464", "Mongua"), + ("15466", "Monguí"), + ("15469", "Moniquirá"), + ("15476", "Motavita"), + ("15480", "Muzo"), + ("15491", "Nobsa"), + ("15494", "Nuevo Colón"), + ("15500", "Oicatá"), + ("15507", "Otanche"), + ("15511", "Pachavita"), + ("15514", "Páez"), + ("15516", "Paipa"), + ("15518", "Pajarito"), + ("15522", "Panqueba"), + ("15531", "Pauna"), + ("15533", "Paya"), + ("15537", "Paz de Río"), + ("15542", "Pesca"), + ("15550", "Pisba"), + ("15572", "Puerto Boyacá"), + ("15580", "Quípama"), + ("15599", "Ramiriquí"), + ("15600", "Ráquira"), + ("15621", "Rondón"), + ("15632", "Saboyá"), + ("15638", "Sáchica"), + ("15646", "Samacá"), + ("15660", "San Eduardo"), + ("15664", "San José de Pare"), + ("15667", "San Luis de Gaceno"), + ("15673", "San Mateo"), + ("15676", "San Miguel de Sema"), + ("15681", "San Pablo de Borbur"), + ("15686", "Santana"), + ("15690", "Santa María"), + ("15693", "Santa Rosa de Viterbo"), + ("15696", "Santa Sofía"), + ("15720", "Sativanorte"), + ("15723", "Sativasur"), + ("15740", "Siachoque"), + ("15753", "Soatá"), + ("15755", "Socotá"), + ("15757", "Socha"), + ("15759", "Sogamoso"), + ("15761", "Somondoco"), + ("15762", "Sora"), + ("15763", "Sotaquirá"), + ("15764", "Soracá"), + ("15774", "Susacón"), + ("15776", "Sutamarchán"), + ("15778", "Sutatenza"), + ("15790", "Tasco"), + ("15798", "Tenza"), + ("15804", "Tibaná"), + ("15806", "Tibasosa"), + ("15808", "Tinjacá"), + ("15810", "Tipacoque"), + ("15814", "Toca"), + ("15816", "Togüí"), + ("15820", "Tópaga"), + ("15822", "Tota"), + ("15832", "Tununguá"), + ("15835", "Turmequé"), + ("15837", "Tuta"), + ("15839", "Tutazá"), + ("15842", "Úmbita"), + ("15861", "Ventaquemada"), + ("15879", "Viracachá"), + ("15897", "Zetaquira"), + ("17001", "Manizales"), + ("17013", "Aguadas"), + ("17042", "Anserma"), + ("17050", "Aranzazu"), + ("17088", "Belalcázar"), + ("17174", "Chinchiná"), + ("17272", "Filadelfia"), + ("17380", "La Dorada"), + ("17388", "La Merced"), + ("17433", "Manzanares"), + ("17442", "Marmato"), + ("17444", "Marquetalia"), + ("17446", "Marulanda"), + ("17486", "Neira"), + ("17495", "Norcasia"), + ("17513", "Pácora"), + ("17524", "Palestina"), + ("17541", "Pensilvania"), + ("17614", "Riosucio"), + ("17616", "Risaralda"), + ("17653", "Salamina"), + ("17662", "Samaná"), + ("17665", "San José"), + ("17777", "Supía"), + ("17867", "Victoria"), + ("17873", "Villamaría"), + ("17877", "Viterbo"), + ("18001", "Florencia"), + ("18029", "Albania"), + ("18094", "Belén de los Andaquíes"), + ("18150", "Cartagena del Chairá"), + ("18205", "Curillo"), + ("18247", "El Doncello"), + ("18256", "El Paujíl"), + ("18410", "La Montañita"), + ("18460", "Milán"), + ("18479", "Morelia"), + ("18592", "Puerto Rico"), + ("18610", "San José del Fragua"), + ("18753", "San Vicente del Caguán"), + ("18756", "Solano"), + ("18785", "Solita"), + ("18860", "Valparaíso"), + ("19001", "Popayán"), + ("19022", "Almaguer"), + ("19050", "Argelia"), + ("19075", "Balboa"), + ("19100", "Bolívar"), + ("19110", "Buenos Aires"), + ("19130", "Cajibío"), + ("19137", "Caldono"), + ("19142", "Caloto"), + ("19212", "Corinto"), + ("19256", "El Tambo"), + ("19290", "Florencia"), + ("19300", "Guachené"), + ("19318", "Guapi"), + ("19355", "Inzá"), + ("19364", "Jambaló"), + ("19392", "La Sierra"), + ("19397", "La Vega"), + ("19418", "López de Micay"), + ("19450", "Mercaderes"), + ("19455", "Miranda"), + ("19473", "Morales"), + ("19513", "Padilla"), + ("19517", "Páez"), + ("19532", "Patía"), + ("19533", "Piamonte"), + ("19548", "Piendamó - Tunía"), + ("19573", "Puerto Tejada"), + ("19585", "Puracé"), + ("19622", "Rosas"), + ("19693", "San Sebastián"), + ("19698", "Santander de Quilichao"), + ("19701", "Santa Rosa"), + ("19743", "Silvia"), + ("19760", "Sotará Paispamba"), + ("19780", "Suárez"), + ("19785", "Sucre"), + ("19807", "Timbío"), + ("19809", "Timbiquí"), + ("19821", "Toribío"), + ("19824", "Totoró"), + ("19845", "Villa Rica"), + ("20001", "Valledupar"), + ("20011", "Aguachica"), + ("20013", "Agustín Codazzi"), + ("20032", "Astrea"), + ("20045", "Becerril"), + ("20060", "Bosconia"), + ("20175", "Chimichagua"), + ("20178", "Chiriguaná"), + ("20228", "Curumaní"), + ("20238", "El Copey"), + ("20250", "El Paso"), + ("20295", "Gamarra"), + ("20310", "González"), + ("20383", "La Gloria"), + ("20400", "La Jagua de Ibirico"), + ("20443", "Manaure Balcón del Cesar"), + ("20517", "Pailitas"), + ("20550", "Pelaya"), + ("20570", "Pueblo Bello"), + ("20614", "Río de Oro"), + ("20621", "La Paz"), + ("20710", "San Alberto"), + ("20750", "San Diego"), + ("20770", "San Martín"), + ("20787", "Tamalameque"), + ("23001", "Montería"), + ("23068", "Ayapel"), + ("23079", "Buenavista"), + ("23090", "Canalete"), + ("23162", "Cereté"), + ("23168", "Chimá"), + ("23182", "Chinú"), + ("23189", "Ciénaga de Oro"), + ("23300", "Cotorra"), + ("23350", "La Apartada"), + ("23417", "Lorica"), + ("23419", "Los Córdobas"), + ("23464", "Momil"), + ("23466", "Montelíbano"), + ("23500", "Moñitos"), + ("23555", "Planeta Rica"), + ("23570", "Pueblo Nuevo"), + ("23574", "Puerto Escondido"), + ("23580", "Puerto Libertador"), + ("23586", "Purísima de la Concepción"), + ("23660", "Sahagún"), + ("23670", "San Andrés de Sotavento"), + ("23672", "San Antero"), + ("23675", "San Bernardo del Viento"), + ("23678", "San Carlos"), + ("23682", "San José de Uré"), + ("23686", "San Pelayo"), + ("23807", "Tierralta"), + ("23815", "Tuchín"), + ("23855", "Valencia"), + ("25001", "Agua de Dios"), + ("25019", "Albán"), + ("25035", "Anapoima"), + ("25040", "Anolaima"), + ("25053", "Arbeláez"), + ("25086", "Beltrán"), + ("25095", "Bituima"), + ("25099", "Bojacá"), + ("25120", "Cabrera"), + ("25123", "Cachipay"), + ("25126", "Cajicá"), + ("25148", "Caparrapí"), + ("25151", "Cáqueza"), + ("25154", "Carmen de Carupa"), + ("25168", "Chaguaní"), + ("25175", "Chía"), + ("25178", "Chipaque"), + ("25181", "Choachí"), + ("25183", "Chocontá"), + ("25200", "Cogua"), + ("25214", "Cota"), + ("25224", "Cucunubá"), + ("25245", "El Colegio"), + ("25258", "El Peñón"), + ("25260", "El Rosal"), + ("25269", "Facatativá"), + ("25279", "Fómeque"), + ("25281", "Fosca"), + ("25286", "Funza"), + ("25288", "Fúquene"), + ("25290", "Fusagasugá"), + ("25293", "Gachalá"), + ("25295", "Gachancipá"), + ("25297", "Gachetá"), + ("25299", "Gama"), + ("25307", "Girardot"), + ("25312", "Granada"), + ("25317", "Guachetá"), + ("25320", "Guaduas"), + ("25322", "Guasca"), + ("25324", "Guataquí"), + ("25326", "Guatavita"), + ("25328", "Guayabal de Síquima"), + ("25335", "Guayabetal"), + ("25339", "Gutiérrez"), + ("25368", "Jerusalén"), + ("25372", "Junín"), + ("25377", "La Calera"), + ("25386", "La Mesa"), + ("25394", "La Palma"), + ("25398", "La Peña"), + ("25402", "La Vega"), + ("25407", "Lenguazaque"), + ("25426", "Machetá"), + ("25430", "Madrid"), + ("25436", "Manta"), + ("25438", "Medina"), + ("25473", "Mosquera"), + ("25483", "Nariño"), + ("25486", "Nemocón"), + ("25488", "Nilo"), + ("25489", "Nimaima"), + ("25491", "Nocaima"), + ("25506", "Venecia"), + ("25513", "Pacho"), + ("25518", "Paime"), + ("25524", "Pandi"), + ("25530", "Paratebueno"), + ("25535", "Pasca"), + ("25572", "Puerto Salgar"), + ("25580", "Pulí"), + ("25592", "Quebradanegra"), + ("25594", "Quetame"), + ("25596", "Quipile"), + ("25599", "Apulo"), + ("25612", "Ricaurte"), + ("25645", "San Antonio del Tequendama"), + ("25649", "San Bernardo"), + ("25653", "San Cayetano"), + ("25658", "San Francisco"), + ("25662", "San Juan de Rioseco"), + ("25718", "Sasaima"), + ("25736", "Sesquilé"), + ("25740", "Sibaté"), + ("25743", "Silvania"), + ("25745", "Simijaca"), + ("25754", "Soacha"), + ("25758", "Sopó"), + ("25769", "Subachoque"), + ("25772", "Suesca"), + ("25777", "Supatá"), + ("25779", "Susa"), + ("25781", "Sutatausa"), + ("25785", "Tabio"), + ("25793", "Tausa"), + ("25797", "Tena"), + ("25799", "Tenjo"), + ("25805", "Tibacuy"), + ("25807", "Tibirita"), + ("25815", "Tocaima"), + ("25817", "Tocancipá"), + ("25823", "Topaipí"), + ("25839", "Ubalá"), + ("25841", "Ubaque"), + ("25843", "Villa de San Diego de Ubaté"), + ("25845", "Une"), + ("25851", "Útica"), + ("25862", "Vergara"), + ("25867", "Vianí"), + ("25871", "Villagómez"), + ("25873", "Villapinzón"), + ("25875", "Villeta"), + ("25878", "Viotá"), + ("25885", "Yacopí"), + ("25898", "Zipacón"), + ("25899", "Zipaquirá"), + ("27001", "Quibdó"), + ("27006", "Acandí"), + ("27025", "Alto Baudó"), + ("27050", "Atrato"), + ("27073", "Bagadó"), + ("27075", "Bahía Solano"), + ("27077", "Bajo Baudó"), + ("27099", "Bojayá"), + ("27135", "El Cantón del San Pablo"), + ("27150", "Carmen del Darién"), + ("27160", "Cértegui"), + ("27205", "Condoto"), + ("27245", "El Carmen de Atrato"), + ("27250", "El Litoral del San Juan"), + ("27361", "Istmina"), + ("27372", "Juradó"), + ("27413", "Lloró"), + ("27425", "Medio Atrato"), + ("27430", "Medio Baudó"), + ("27450", "Medio San Juan"), + ("27491", "Nóvita"), + ("27495", "Nuquí"), + ("27580", "Río Iró"), + ("27600", "Río Quito"), + ("27615", "Riosucio"), + ("27660", "San José del Palmar"), + ("27745", "Sipí"), + ("27787", "Tadó"), + ("27800", "Unguía"), + ("27810", "Unión Panamericana"), + ("41001", "Neiva"), + ("41006", "Acevedo"), + ("41013", "Agrado"), + ("41016", "Aipe"), + ("41020", "Algeciras"), + ("41026", "Altamira"), + ("41078", "Baraya"), + ("41132", "Campoalegre"), + ("41206", "Colombia"), + ("41244", "Elías"), + ("41298", "Garzón"), + ("41306", "Gigante"), + ("41319", "Guadalupe"), + ("41349", "Hobo"), + ("41357", "Íquira"), + ("41359", "Isnos"), + ("41378", "La Argentina"), + ("41396", "La Plata"), + ("41483", "Nátaga"), + ("41503", "Oporapa"), + ("41518", "Paicol"), + ("41524", "Palermo"), + ("41530", "Palestina"), + ("41548", "Pital"), + ("41551", "Pitalito"), + ("41615", "Rivera"), + ("41660", "Saladoblanco"), + ("41668", "San Agustín"), + ("41676", "Santa María"), + ("41770", "Suaza"), + ("41791", "Tarqui"), + ("41797", "Tesalia"), + ("41799", "Tello"), + ("41801", "Teruel"), + ("41807", "Timaná"), + ("41872", "Villavieja"), + ("41885", "Yaguará"), + ("44001", "Riohacha"), + ("44035", "Albania"), + ("44078", "Barrancas"), + ("44090", "Dibulla"), + ("44098", "Distracción"), + ("44110", "El Molino"), + ("44279", "Fonseca"), + ("44378", "Hatonuevo"), + ("44420", "La Jagua del Pilar"), + ("44430", "Maicao"), + ("44560", "Manaure"), + ("44650", "San Juan del Cesar"), + ("44847", "Uribia"), + ("44855", "Urumita"), + ("44874", "Villanueva"), + ("47001", "Santa Marta"), + ("47030", "Algarrobo"), + ("47053", "Aracataca"), + ("47058", "Ariguaní"), + ("47161", "Cerro de San Antonio"), + ("47170", "Chivolo"), + ("47189", "Ciénaga"), + ("47205", "Concordia"), + ("47245", "El Banco"), + ("47258", "El Piñón"), + ("47268", "El Retén"), + ("47288", "Fundación"), + ("47318", "Guamal"), + ("47460", "Nueva Granada"), + ("47541", "Pedraza"), + ("47545", "Pijiño del Carmen"), + ("47551", "Pivijay"), + ("47555", "Plato"), + ("47570", "Puebloviejo"), + ("47605", "Remolino"), + ("47660", "Sabanas de San Ángel"), + ("47675", "Salamina"), + ("47692", "San Sebastián de Buenavista"), + ("47703", "San Zenón"), + ("47707", "Santa Ana"), + ("47720", "Santa Bárbara de Pinto"), + ("47745", "Sitionuevo"), + ("47798", "Tenerife"), + ("47960", "Zapayán"), + ("47980", "Zona Bananera"), + ("50001", "Villavicencio"), + ("50006", "Acacías"), + ("50110", "Barranca de Upía"), + ("50124", "Cabuyaro"), + ("50150", "Castilla la Nueva"), + ("50223", "Cubarral"), + ("50226", "Cumaral"), + ("50245", "El Calvario"), + ("50251", "El Castillo"), + ("50270", "El Dorado"), + ("50287", "Fuente de Oro"), + ("50313", "Granada"), + ("50318", "Guamal"), + ("50325", "Mapiripán"), + ("50330", "Mesetas"), + ("50350", "La Macarena"), + ("50370", "Uribe"), + ("50400", "Lejanías"), + ("50450", "Puerto Concordia"), + ("50568", "Puerto Gaitán"), + ("50573", "Puerto López"), + ("50577", "Puerto Lleras"), + ("50590", "Puerto Rico"), + ("50606", "Restrepo"), + ("50680", "San Carlos de Guaroa"), + ("50683", "San Juan de Arama"), + ("50686", "San Juanito"), + ("50689", "San Martín"), + ("50711", "Vistahermosa"), + ("52001", "Pasto"), + ("52019", "Albán"), + ("52022", "Aldana"), + ("52036", "Ancuya"), + ("52051", "Arboleda"), + ("52079", "Barbacoas"), + ("52083", "Belén"), + ("52110", "Buesaco"), + ("52203", "Colón"), + ("52207", "Consacá"), + ("52210", "Contadero"), + ("52215", "Córdoba"), + ("52224", "Cuaspud Carlosama"), + ("52227", "Cumbal"), + ("52233", "Cumbitara"), + ("52240", "Chachagüí"), + ("52250", "El Charco"), + ("52254", "El Peñol"), + ("52256", "El Rosario"), + ("52258", "El Tablón de Gómez"), + ("52260", "El Tambo"), + ("52287", "Funes"), + ("52317", "Guachucal"), + ("52320", "Guaitarilla"), + ("52323", "Gualmatán"), + ("52352", "Iles"), + ("52354", "Imués"), + ("52356", "Ipiales"), + ("52378", "La Cruz"), + ("52381", "La Florida"), + ("52385", "La Llanada"), + ("52390", "La Tola"), + ("52399", "La Unión"), + ("52405", "Leiva"), + ("52411", "Linares"), + ("52418", "Los Andes"), + ("52427", "Magüí"), + ("52435", "Mallama"), + ("52473", "Mosquera"), + ("52480", "Nariño"), + ("52490", "Olaya Herrera"), + ("52506", "Ospina"), + ("52520", "Francisco Pizarro"), + ("52540", "Policarpa"), + ("52560", "Potosí"), + ("52565", "Providencia"), + ("52573", "Puerres"), + ("52585", "Pupiales"), + ("52612", "Ricaurte"), + ("52621", "Roberto Payán"), + ("52678", "Samaniego"), + ("52683", "Sandoná"), + ("52685", "San Bernardo"), + ("52687", "San Lorenzo"), + ("52693", "San Pablo"), + ("52694", "San Pedro de Cartago"), + ("52696", "Santa Bárbara"), + ("52699", "Santacruz"), + ("52720", "Sapuyes"), + ("52786", "Taminango"), + ("52788", "Tangua"), + ("52835", "San Andrés de Tumaco"), + ("52838", "Túquerres"), + ("52885", "Yacuanquer"), + ("54001", "San José de Cúcuta"), + ("54003", "Ábrego"), + ("54051", "Arboledas"), + ("54099", "Bochalema"), + ("54109", "Bucarasica"), + ("54125", "Cácota"), + ("54128", "Cáchira"), + ("54172", "Chinácota"), + ("54174", "Chitagá"), + ("54206", "Convención"), + ("54223", "Cucutilla"), + ("54239", "Durania"), + ("54245", "El Carmen"), + ("54250", "El Tarra"), + ("54261", "El Zulia"), + ("54313", "Gramalote"), + ("54344", "Hacarí"), + ("54347", "Herrán"), + ("54377", "Labateca"), + ("54385", "La Esperanza"), + ("54398", "La Playa"), + ("54405", "Los Patios"), + ("54418", "Lourdes"), + ("54480", "Mutiscua"), + ("54498", "Ocaña"), + ("54518", "Pamplona"), + ("54520", "Pamplonita"), + ("54553", "Puerto Santander"), + ("54599", "Ragonvalia"), + ("54660", "Salazar"), + ("54670", "San Calixto"), + ("54673", "San Cayetano"), + ("54680", "Santiago"), + ("54720", "Sardinata"), + ("54743", "Silos"), + ("54800", "Teorama"), + ("54810", "Tibú"), + ("54820", "Toledo"), + ("54871", "Villa Caro"), + ("54874", "Villa del Rosario"), + ("63001", "Armenia"), + ("63111", "Buenavista"), + ("63130", "Calarcá"), + ("63190", "Circasia"), + ("63212", "Córdoba"), + ("63272", "Filandia"), + ("63302", "Génova"), + ("63401", "La Tebaida"), + ("63470", "Montenegro"), + ("63548", "Pijao"), + ("63594", "Quimbaya"), + ("63690", "Salento"), + ("66001", "Pereira"), + ("66045", "Apía"), + ("66075", "Balboa"), + ("66088", "Belén de Umbría"), + ("66170", "Dosquebradas"), + ("66318", "Guática"), + ("66383", "La Celia"), + ("66400", "La Virginia"), + ("66440", "Marsella"), + ("66456", "Mistrató"), + ("66572", "Pueblo Rico"), + ("66594", "Quinchía"), + ("66682", "Santa Rosa de Cabal"), + ("66687", "Santuario"), + ("68001", "Bucaramanga"), + ("68013", "Aguada"), + ("68020", "Albania"), + ("68051", "Aratoca"), + ("68077", "Barbosa"), + ("68079", "Barichara"), + ("68081", "Barrancabermeja"), + ("68092", "Betulia"), + ("68101", "Bolívar"), + ("68121", "Cabrera"), + ("68132", "California"), + ("68147", "Capitanejo"), + ("68152", "Carcasí"), + ("68160", "Cepitá"), + ("68162", "Cerrito"), + ("68167", "Charalá"), + ("68169", "Charta"), + ("68176", "Chima"), + ("68179", "Chipatá"), + ("68190", "Cimitarra"), + ("68207", "Concepción"), + ("68209", "Confines"), + ("68211", "Contratación"), + ("68217", "Coromoro"), + ("68229", "Curití"), + ("68235", "El Carmen de Chucurí"), + ("68245", "El Guacamayo"), + ("68250", "El Peñón"), + ("68255", "El Playón"), + ("68264", "Encino"), + ("68266", "Enciso"), + ("68271", "Florián"), + ("68276", "Floridablanca"), + ("68296", "Galán"), + ("68298", "Gámbita"), + ("68307", "Girón"), + ("68318", "Guaca"), + ("68320", "Guadalupe"), + ("68322", "Guapotá"), + ("68324", "Guavatá"), + ("68327", "Güepsa"), + ("68344", "Hato"), + ("68368", "Jesús María"), + ("68370", "Jordán"), + ("68377", "La Belleza"), + ("68385", "Landázuri"), + ("68397", "La Paz"), + ("68406", "Lebrija"), + ("68418", "Los Santos"), + ("68425", "Macaravita"), + ("68432", "Málaga"), + ("68444", "Matanza"), + ("68464", "Mogotes"), + ("68468", "Molagavita"), + ("68498", "Ocamonte"), + ("68500", "Oiba"), + ("68502", "Onzaga"), + ("68522", "Palmar"), + ("68524", "Palmas del Socorro"), + ("68533", "Páramo"), + ("68547", "Piedecuesta"), + ("68549", "Pinchote"), + ("68572", "Puente Nacional"), + ("68573", "Puerto Parra"), + ("68575", "Puerto Wilches"), + ("68615", "Rionegro"), + ("68655", "Sabana de Torres"), + ("68669", "San Andrés"), + ("68673", "San Benito"), + ("68679", "San Gil"), + ("68682", "San Joaquín"), + ("68684", "San José de Miranda"), + ("68686", "San Miguel"), + ("68689", "San Vicente de Chucurí"), + ("68705", "Santa Bárbara"), + ("68720", "Santa Helena del Opón"), + ("68745", "Simacota"), + ("68755", "Socorro"), + ("68770", "Suaita"), + ("68773", "Sucre"), + ("68780", "Suratá"), + ("68820", "Tona"), + ("68855", "Valle de San José"), + ("68861", "Vélez"), + ("68867", "Vetas"), + ("68872", "Villanueva"), + ("68895", "Zapatoca"), + ("70001", "Sincelejo"), + ("70110", "Buenavista"), + ("70124", "Caimito"), + ("70204", "Colosó"), + ("70215", "Corozal"), + ("70221", "Coveñas"), + ("70230", "Chalán"), + ("70233", "El Roble"), + ("70235", "Galeras"), + ("70265", "Guaranda"), + ("70400", "La Unión"), + ("70418", "Los Palmitos"), + ("70429", "Majagual"), + ("70473", "Morroa"), + ("70508", "Ovejas"), + ("70523", "Palmito"), + ("70670", "Sampués"), + ("70678", "San Benito Abad"), + ("70702", "San Juan de Betulia"), + ("70708", "San Marcos"), + ("70713", "San Onofre"), + ("70717", "San Pedro"), + ("70742", "San Luis de Sincé"), + ("70771", "Sucre"), + ("70820", "Santiago de Tolú"), + ("70823", "San José de Toluviejo"), + ("73001", "Ibagué"), + ("73024", "Alpujarra"), + ("73026", "Alvarado"), + ("73030", "Ambalema"), + ("73043", "Anzoátegui"), + ("73055", "Armero"), + ("73067", "Ataco"), + ("73124", "Cajamarca"), + ("73148", "Carmen de Apicalá"), + ("73152", "Casabianca"), + ("73168", "Chaparral"), + ("73200", "Coello"), + ("73217", "Coyaima"), + ("73226", "Cunday"), + ("73236", "Dolores"), + ("73268", "Espinal"), + ("73270", "Falan"), + ("73275", "Flandes"), + ("73283", "Fresno"), + ("73319", "Guamo"), + ("73347", "Herveo"), + ("73349", "Honda"), + ("73352", "Icononzo"), + ("73408", "Lérida"), + ("73411", "Líbano"), + ("73443", "San Sebastián de Mariquita"), + ("73449", "Melgar"), + ("73461", "Murillo"), + ("73483", "Natagaima"), + ("73504", "Ortega"), + ("73520", "Palocabildo"), + ("73547", "Piedras"), + ("73555", "Planadas"), + ("73563", "Prado"), + ("73585", "Purificación"), + ("73616", "Rioblanco"), + ("73622", "Roncesvalles"), + ("73624", "Rovira"), + ("73671", "Saldaña"), + ("73675", "San Antonio"), + ("73678", "San Luis"), + ("73686", "Santa Isabel"), + ("73770", "Suárez"), + ("73854", "Valle de San Juan"), + ("73861", "Venadillo"), + ("73870", "Villahermosa"), + ("73873", "Villarrica"), + ("76001", "Cali"), + ("76020", "Alcalá"), + ("76036", "Andalucía"), + ("76041", "Ansermanuevo"), + ("76054", "Argelia"), + ("76100", "Bolívar"), + ("76109", "Buenaventura"), + ("76111", "Guadalajara de Buga"), + ("76113", "Bugalagrande"), + ("76122", "Caicedonia"), + ("76126", "Calima"), + ("76130", "Candelaria"), + ("76147", "Cartago"), + ("76233", "Dagua"), + ("76243", "El Águila"), + ("76246", "El Cairo"), + ("76248", "El Cerrito"), + ("76250", "El Dovio"), + ("76275", "Florida"), + ("76306", "Ginebra"), + ("76318", "Guacarí"), + ("76364", "Jamundí"), + ("76377", "La Cumbre"), + ("76400", "La Unión"), + ("76403", "La Victoria"), + ("76497", "Obando"), + ("76520", "Palmira"), + ("76563", "Pradera"), + ("76606", "Restrepo"), + ("76616", "Riofrío"), + ("76622", "Roldanillo"), + ("76670", "San Pedro"), + ("76736", "Sevilla"), + ("76823", "Toro"), + ("76828", "Trujillo"), + ("76834", "Tuluá"), + ("76845", "Ulloa"), + ("76863", "Versalles"), + ("76869", "Vijes"), + ("76890", "Yotoco"), + ("76892", "Yumbo"), + ("76895", "Zarzal"), + ("81001", "Arauca"), + ("81065", "Arauquita"), + ("81220", "Cravo Norte"), + ("81300", "Fortul"), + ("81591", "Puerto Rondón"), + ("81736", "Saravena"), + ("81794", "Tame"), + ("85001", "Yopal"), + ("85010", "Aguazul"), + ("85015", "Chámeza"), + ("85125", "Hato Corozal"), + ("85136", "La Salina"), + ("85139", "Maní"), + ("85162", "Monterrey"), + ("85225", "Nunchía"), + ("85230", "Orocué"), + ("85250", "Paz de Ariporo"), + ("85263", "Pore"), + ("85279", "Recetor"), + ("85300", "Sabanalarga"), + ("85315", "Sácama"), + ("85325", "San Luis de Palenque"), + ("85400", "Támara"), + ("85410", "Tauramena"), + ("85430", "Trinidad"), + ("85440", "Villanueva"), + ("86001", "Mocoa"), + ("86219", "Colón"), + ("86320", "Orito"), + ("86568", "Puerto Asís"), + ("86569", "Puerto Caicedo"), + ("86571", "Puerto Guzmán"), + ("86573", "Puerto Leguízamo"), + ("86749", "Sibundoy"), + ("86755", "San Francisco"), + ("86757", "San Miguel"), + ("86760", "Santiago"), + ("86865", "Valle del Guamuez"), + ("86885", "Villagarzón"), + ("88001", "San Andrés"), + ("88564", "Providencia"), + ("91001", "Leticia"), + ("91263", "El Encanto"), + ("91405", "La Chorrera"), + ("91407", "La Pedrera"), + ("91430", "La Victoria"), + ("91460", "Mirití - Paraná"), + ("91530", "Puerto Alegría"), + ("91536", "Puerto Arica"), + ("91540", "Puerto Nariño"), + ("91669", "Puerto Santander"), + ("91798", "Tarapacá"), + ("94001", "Inírida"), + ("94343", "Barrancominas"), + ("94883", "San Felipe"), + ("94884", "Puerto Colombia"), + ("94885", "La Guadalupe"), + ("94886", "Cacahual"), + ("94887", "Pana Pana"), + ("94888", "Morichal"), + ("95001", "San José del Guaviare"), + ("95015", "Calamar"), + ("95025", "El Retorno"), + ("95200", "Miraflores"), + ("97001", "Mitú"), + ("97161", "Carurú"), + ("97511", "Pacoa"), + ("97666", "Taraira"), + ("97777", "Papunahua"), + ("97889", "Yavaraté"), + ("99001", "Puerto Carreño"), + ("99524", "La Primavera"), + ("99624", "Santa Rosalía"), + ("99773", "Cumaribo"), + ] + + street_prefixes = OrderedDict( + [ + ("Calle", 0.2), + ("Cl.", 0.2), + ("Carrera", 0.2), + ("Cr.", 0.2), + ("Diagonal", 0.05), + ("Dg.", 0.05), + ("Transversal", 0.05), + ("Tr.", 0.05), + ] + ) + street_suffixes = ["Sur", "Este", "Bis", "Bis {{random_uppercase_letter}}"] + street_name_formats = OrderedDict( + [ + ("{{street_prefix}} %ª", 0.1), + ("{{street_prefix}} %#", 0.3), + ("{{street_prefix}} 1##", 0.1), + ("{{street_prefix}} % {{street_suffix}}", 0.02), + ("{{street_prefix}} %# {{street_suffix}}", 0.02), + ("{{street_prefix}} 1## {{street_suffix}}", 0.02), + ("{{street_prefix}} %{{random_uppercase_letter}}", 0.06), + ("{{street_prefix}} %#{{random_uppercase_letter}}", 0.06), + ("{{street_prefix}} 1##{{random_uppercase_letter}}", 0.06), + ("{{street_prefix}} %{{random_uppercase_letter}} {{street_suffix}}", 0.02), + ("{{street_prefix}} %#{{random_uppercase_letter}} {{street_suffix}}", 0.02), + ( + "{{street_prefix}} 1##{{random_uppercase_letter}} {{street_suffix}}", + 0.02, + ), + ("Avenida {{last_name}}", 0.01), + ("Avenida calle %ª", 0.01), + ("Avenida calle %#", 0.01), + ("Avenida calle 1##", 0.01), + ("Avenida carrera %ª", 0.01), + ("Avenida carrera %#", 0.01), + ("Avenida carrera 1##", 0.01), + ("Avenida {{name}}", 0.01), + ("Avenida {{city}}", 0.01), + ("Avenida {{department}}", 0.01), + ("Av. {{last_name}}", 0.01), + ("Av. calle %ª", 0.01), + ("Av. calle %#", 0.01), + ("Av. calle 1##", 0.01), + ("Av. carrera %ª", 0.01), + ("Av. carrera %#", 0.01), + ("Av. carrera 1##", 0.01), + ("Av. {{name}}", 0.01), + ("Av. {{city}}", 0.01), + ("Av. {{department}}", 0.01), + ] + ) + building_number_formats = OrderedDict( + [ + ("%-%", 0.2), + ("%-%#", 0.2), + ("%#-%", 0.2), + ("%#-%#", 0.2), + ("%{{random_uppercase_letter}}-%", 0.05), + ("%{{random_uppercase_letter}}-%#", 0.05), + ("%#{{random_uppercase_letter}}-%", 0.05), + ("%#{{random_uppercase_letter}}-%#", 0.05), + ] + ) + secondary_address_formats = [ + "Apartamento %!!", + "Apto. %!!", + "Casa %!", + "Torre % apartamento %!!", + "Etapa % apartamento %!!", + "Local %!!", + "Oficina %!!", + "Bodega %!!", + ] + postcode_formats = ["{{department_code}}####"] + + def department_code(self) -> str: + """ + :example "11" + """ + return self.random_element(self.departments.keys()) + + def department(self) -> str: + """ + :example "Bogotá, D.C." + """ + return self.random_element(list(self.departments.values())) + + administrative_unit = department + + def municipality_code(self) -> str: + """ + :example "11001" + """ + return self.random_element(self.municipalities)[0] # type: ignore + + def municipality(self) -> str: + """ + :example "Bogotá, D.C." + """ + return self.random_element(self.municipalities)[1] # type: ignore + + city = municipality + + def street_prefix(self) -> str: + """ + :example "Calle" + """ + return self.random_element(self.street_prefixes) + + def street_suffix(self) -> str: + """ + :example "Sur" + """ + return self.generator.parse(self.random_element(self.street_suffixes)) + + def street_name(self) -> str: + """ + :example "Calle 1" + """ + pattern: str = self.random_element(self.street_name_formats) + return self.numerify(self.generator.parse(pattern)) + + def building_number(self) -> str: + """ + :example "2-3" + """ + return self.numerify(self.generator.parse(self.random_element(self.building_number_formats))) + + def secondary_address(self) -> str: + """ + :example "Apartamento 123" + """ + return self.numerify(self.random_element(self.secondary_address_formats)) + + def street_address(self) -> str: + """ + :example "Calle 1 # 2-3" + """ + return self.street_name() + " # " + self.building_number() + self.random_element(("", " Sur", " Este")) + + def postcode(self) -> str: + """ + :example "11001" + """ + return self.numerify(self.generator.parse(self.random_element(self.postcode_formats))) + + def address(self) -> str: + """ + :example "Calle 1 # 2-3\n11001\nBogotá D.C." + """ + municipality: Tuple[str, str] = self.random_element(self.municipalities) + municipality_code = municipality[0] + department_code = municipality_code[0:2] + is_department_capital = municipality_code[-3:] == "001" + + secondary_address: str = self.random_element( + [ + "\n" + self.secondary_address(), + "", + ] + ) + postcode = "\n" + department_code + self.numerify("####") + municipality_name = "\n" + municipality[1] + department_name = ", " + self.departments[department_code] if not is_department_capital else "" + + return self.street_address() + secondary_address + postcode + municipality_name + department_name diff --git a/faker/providers/automotive/es_CO/__init__.py b/faker/providers/automotive/es_CO/__init__.py new file mode 100644 index 0000000000..bd3e566131 --- /dev/null +++ b/faker/providers/automotive/es_CO/__init__.py @@ -0,0 +1,17 @@ +from collections import OrderedDict + +from .. import Provider as AutomotiveProvider + + +class Provider(AutomotiveProvider): + + license_formats = OrderedDict( + [ + ("???###", 0.6), + ("???##?", 0.3), + ("T####", 0.03), + ("??####", 0.01), + ("R#####", 0.03), + ("S#####", 0.03), + ] + ) diff --git a/faker/providers/person/es/__init__.py b/faker/providers/person/es/__init__.py new file mode 100644 index 0000000000..bcbb0fc13d --- /dev/null +++ b/faker/providers/person/es/__init__.py @@ -0,0 +1,187 @@ +from .. import Provider as PersonProvider + + +class Provider(PersonProvider): + + # https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes + language_names = [ + "Afar", + "Abjasio", + "Avéstico", + "Africaans", + "Akánico", + "Amhárico", + "Aragonés", + "Arábico", + "Asamés", + "Avar", + "Aimara", + "Azerí", + "Baskir", + "Bielorruso", + "Búlgaro", + "lenguas Bihari", + "Bislama", + "Bambara", + "Bengalí", + "Tibetano", + "Bretón", + "Bosnio", + "Catalán", + "Checheno", + "Chamorro", + "Corso", + "Cree", + "Checo", + "Eslavo eclesiástico", + "Chuvasio", + "Galés", + "Danés", + "Alemán", + "Maldivo", + "Dzongkha", + "Ewé", + "Griego", + "Inglés", + "Esperanto", + "Español", + "Estonio", + "Vasco", + "Persa", + "Fula", + "Finés", + "Fiyiano", + "Feroés", + "Francés", + "lenguas Frisonas", + "Irlandés", + "Gaélico", + "Gallego", + "Guaraní", + "Gujarati", + "Manés", + "Hausa", + "Hebreo", + "Hindú", + "Hiri Motu", + "Croata", + "Haitiano", + "Húngaro", + "Armenio", + "Herero", + "Interlingua", + "Indonés", + "Igbo", + "Nuosu", + "lenguas esquimales", + "Ido", + "Islandés", + "Italiano", + "Inuit", + "Japonés", + "Javanés", + "Georgiano", + "Congolés", + "Kikuyu", + "Kuanyama", + "Kazajo", + "Groenlandés", + "Camboyano", + "Canarés", + "Coreano", + "Kanurí", + "Kashmiri Masala", + "Kurdo", + "Komi", + "Córnico", + "Kirguís", + "Latín", + "Luxemburgués", + "Luganda", + "Limburgués", + "Lingala", + "Lao", + "Lituano", + "Kiluba", + "Letón", + "Malgache", + "Marshalés", + "Maorí", + "Macedonio", + "Malabar", + "Mongol", + "Marathí", + "Malayo", + "Maltés", + "Birmano", + "Nauru", + "Ndebele norte", + "Nepalí", + "Ndonga", + "Neerlandés", + "Nuevo Noruego", + "Noruego", + "Ndebele sur", + "Navajo", + "Chichewa", + "Occitano", + "Ojibwa", + "Oromo", + "Oriya", + "Osetio", + "Panyabí", + "Pali", + "Polaco", + "Pastún", + "Portugués", + "Quechua", + "Romanche", + "Rundi", + "Rumano", + "Ruso", + "Kiñaruanda", + "Sánscrito", + "Sardo", + "Sindi", + "Sami septentrional", + "Sango", + "Cingalés", + "Eslovaco", + "Samoano", + "Shona", + "Somalí", + "Albanés", + "Serbio", + "Suazi", + "Sesoto", + "Sondanés", + "Sueco", + "Swahili", + "Tamil", + "Télugu", + "Takiyo", + "Tailandés", + "Tigriña", + "Turcomano", + "Tagalo", + "Setsuana", + "Tongoano", + "Turco", + "Tsonga", + "Tártaro", + "Tahitiano", + "Uigur", + "Ucraniano", + "Urdu", + "Uzbeko", + "Venda", + "Vietnamita", + "Valón", + "Wólof", + "Xhosa", + "Yidis", + "Yoruba", + "Zhuang", + "Chino", + "Zulú", + ] diff --git a/faker/providers/person/es_CO/__init__.py b/faker/providers/person/es_CO/__init__.py new file mode 100644 index 0000000000..fabbdbd527 --- /dev/null +++ b/faker/providers/person/es_CO/__init__.py @@ -0,0 +1,971 @@ +from collections import OrderedDict + +from ..es import Provider as PersonProvider + + +class Provider(PersonProvider): + + formats_female = [ + "{{first_name_female}} {{last_name}}", + "{{first_name_female}} {{first_name_female}} {{last_name}}", + "{{first_name_female}} {{last_name}} {{last_name}}", + "{{first_name_female}} {{first_name_female}} {{last_name}} {{last_name}}", + ] + + formats_male = [ + "{{first_name_male}} {{last_name}}", + "{{first_name_male}} {{first_name_male}} {{last_name}}", + "{{first_name_male}} {{last_name}} {{last_name}}", + "{{first_name_male}} {{first_name_male}} {{last_name}} {{last_name}}", + ] + + formats = formats_female + formats_male + + # 300 female first names + # Source: Most frequent female first names from the dataset "Ciudadanía Digital" + # + # Weightings derived from total number on each name + first_names_female = OrderedDict( + [ + ("María", 0.091410602), + ("Luz", 0.034645603), + ("Patricia", 0.023351346), + ("Ana", 0.020151805), + ("Andrea", 0.018010166), + ("Diana", 0.016136401), + ("Sandra", 0.015622408), + ("Martha", 0.014981956), + ("Paola", 0.014810625), + ("Carmen", 0.013346151), + ("Marcela", 0.013283602), + ("Isabel", 0.013113631), + ("Milena", 0.012810402), + ("Lucía", 0.012599637), + ("Cecilia", 0.012194425), + ("Claudia", 0.011997259), + ("Carolina", 0.011933349), + ("Gloria", 0.011810970), + ("Rosa", 0.011619242), + ("Liliana", 0.011109328), + ("Elena", 0.010636128), + ("Alejandra", 0.010181965), + ("Adriana", 0.009594544), + ("Laura", 0.009359303), + ("Fernanda", 0.008134150), + ("Marina", 0.008090637), + ("Inés", 0.007652791), + ("Lorena", 0.007152395), + ("Ángela", 0.007043613), + ("Cristina", 0.006926673), + ("Leidy", 0.006914435), + ("Daniela", 0.006910356), + ("Olga", 0.006802934), + ("Esther", 0.006773019), + ("Tatiana", 0.006690073), + ("Johana", 0.006411320), + ("Rocío", 0.006339252), + ("Beatriz", 0.006067298), + ("Lina", 0.006034663), + ("Mónica", 0.006007468), + ("Alba", 0.006002029), + ("Luisa", 0.005946278), + ("Esperanza", 0.005904125), + ("Yaneth", 0.005904125), + ("Blanca", 0.005881009), + ("Amparo", 0.005864692), + ("Alexandra", 0.005845655), + ("Nancy", 0.005670245), + ("Margarita", 0.005626732), + ("Elizabeth", 0.005584579), + ("Stella", 0.005570981), + ("Karen", 0.005569622), + ("Angie", 0.005380613), + ("Viviana", 0.005365656), + ("Natalia", 0.005086903), + ("Mercedes", 0.005077385), + ("Eugenia", 0.004825827), + ("Valentina", 0.004602825), + ("Yolanda", 0.004540275), + ("Angélica", 0.004498122), + ("Paula", 0.004454609), + ("Camila", 0.004389340), + ("Teresa", 0.004377103), + ("Sofía", 0.004315913), + ("Vanessa", 0.004121466), + ("Nelly", 0.004039879), + ("Mary", 0.004038520), + ("Gladys", 0.003903902), + ("Ruth", 0.003796480), + ("Flor", 0.003716254), + ("Nubia", 0.003708095), + ("Johanna", 0.003701296), + ("Erika", 0.003684979), + ("Doris", 0.003572118), + ("Judith", 0.003490532), + ("Dayana", 0.003472855), + ("Sonia", 0.003355915), + ("Maritza", 0.003334158), + ("Edith", 0.003267529), + ("Clara", 0.003244413), + ("Consuelo", 0.003215858), + ("Julieth", 0.003123394), + ("Juliana", 0.003107077), + ("Dora", 0.003092119), + ("Victoria", 0.002935745), + ("Aura", 0.002856879), + ("Eliana", 0.002855519), + ("Astrid", 0.002844641), + ("Alicia", 0.002841921), + ("Katherine", 0.002833763), + ("Janeth", 0.002782091), + ("Leonor", 0.002742658), + ("Myriam", 0.002676029), + ("Lizeth", 0.002648834), + ("Mery", 0.002616199), + ("Nidia", 0.002609400), + ("Jenny", 0.002511497), + ("Kelly", 0.002495180), + ("Constanza", 0.002423112), + ("Ximena", 0.002387758), + ("Yulieth", 0.002376880), + ("Ligia", 0.002375520), + ("Sara", 0.002361922), + ("Socorro", 0.002338806), + ("Ingrid", 0.002322489), + ("Helena", 0.002319769), + ("Dary", 0.002318409), + ("Rosalba", 0.002280336), + ("Catalina", 0.002254500), + ("Fanny", 0.002216427), + ("Pilar", 0.002137560), + ("Yenny", 0.002126682), + ("Mariela", 0.002080449), + ("Yamile", 0.002062772), + ("Lilia", 0.002038297), + ("Karina", 0.002011101), + ("Mariana", 0.001977107), + ("Silvia", 0.001953991), + ("Julia", 0.001939033), + ("Maribel", 0.001898240), + ("Amanda", 0.001891441), + ("Lucy", 0.001888722), + ("Elsa", 0.001884642), + ("Jessica", 0.001869685), + ("Rosario", 0.001865606), + ("Fabiola", 0.001847929), + ("Marleny", 0.001808495), + ("Marta", 0.001805776), + ("Elvira", 0.001788099), + ("Omaira", 0.001769062), + ("Yuliana", 0.001756824), + ("Mireya", 0.001752745), + ("Marisol", 0.001695634), + ("Piedad", 0.001673878), + ("Rubiela", 0.001668439), + ("Deisy", 0.001665719), + ("Estela", 0.001595011), + ("Miriam", 0.001552858), + ("Manuela", 0.001537901), + ("Jennifer", 0.001536541), + ("Graciela", 0.001497108), + ("Yadira", 0.001494388), + ("Elisa", 0.001488949), + ("Yolima", 0.001472632), + ("Ruby", 0.001450876), + ("Gabriela", 0.001448156), + ("Libia", 0.001445436), + ("Yohana", 0.001430479), + ("Karol", 0.001422320), + ("Bibiana", 0.001397844), + ("Katerine", 0.001396485), + ("Edilma", 0.001389686), + ("Nohora", 0.001378808), + ("Shirley", 0.001365210), + ("Xiomara", 0.001321697), + ("Francy", 0.001316258), + ("Betty", 0.001305380), + ("Melissa", 0.001297221), + ("Estella", 0.001272746), + ("Carmenza", 0.001271386), + ("Edna", 0.001261867), + ("Mayra", 0.001260508), + ("Vanesa", 0.001259148), + ("Lida", 0.001245550), + ("Raquel", 0.001244190), + ("Estefanía", 0.001231952), + ("Hilda", 0.001230593), + ("Mabel", 0.001222434), + ("Cindy", 0.001212916), + ("Liseth", 0.001208836), + ("Wendy", 0.001199318), + ("Lady", 0.001185720), + ("Yésica", 0.001180281), + ("Mayerly", 0.001173482), + ("Verónica", 0.001173482), + ("Norma", 0.001157165), + ("Gina", 0.001150366), + ("Susana", 0.001150366), + ("Yesenia", 0.001144927), + ("Maira", 0.001142208), + ("Nora", 0.001134049), + ("Marlene", 0.001128610), + ("Valeria", 0.001124531), + ("Elvia", 0.001116372), + ("Yasmín", 0.001116372), + ("Bertha", 0.001113652), + ("Aida", 0.001112293), + ("Tania", 0.001102774), + ("Ester", 0.001071499), + ("Yineth", 0.001067420), + ("Dolores", 0.001045664), + ("Irma", 0.001041585), + ("Matilde", 0.001036145), + ("Aurora", 0.001029347), + ("Magda", 0.001022548), + ("Miryam", 0.001022548), + ("Esmeralda", 0.001007590), + ("Lucero", 0.001006230), + ("Lucila", 0.001003511), + ("Gladis", 0.001000791), + ("Juana", 0.000984474), + ("Jimena", 0.000983114), + ("Margoth", 0.000965437), + ("Antonia", 0.000961358), + ("Yuri", 0.000953199), + ("Josefina", 0.000950480), + ("Liceth", 0.000939602), + ("Yuli", 0.000932803), + ("Nury", 0.000930083), + ("Nataly", 0.000924644), + ("Vilma", 0.000921925), + ("Yéssica", 0.000921925), + ("Yudy", 0.000921925), + ("Yuly", 0.000916486), + ("Heidy", 0.000913766), + ("Nelcy", 0.000890650), + ("Ofelia", 0.000889290), + ("Jhoana", 0.000887930), + ("Gilma", 0.000875692), + ("Zoraida", 0.000868894), + ("Enith", 0.000856656), + ("Elsy", 0.000853936), + ("Clemencia", 0.000828100), + ("Danna", 0.000824021), + ("Emilia", 0.000818582), + ("Cielo", 0.000817222), + ("Linda", 0.000817222), + ("Damaris", 0.000815863), + ("Delia", 0.000811783), + ("Irene", 0.000810423), + ("Virginia", 0.000803625), + ("Paulina", 0.000796826), + ("Alcira", 0.000790027), + ("Magaly", 0.000785948), + ("Ivonne", 0.000779149), + ("Oliva", 0.000768271), + ("Yina", 0.000753313), + ("Carol", 0.000745154), + ("Geraldine", 0.000745154), + ("Yeimy", 0.000738356), + ("Magdalena", 0.000732917), + ("Yanet", 0.000731557), + ("Yazmín", 0.000730197), + ("Sindy", 0.000728837), + ("Dahiana", 0.000726118), + ("Alix", 0.000724758), + ("Rita", 0.000724758), + ("Lidia", 0.000719319), + ("Marlén", 0.000716599), + ("Michel", 0.000715239), + ("Yeny", 0.000708441), + ("Marly", 0.000703002), + ("Dolly", 0.000698922), + ("Leydi", 0.000694843), + ("Nayibe", 0.000694843), + ("Yury", 0.000693483), + ("Denis", 0.000690764), + ("Derly", 0.000689404), + ("Yurany", 0.000688044), + ("Emilce", 0.000685325), + ("Tulia", 0.000683965), + ("Yenifer", 0.000681245), + ("Anyi", 0.000677166), + ("Francia", 0.000673087), + ("Jazmín", 0.000671727), + ("Josefa", 0.000671727), + ("Janneth", 0.000669007), + ("Emilse", 0.000662208), + ("Jackeline", 0.000649970), + ("Concepción", 0.000645891), + ("Dina", 0.000644531), + ("Lisbeth", 0.000640452), + ("Nathalia", 0.000640452), + ("Amelia", 0.000639092), + ("Emma", 0.000637733), + ("Jacqueline", 0.000637733), + ("Zulma", 0.000637733), + ("Maricela", 0.000632293), + ("Adela", 0.000629574), + ("Ibeth", 0.000629574), + ("Candelaria", 0.000615976), + ("Mirian", 0.000613257), + ("Magnolia", 0.000611897), + ("Elcy", 0.000606458), + ("Aleida", 0.000603738), + ("Eva", 0.000598299), + ("Gisela", 0.000598299), + ("Yurani", 0.000596939), + ("Azucena", 0.000595580), + ("Amalia", 0.000591500), + ("Deicy", 0.000590141), + ("Nelsy", 0.000588781), + ("Iris", 0.000584701), + ("Katherin", 0.000584701), + ("Lilian", 0.000584701), + ("Leticia", 0.000575183), + ("Deyanira", 0.000573823), + ("Melba", 0.000573823), + ("Adiela", 0.000567024), + ("Catherine", 0.000557506), + ] + ) + + # 300 male first names + # Source: Most frequent male first names from the dataset "Ciudadanía Digital" + # + # Weightings derived from total number on each name + first_names_male = OrderedDict( + [ + ("José", 0.048691700), + ("Andrés", 0.039716926), + ("Luis", 0.038832502), + ("Carlos", 0.037462599), + ("Juan", 0.032670871), + ("Alberto", 0.021566442), + ("David", 0.020957759), + ("Antonio", 0.019540921), + ("Fernando", 0.019087709), + ("Jorge", 0.016852449), + ("Jesús", 0.016303901), + ("Alexander", 0.015906424), + ("Enrique", 0.015438545), + ("Javier", 0.014926665), + ("Manuel", 0.013744500), + ("Eduardo", 0.013292754), + ("Jhon", 0.012868877), + ("Diego", 0.012004987), + ("Camilo", 0.011381637), + ("Alejandro", 0.011356703), + ("Óscar", 0.010821355), + ("Daniel", 0.010819889), + ("Miguel", 0.010749487), + ("Felipe", 0.010291874), + ("Jairo", 0.010011734), + ("Mauricio", 0.009859196), + ("César", 0.009266647), + ("Alfonso", 0.008726899), + ("Rafael", 0.008559695), + ("Cristian", 0.008083016), + ("Sebastián", 0.007534468), + ("Ángel", 0.007062188), + ("Iván", 0.007059255), + ("Jaime", 0.007024054), + ("Julio", 0.006956586), + ("Julián", 0.006823115), + ("Fabián", 0.006730713), + ("Dario", 0.006658844), + ("William", 0.006591376), + ("Orlando", 0.006400704), + ("Francisco", 0.006356703), + ("Ricardo", 0.006339102), + ("Mario", 0.006192432), + ("Edwin", 0.006070695), + ("John", 0.006014960), + ("Víctor", 0.005956292), + ("Leonardo", 0.005865356), + ("Armando", 0.005843356), + ("Augusto", 0.005786154), + ("Pablo", 0.005552948), + ("Álvaro", 0.005506013), + ("Hernán", 0.005488413), + ("Fredy", 0.005476679), + ("Pedro", 0.005412144), + ("Héctor", 0.005325609), + ("Santiago", 0.005315342), + ("Edgar", 0.005305075), + ("Gustavo", 0.005247873), + ("Hernando", 0.005161338), + ("Guillermo", 0.005145204), + ("Esteban", 0.005055735), + ("Humberto", 0.004832796), + ("Nelson", 0.004813728), + ("Wilson", 0.004730126), + ("Arturo", 0.004656791), + ("Gabriel", 0.004545321), + ("Alfredo", 0.004297448), + ("Omar", 0.004282781), + ("Germán", 0.004224113), + ("Henry", 0.003967439), + ("Fabio", 0.003961572), + ("Alonso", 0.003751833), + ("Brayan", 0.003709299), + ("Hugo", 0.003684365), + ("Sergio", 0.003650631), + ("Alexis", 0.003374890), + ("Adolfo", 0.003335289), + ("Stiven", 0.003276621), + ("Kevin", 0.003134350), + ("Johan", 0.003075682), + ("Yesid", 0.003056615), + ("Ernesto", 0.002924611), + ("Raúl", 0.002763274), + ("Rodrigo", 0.002694339), + ("Roberto", 0.002585802), + ("Rubén", 0.002560868), + ("Anderson", 0.002525667), + ("Eliecer", 0.002511000), + ("Nicolás", 0.002471399), + ("Ferney", 0.002395131), + ("Steven", 0.002390730), + ("Emilio", 0.002324729), + ("Yeison", 0.002311528), + ("Arley", 0.002222059), + ("Néstor", 0.002200059), + ("Albeiro", 0.002125257), + ("Wilmer", 0.002101789), + ("Gerardo", 0.002095923), + ("Jair", 0.002091522), + ("Jonathan", 0.002032854), + ("Marco", 0.001984453), + ("Elkin", 0.001971253), + ("Harold", 0.001940452), + ("Martín", 0.001915518), + ("Elías", 0.001912584), + ("Robinson", 0.001908184), + ("Alirio", 0.001884717), + ("Edison", 0.001871517), + ("Adrián", 0.001861250), + ("Edinson", 0.001840716), + ("Ramiro", 0.001831916), + ("Jhonatan", 0.001828982), + ("León", 0.001820182), + ("Milton", 0.001770314), + ("Oswaldo", 0.001726313), + ("Ignacio", 0.001714579), + ("Freddy", 0.001692578), + ("Segundo", 0.001663244), + ("Ramón", 0.001651511), + ("Duván", 0.001632444), + ("Samuel", 0.001554708), + ("Gilberto", 0.001535641), + ("Walter", 0.001453505), + ("Alex", 0.001428571), + ("Libardo", 0.001422705), + ("James", 0.001421238), + ("Vicente", 0.001394837), + ("Ariel", 0.001378703), + ("Danilo", 0.001377237), + ("Giovanny", 0.001353769), + ("Gregorio", 0.001334702), + ("Gonzalo", 0.001325902), + ("Michael", 0.001267234), + ("Marlon", 0.001251100), + ("Efrain", 0.001186565), + ("Mateo", 0.001180698), + ("Bernardo", 0.001167498), + ("Leandro", 0.001164564), + ("Jhoan", 0.001158698), + ("Rodolfo", 0.001155764), + ("Joaquín", 0.001127897), + ("Felix", 0.001089762), + ("Jeison", 0.001080962), + ("Leonel", 0.001078029), + ("Estiven", 0.001070695), + ("Wilmar", 0.001063362), + ("Edward", 0.001057495), + ("Christian", 0.001054561), + ("Jefferson", 0.001054561), + ("Ronald", 0.000992960), + ("René", 0.000990026), + ("Aníbal", 0.000972426), + ("Richard", 0.000966559), + ("Andrey", 0.000959226), + ("Jean", 0.000956292), + ("Jaider", 0.000954825), + ("Darwin", 0.000951892), + ("Ever", 0.000951892), + ("Arnulfo", 0.000950425), + ("Giovanni", 0.000940158), + ("Emiro", 0.000934292), + ("Uriel", 0.000929891), + ("Franklin", 0.000924025), + ("Edilberto", 0.000912291), + ("Smith", 0.000897624), + ("Octavio", 0.000890290), + ("Cristhian", 0.000875623), + ("Tulio", 0.000875623), + ("Eduar", 0.000862423), + ("Junior", 0.000859490), + ("Didier", 0.000855089), + ("Reinaldo", 0.000847756), + ("Fidel", 0.000830155), + ("Willian", 0.000819889), + ("Jimmy", 0.000815488), + ("Eder", 0.000758287), + ("Isaac", 0.000758287), + ("Saúl", 0.000746553), + ("Danny", 0.000745087), + ("Marcos", 0.000740686), + ("Yair", 0.000730419), + ("Moisés", 0.000724553), + ("Edwar", 0.000723086), + ("Jhonny", 0.000718686), + ("Miller", 0.000717219), + ("Santos", 0.000717219), + ("Esneider", 0.000715752), + ("Franco", 0.000714286), + ("Abel", 0.000705485), + ("Dairo", 0.000701085), + ("Roger", 0.000701085), + ("Aldemar", 0.000695219), + ("Rolando", 0.000693752), + ("Hermes", 0.000689352), + ("Jeferson", 0.000684952), + ("Efrén", 0.000679085), + ("Jeisson", 0.000679085), + ("Ismael", 0.000674685), + ("Edgardo", 0.000673218), + ("Maicol", 0.000661484), + ("Brandon", 0.000654151), + ("Bryan", 0.000654151), + ("Robert", 0.000649751), + ("Eduard", 0.000636550), + ("Nilson", 0.000635084), + ("Agustín", 0.000632150), + ("Tomás", 0.000630683), + ("Edilson", 0.000621883), + ("Aurelio", 0.000618950), + ("Domingo", 0.000618950), + ("Arbey", 0.000616016), + ("Joan", 0.000614550), + ("Yeferson", 0.000607216), + ("Samir", 0.000602816), + ("Wilder", 0.000602816), + ("Ciro", 0.000599883), + ("Josué", 0.000598416), + ("Joel", 0.000596949), + ("Horacio", 0.000591082), + ("Jader", 0.000591082), + ("Gerson", 0.000583749), + ("Marino", 0.000579349), + ("Erick", 0.000572015), + ("Eugenio", 0.000561748), + ("Benjamín", 0.000558815), + ("Norberto", 0.000557348), + ("Alcides", 0.000555881), + ("Israel", 0.000539748), + ("Yamid", 0.000535348), + ("Emerson", 0.000525081), + ("Frank", 0.000504547), + ("Geovanny", 0.000504547), + ("Gildardo", 0.000495747), + ("Vladimir", 0.000495747), + ("Silvio", 0.000485480), + ("Dagoberto", 0.000479613), + ("Misael", 0.000472279), + ("Adalberto", 0.000464946), + ("Elmer", 0.000464946), + ("Campo", 0.000460546), + ("Herney", 0.000456145), + ("Eider", 0.000454679), + ("Farid", 0.000451745), + ("Edisson", 0.000447345), + ("Evelio", 0.000442945), + ("Bladimir", 0.000429745), + ("Heriberto", 0.000423878), + ("Sneider", 0.000422411), + ("Nel", 0.000419478), + ("Rigoberto", 0.000419478), + ("Jhony", 0.000416544), + ("Salvador", 0.000415078), + ("Argemiro", 0.000410678), + ("Brian", 0.000407744), + ("Abelardo", 0.000404811), + ("Federico", 0.000401877), + ("Jonatan", 0.000398944), + ("Wilfredo", 0.000397477), + ("Faber", 0.000396011), + ("Osvaldo", 0.000394544), + ("Simón", 0.000394544), + ("Elver", 0.000390144), + ("Alveiro", 0.000388677), + ("Jerson", 0.000385744), + ("Ovidio", 0.000381344), + ("Elvis", 0.000375477), + ("Norbey", 0.000375477), + ("Wilman", 0.000374010), + ("Johnny", 0.000372543), + ("Cristobal", 0.000368143), + ("Harvey", 0.000366676), + ("Ancizar", 0.000363743), + ("Yerson", 0.000363743), + ("Román", 0.000362276), + ("Ronal", 0.000362276), + ("Reinel", 0.000360810), + ("Albert", 0.000359343), + ("Darío", 0.000359343), + ("Edier", 0.000357876), + ("Neider", 0.000353476), + ("Harol", 0.000352009), + ("Paulo", 0.000352009), + ("Deiby", 0.000347609), + ("Dany", 0.000346143), + ("Leider", 0.000341742), + ("Damián", 0.000340276), + ("Aldair", 0.000335876), + ("Gallego", 0.000335876), + ("Abraham", 0.000332942), + ("Yecid", 0.000331476), + ("Ocampo", 0.000324142), + ("Wilfrido", 0.000324142), + ("Lorenzo", 0.000318275), + ("Paul", 0.000318275), + ("Wilber", 0.000316808), + ("Bayron", 0.000315342), + ("Dubán", 0.000312408), + ("Jhan", 0.000312408), + ("Isaías", 0.000310942), + ("Isidro", 0.000310942), + ] + ) + + first_names = first_names_female.copy() + first_names.update(first_names_male) + + # 300 last names + # Source: Most frequent last names from the dataset "Ciudadanía Digital" + # + # Weightings derived from total number on each name + last_names = OrderedDict( + [ + ("Rodríguez", 0.027384697), + ("Gómez", 0.020422368), + ("Martínez", 0.020115369), + ("García", 0.019433148), + ("López", 0.019162104), + ("González", 0.018265076), + ("Hernández", 0.01699467), + ("Sánchez", 0.016893259), + ("Pérez", 0.016406486), + ("Díaz", 0.015069702), + ("Ramírez", 0.014970134), + ("Rojas", 0.012601722), + ("Torres", 0.012484639), + ("Moreno", 0.01134238), + ("Vargas", 0.010733913), + ("Muñoz", 0.010541231), + ("Ortiz", 0.01009871), + ("Castro", 0.009097505), + ("Gutiérrez", 0.008656827), + ("Jiménez", 0.008560948), + ("Suárez", 0.008066799), + ("Álvarez", 0.008056658), + ("Ruiz", 0.007958934), + ("Valencia", 0.007941418), + ("Quintero", 0.00766392), + ("Herrera", 0.007485989), + ("Romero", 0.00748138), + ("Mosquera", 0.007114455), + ("Morales", 0.007082188), + ("Arias", 0.006243241), + ("Rivera", 0.006023824), + ("Flórez", 0.005914116), + ("Giraldo", 0.005782281), + ("Medina", 0.005736185), + ("Castillo", 0.005722356), + ("Parra", 0.005665197), + ("Peña", 0.005635696), + ("Guerrero", 0.005407982), + ("Salazar", 0.005365573), + ("Osorio", 0.005327775), + ("Mejía", 0.005317634), + ("Mendoza", 0.005201472), + ("Marín", 0.005053043), + ("Cardona", 0.00496546), + ("Cárdenas", 0.004892629), + ("Cruz", 0.004795827), + ("Restrepo", 0.004729449), + ("Correa", 0.004724839), + ("Ortega", 0.004712854), + ("Acosta", 0.004640023), + ("Ramos", 0.004636335), + ("Reyes", 0.004593005), + ("Rincón", 0.004554284), + ("Zapata", 0.004487906), + ("Sierra", 0.004380963), + ("Mora", 0.004333945), + ("Palacios", 0.004313663), + ("Molina", 0.004285083), + ("Delgado", 0.004150483), + ("Guzmán", 0.004148639), + ("Silva", 0.00413942), + ("Contreras", 0.004136654), + ("Lozano", 0.004089636), + ("Montoya", 0.004063823), + ("Ríos", 0.003995601), + ("Vásquez", 0.003978084), + ("Caicedo", 0.003936598), + ("Cortés", 0.003899721), + ("Velásquez", 0.003888658), + ("Londoño", 0.003881283), + ("Ospina", 0.003877595), + ("Jaramillo", 0.003845328), + ("Córdoba", 0.003807529), + ("Escobar", 0.003759589), + ("Murillo", 0.003740229), + ("Orozco", 0.00373101), + ("Fernández", 0.003705196), + ("Vega", 0.003632364), + ("Hurtado", 0.003556767), + ("Carvajal", 0.003517124), + ("Agudelo", 0.00351528), + ("Calderón", 0.003481169), + ("León", 0.003475638), + ("Ávila", 0.003279269), + ("Garzón", 0.003224876), + ("Beltrán", 0.0032175), + ("Trujillo", 0.00320275), + ("Pineda", 0.003086588), + ("Méndez", 0.003059852), + ("Barrera", 0.003041414), + ("Acevedo", 0.002976879), + ("Henao", 0.002974113), + ("Bedoya", 0.002971348), + ("Franco", 0.002971348), + ("Jaimes", 0.002916954), + ("Bernal", 0.002892063), + ("Arango", 0.002830294), + ("Hoyos", 0.002818309), + ("Navarro", 0.002813699), + ("Durán", 0.002772213), + ("Vergara", 0.002759306), + ("Soto", 0.002739024), + ("Camacho", 0.002672646), + ("Sandoval", 0.002652363), + ("Gil", 0.002644988), + ("Buitrago", 0.002634847), + ("Duarte", 0.002609033), + ("Carrillo", 0.002527904), + ("Duque", 0.002526982), + ("Pacheco", 0.002519607), + ("Barrios", 0.002500247), + ("Aguirre", 0.002496559), + ("Vélez", 0.002459682), + ("Benavides", 0.002455994), + ("Bermúdez", 0.002447697), + ("Narváez", 0.002442166), + ("Rueda", 0.002432025), + ("Toro", 0.002431103), + ("Blanco", 0.002385007), + ("Amaya", 0.002381319), + ("Forero", 0.002380397), + ("Becerra", 0.002371178), + ("Pinzón", 0.002364724), + ("Camargo", 0.002363802), + ("Vanegas", 0.002347208), + ("Bonilla", 0.002326004), + ("Padilla", 0.002326004), + ("Ariza", 0.00231955), + ("Ardila", 0.002313097), + ("Galvis", 0.0023048), + ("Daza", 0.002289127), + ("Mena", 0.002284517), + ("Villamizar", 0.002254094), + ("Sarmiento", 0.002245797), + ("Cano", 0.002234734), + ("Zambrano", 0.00223289), + ("Espinosa", 0.00222828), + ("Gallego", 0.00222828), + ("Tovar", 0.002224593), + ("Uribe", 0.002219061), + ("Ochoa", 0.002190482), + ("Castellanos", 0.002181262), + ("Cabrera", 0.002177575), + ("Castañeda", 0.002145307), + ("Solano", 0.002143464), + ("Fuentes", 0.002104743), + ("Perdomo", 0.002103821), + ("Guevara", 0.002101977), + ("Castaño", 0.002077085), + ("Patiño", 0.002046662), + ("Ocampo", 0.002029146), + ("Páez", 0.002020848), + ("Serna", 0.002020848), + ("Mesa", 0.002005176), + ("Angulo", 0.001987659), + ("Mercado", 0.001982128), + ("Alzate", 0.001969221), + ("Rosero", 0.001952626), + ("Bautista", 0.001948939), + ("Vera", 0.001932344), + ("Meneses", 0.0019305), + ("Arenas", 0.001922203), + ("Cifuentes", 0.001902843), + ("Arévalo", 0.001896389), + ("Montes", 0.001878873), + ("Arrieta", 0.001876107), + ("Guerra", 0.001869653), + ("Aguilar", 0.001855825), + ("Ayala", 0.001849371), + ("Figueroa", 0.001845684), + ("Fonseca", 0.001840152), + ("Pinto", 0.001832777), + ("Bravo", 0.001805119), + ("Luna", 0.001801431), + ("Niño", 0.001798666), + ("Salcedo", 0.00179129), + ("Serrano", 0.001790368), + ("Roa", 0.001773774), + ("Palacio", 0.001770086), + ("Perea", 0.001765476), + ("Velasco", 0.001761789), + ("Villa", 0.001760867), + ("Sepúlveda", 0.001755335), + ("Benítez", 0.001744272), + ("Meza", 0.001741507), + ("Sanabria", 0.001737819), + ("Miranda", 0.001722146), + ("Gaitán", 0.001714771), + ("Melo", 0.00170463), + ("Márquez", 0.001678816), + ("Ordóñez", 0.001675128), + ("Zuluaga", 0.001673285), + ("Andrade", 0.001663143), + ("Estrada", 0.00165669), + ("Prieto", 0.00162811), + ("Alvarado", 0.001624423), + ("Leal", 0.001623501), + ("Gaviria", 0.001616125), + ("Salas", 0.001603219), + ("Polo", 0.001597687), + ("Bohórquez", 0.001585702), + ("Arboleda", 0.001580171), + ("Pulido", 0.001580171), + ("Pardo", 0.001579249), + ("Monsalve", 0.001575561), + ("Cuéllar", 0.001573717), + ("Rangel", 0.001571873), + ("Nieto", 0.001570029), + ("Loaiza", 0.00156542), + ("Rivas", 0.001562654), + ("Murcia", 0.001561732), + ("Campo", 0.001555279), + ("Naranjo", 0.001555279), + ("Galindo", 0.001538684), + ("Santos", 0.001537762), + ("Lara", 0.001532231), + ("Triana", 0.001510105), + ("Burbano", 0.001485213), + ("Maldonado", 0.001485213), + ("Galeano", 0.001476916), + ("Pabón", 0.001464931), + ("Rentería", 0.001462165), + ("Espitia", 0.001458477), + ("Fajardo", 0.001457555), + ("Gamboa", 0.001455711), + ("Chávez", 0.001436351), + ("Vallejo", 0.001435429), + ("Barreto", 0.001431742), + ("Caro", 0.001415147), + ("Ceballos", 0.001407772), + ("Alarcón", 0.001405006), + ("Prada", 0.00140224), + ("Villegas", 0.001384724), + ("Cáceres", 0.001381958), + ("Caballero", 0.001380114), + ("Salgado", 0.001380114), + ("Velandia", 0.001373661), + ("Carmona", 0.001365363), + ("Chaparro", 0.001364441), + ("Oviedo", 0.001360754), + ("Granados", 0.001348769), + ("Montenegro", 0.001348769), + ("Saavedra", 0.00133955), + ("Betancur", 0.001338628), + ("Rubio", 0.001335862), + ("Cuesta", 0.001312814), + ("Rico", 0.001300829), + ("Ballesteros", 0.001299907), + ("Ibarra", 0.001298985), + ("Valderrama", 0.001283312), + ("Barbosa", 0.001277781), + ("Garcés", 0.001269484), + ("Monroy", 0.001253811), + ("Erazo", 0.001251045), + ("Núñez", 0.001245514), + ("Quiroga", 0.001231685), + ("Angarita", 0.001230763), + ("Cantillo", 0.001227997), + ("Posada", 0.001214168), + ("Pedraza", 0.001210481), + ("Arteaga", 0.001204027), + ("Yepes", 0.001204027), + ("Bustos", 0.001198496), + ("Olaya", 0.001196652), + ("Salamanca", 0.001189277), + ("Burgos", 0.001186511), + ("Corredor", 0.001180979), + ("Alfonso", 0.001173604), + ("Paz", 0.001168072), + ("Parada", 0.001161619), + ("Bolaños", 0.001150556), + ("Tamayo", 0.001149634), + ("Manrique", 0.001144103), + ("Domínguez", 0.001138571), + ("Cardozo", 0.001134883), + ("Quiroz", 0.001134883), + ("Bastidas", 0.001127508), + ("Obando", 0.001112757), + ("Rendón", 0.001112757), + ("Mantilla", 0.001109991), + ("Gonzáles", 0.001107226), + ("Puentes", 0.00110446), + ("Bejarano", 0.001088787), + ("Riascos", 0.001086943), + ("Castrillón", 0.001086022), + ("Bustamante", 0.0010851), + ("Rengifo", 0.0010851), + ("Ospino", 0.001083256), + ("Ojeda", 0.001081412), + ("Villamil", 0.001073115), + ("Cerón", 0.00105652), + ("Arroyo", 0.001055598), + ("Ángel", 0.001053754), + ("Chacón", 0.001050067), + ("Portilla", 0.001042691), + ("Barragán", 0.001041769), + ("Orjuela", 0.001039926), + ("Bolívar", 0.001024253), + ("Molano", 0.001021487), + ("Anaya", 0.001016878), + ] + ) + + prefixes_female = OrderedDict( + [ + ("Sra.", 0.5), + ("Srta.", 0.2), + ("Dra.", 0.2), + ("Doña", 0.05), + ("Dña.", 0.05), + ] + ) + + prefixes_male = OrderedDict( + [ + ("Sr.", 0.7), + ("Dr.", 0.2), + ("Don", 0.05), + ("D.", 0.05), + ] + ) diff --git a/faker/providers/person/es_ES/__init__.py b/faker/providers/person/es_ES/__init__.py index d76c1e65c7..7223e89476 100644 --- a/faker/providers/person/es_ES/__init__.py +++ b/faker/providers/person/es_ES/__init__.py @@ -1,6 +1,6 @@ from typing import Tuple -from .. import Provider as PersonProvider +from ..es import Provider as PersonProvider class Provider(PersonProvider): @@ -2085,186 +2085,3 @@ class Provider(PersonProvider): ) prefixes = ("de", "del") - - # https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes - language_names = [ - "Afar", - "Abjasio", - "Avéstico", - "Africaans", - "Akánico", - "Amhárico", - "Aragonés", - "Arábico", - "Asamés", - "Avar", - "Aimara", - "Azerí", - "Baskir", - "Bielorruso", - "Búlgaro", - "lenguas Bihari", - "Bislama", - "Bambara", - "Bengalí", - "Tibetano", - "Bretón", - "Bosnio", - "Catalán", - "Checheno", - "Chamorro", - "Corso", - "Cree", - "Checo", - "Eslavo eclesiástico", - "Chuvasio", - "Galés", - "Danés", - "Alemán", - "Maldivo", - "Dzongkha", - "Ewé", - "Griego", - "Inglés", - "Esperanto", - "Español", - "Estonio", - "Vasco", - "Persa", - "Fula", - "Finés", - "Fiyiano", - "Feroés", - "Francés", - "lenguas Frisonas", - "Irlandés", - "Gaélico", - "Gallego", - "Guaraní", - "Gujarati", - "Manés", - "Hausa", - "Hebreo", - "Hindú", - "Hiri Motu", - "Croata", - "Haitiano", - "Húngaro", - "Armenio", - "Herero", - "Interlingua", - "Indonés", - "Igbo", - "Nuosu", - "lenguas esquimales", - "Ido", - "Islandés", - "Italiano", - "Inuit", - "Japonés", - "Javanés", - "Georgiano", - "Congolés", - "Kikuyu", - "Kuanyama", - "Kazajo", - "Groenlandés", - "Camboyano", - "Canarés", - "Coreano", - "Kanurí", - "Kashmiri Masala", - "Kurdo", - "Komi", - "Córnico", - "Kirguís", - "Latín", - "Luxemburgués", - "Luganda", - "Limburgués", - "Lingala", - "Lao", - "Lituano", - "Kiluba", - "Letón", - "Malgache", - "Marshalés", - "Maorí", - "Macedonio", - "Malabar", - "Mongol", - "Marathí", - "Malayo", - "Maltés", - "Birmano", - "Nauru", - "Ndebele norte", - "Nepalí", - "Ndonga", - "Neerlandés", - "Nuevo Noruego", - "Noruego", - "Ndebele sur", - "Navajo", - "Chichewa", - "Occitano", - "Ojibwa", - "Oromo", - "Oriya", - "Osetio", - "Panyabí", - "Pali", - "Polaco", - "Pastún", - "Portugués", - "Quechua", - "Romanche", - "Rundi", - "Rumano", - "Ruso", - "Kiñaruanda", - "Sánscrito", - "Sardo", - "Sindi", - "Sami septentrional", - "Sango", - "Cingalés", - "Eslovaco", - "Samoano", - "Shona", - "Somalí", - "Albanés", - "Serbio", - "Suazi", - "Sesoto", - "Sondanés", - "Sueco", - "Swahili", - "Tamil", - "Télugu", - "Takiyo", - "Tailandés", - "Tigriña", - "Turcomano", - "Tagalo", - "Setsuana", - "Tongoano", - "Turco", - "Tsonga", - "Tártaro", - "Tahitiano", - "Uigur", - "Ucraniano", - "Urdu", - "Uzbeko", - "Venda", - "Vietnamita", - "Valón", - "Wólof", - "Xhosa", - "Yidis", - "Yoruba", - "Zhuang", - "Chino", - "Zulú", - ] diff --git a/faker/providers/person/es_MX/__init__.py b/faker/providers/person/es_MX/__init__.py index a389fa7e1f..9ec7c98606 100644 --- a/faker/providers/person/es_MX/__init__.py +++ b/faker/providers/person/es_MX/__init__.py @@ -1,4 +1,4 @@ -from .. import Provider as PersonProvider +from ..es import Provider as PersonProvider class Provider(PersonProvider): diff --git a/faker/providers/phone_number/es_CO/__init__.py b/faker/providers/phone_number/es_CO/__init__.py new file mode 100644 index 0000000000..ba3b34e8b1 --- /dev/null +++ b/faker/providers/phone_number/es_CO/__init__.py @@ -0,0 +1,42 @@ +from .. import Provider as PhoneNumberProvider + + +class Provider(PhoneNumberProvider): + formats = [ + "%######", + "60%%######", + "5760%%######", + "+5760%%######", + "(+57)60%%######", + "%## ## ##", + "60% %## ## ##", + "57 60% %## ## ##", + "+57 60% %## ## ##", + "(+57) 60% %## ## ##", + "30########", + "5730########", + "+5730########", + "(+57)30########", + "30# ### ## ##", + "57 30# ### ## ##", + "+57 30# ### ## ##", + "(+57) 30# ### ## ##", + "31########", + "5731########", + "+5731########", + "(+57)31########", + "31# ### ## ##", + "57 31# ### ## ##", + "+57 31# ### ## ##", + "(+57) 31# ### ## ##", + "32########", + "5732########", + "+5732########", + "(+57)32########", + "32# ### ## ##", + "57 32# ### ## ##", + "+57 32# ### ## ##", + "(+57) 32# ### ## ##", + "01800#######", + "01 800# ### ###", + ] diff --git a/faker/providers/ssn/es_CO/__init__.py b/faker/providers/ssn/es_CO/__init__.py new file mode 100644 index 0000000000..ec124dbd9c --- /dev/null +++ b/faker/providers/ssn/es_CO/__init__.py @@ -0,0 +1,73 @@ +import operator + +from collections import OrderedDict + +from .. import Provider as BaseProvider + + +def nit_check_digit(nit: str) -> str: + """ + Calculate the check digit of a NIT. + + The check digit is calculated by multiplying the reversed digits of a NIT + by (3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71), respectively, + adding the results and applying MOD 11. If the result is greater than or equal + to 2, the check digit is 11 minus the result. Otherwise, the check digit is the + result. + """ + reversed_nit = nit[::-1] + digits = (int(digit) for digit in reversed_nit) + multipliers = (3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71) + value = sum(map(operator.mul, digits, multipliers)) % 11 + if value >= 2: + value = 11 - value + return str(value) + + +class Provider(BaseProvider): + + nuip_formats = OrderedDict( + [ + ("10########", 0.25), + ("11########", 0.25), + ("12########", 0.1), + ("%!######", 0.4), + ] + ) + + legal_person_nit_formats = [ + "8########", + "9########", + ] + + def nuip(self) -> str: + """ + https://es.wikipedia.org/wiki/C%C3%A9dula_de_Ciudadan%C3%ADa_(Colombia) + :example "1095312769" + """ + return self.numerify(self.random_element(self.nuip_formats)) + + natural_person_nit = nuip + + def natural_person_nit_with_check_digit(self) -> str: + """ + :example "1095312769-0" + """ + nit = self.natural_person_nit() + check_digit = nit_check_digit(nit) + return f"{nit}-{check_digit}" + + def legal_person_nit(self) -> str: + """ + https://es.wikipedia.org/wiki/N%C3%BAmero_de_Identificaci%C3%B3n_Tributaria + :example "967807269" + """ + return self.numerify(self.random_element(self.legal_person_nit_formats)) + + def legal_person_nit_with_check_digit(self) -> str: + """ + :example "967807269-7" + """ + nit = self.legal_person_nit() + check_digit = nit_check_digit(nit) + return f"{nit}-{check_digit}" diff --git a/tests/providers/test_address.py b/tests/providers/test_address.py index 790f06abba..0ac85133db 100644 --- a/tests/providers/test_address.py +++ b/tests/providers/test_address.py @@ -19,6 +19,7 @@ from faker.providers.address.en_IN import Provider as EnInAddressProvider from faker.providers.address.en_PH import Provider as EnPhAddressProvider from faker.providers.address.en_US import Provider as EnUsAddressProvider +from faker.providers.address.es_CO import Provider as EsCoAddressProvider from faker.providers.address.es_ES import Provider as EsEsAddressProvider from faker.providers.address.es_MX import Provider as EsMxAddressProvider from faker.providers.address.fa_IR import Provider as FaIrAddressProvider @@ -564,6 +565,82 @@ def test_postalcode_in_state(self, faker, num_samples): faker.postalcode_in_state("XX") +class TestEsCo: + """Test es_CO address provider methods""" + + def test_department_code(self, faker, num_samples): + for _ in range(num_samples): + department_code = faker.department_code() + assert isinstance(department_code, str) + assert department_code in EsCoAddressProvider.departments + + def test_department(self, faker, num_samples): + for _ in range(num_samples): + department = faker.department() + assert isinstance(department, str) + assert department in EsCoAddressProvider.departments.values() + + def test_municipality_code(self, faker, num_samples): + municipality_codes = {municipality_code for municipality_code, _ in EsCoAddressProvider.municipalities} + for _ in range(num_samples): + municipality_code = faker.municipality_code() + assert isinstance(municipality_code, str) + assert municipality_code in municipality_codes + + def test_municipality(self, faker, num_samples): + municipalities = {municipality for _, municipality in EsCoAddressProvider.municipalities} + for _ in range(num_samples): + municipality = faker.municipality() + city = faker.city() + assert isinstance(municipality, str) + assert isinstance(city, str) + assert municipality in municipalities + assert city in municipalities + + def test_street_prefix(self, faker, num_samples): + for _ in range(num_samples): + street_prefix = faker.street_prefix() + assert isinstance(street_prefix, str) + assert street_prefix in EsCoAddressProvider.street_prefixes + + def test_street_suffix(self, faker, num_samples): + for _ in range(num_samples): + street_suffix = faker.street_suffix() + assert isinstance(street_suffix, str) + + def test_street_name(self, faker, num_samples): + for _ in range(num_samples): + street_name = faker.street_name() + assert isinstance(street_name, str) + + def test_building_number(self, faker, num_samples): + for _ in range(num_samples): + building_number = faker.building_number() + assert isinstance(building_number, str) + assert re.fullmatch(r"\d{1,2}[A-Z]?-\d{1,2}", building_number) + + def test_secondary_address(self, faker, num_samples): + for _ in range(num_samples): + secondary_address = faker.secondary_address() + assert isinstance(secondary_address, str) + + def test_street_address(self, faker, num_samples): + for _ in range(num_samples): + street_address = faker.street_address() + assert isinstance(street_address, str) + + def test_postcode(self, faker, num_samples): + for _ in range(num_samples): + postcode = faker.postcode() + assert isinstance(postcode, str) + assert re.fullmatch(r"\d{6}", postcode) + + def test_address(self, faker, num_samples): + for _ in range(num_samples): + address = faker.address() + assert isinstance(address, str) + + class TestEsEs: """Test es_ES address provider methods""" diff --git a/tests/providers/test_automotive.py b/tests/providers/test_automotive.py index aa64646415..83fb38ccdc 100644 --- a/tests/providers/test_automotive.py +++ b/tests/providers/test_automotive.py @@ -154,6 +154,12 @@ class TestNoNo(_SimpleAutomotiveTestMixin): license_plate_pattern: Pattern = re.compile(r"[A-Z]{2} \d{5}") +class TestEsCo(_SimpleAutomotiveTestMixin): + """Test es_CO automotive provider methods""" + + license_plate_pattern = re.compile(r"[A-Z]{3}\d{3}|[A-Z]{3}\d{2}[A-Z]|T\d{4}|[A-Z]{2}\d{4}|R\d{5}|S\d{5}") + + class TestEsEs: """Test es_ES automotive provider methods""" diff --git a/tests/providers/test_person.py b/tests/providers/test_person.py index e09476e502..b719cd5872 100644 --- a/tests/providers/test_person.py +++ b/tests/providers/test_person.py @@ -11,7 +11,8 @@ from faker.providers.person.en_IE import Provider as EnIEProvider from faker.providers.person.en_IN import Provider as EnINProvider from faker.providers.person.en_US import Provider as EnUSProvider -from faker.providers.person.es_ES import Provider as EsESProvider +from faker.providers.person.es import Provider as EsProvider +from faker.providers.person.es_CO import Provider as EsCOProvider from faker.providers.person.fi_FI import Provider as FiProvider from faker.providers.person.ga_IE import Provider as GaIEProvider from faker.providers.person.he_IL import Provider as HeILProvider @@ -689,16 +690,69 @@ def test_language_name(self): assert language_name in RuProvider.language_names -class TestEsES(unittest.TestCase): - """Tests person in the es_ES locale.""" +class TestEs(unittest.TestCase): + """Tests person in the es locale.""" def setUp(self): - self.fake = Faker("es_ES") + self.fake = Faker("es") Faker.seed(0) def test_language_name(self): language_name = self.fake.language_name() - assert language_name in EsESProvider.language_names + assert language_name in EsProvider.language_names + + +class TestEsCO(unittest.TestCase): + """Tests person in the es_CO locale""" + + def setUp(self): + self.fake = Faker("es_CO") + Faker.seed(0) + + def test_first_names(self): + # General first name + name = self.fake.first_name() + self.assertIsInstance(name, str) + assert name in EsCOProvider.first_names + + # Female first name + name = self.fake.first_name_female() + self.assertIsInstance(name, str) + assert name in EsCOProvider.first_names + assert name in EsCOProvider.first_names_female + + # Male first name + name = self.fake.first_name_male() + self.assertIsInstance(name, str) + assert name in EsCOProvider.first_names + assert name in EsCOProvider.first_names_male + + def test_last_names(self): + # General last name + name = self.fake.last_name() + self.assertIsInstance(name, str) + assert name in EsCOProvider.last_names + + # Female last name + name = self.fake.last_name_female() + self.assertIsInstance(name, str) + assert name in EsCOProvider.last_names + + # Male last name + name = self.fake.last_name_male() + self.assertIsInstance(name, str) + assert name in EsCOProvider.last_names + + def test_prefix(self): + # Female prefix + prefix = self.fake.prefix_female() + self.assertIsInstance(prefix, str) + assert prefix in EsCOProvider.prefixes_female + + # Male prefix + prefix = self.fake.prefix_male() + self.assertIsInstance(prefix, str) + assert prefix in EsCOProvider.prefixes_male class TestHeIL(unittest.TestCase): diff --git a/tests/providers/test_phone_number.py b/tests/providers/test_phone_number.py index 33f4438d30..09d2a0d58b 100644 --- a/tests/providers/test_phone_number.py +++ b/tests/providers/test_phone_number.py @@ -237,6 +237,23 @@ def test_phone_number(self, faker, num_samples): assert pattern.fullmatch(phone_number) +class TestEsCo: + """Test es_CO phone number provider methods""" + + def test_phone_number(self, faker, num_samples): + pattern: Pattern = re.compile( + r"((\+?57|\(\+57\))?60\d)?\d{7}|" + r"((\+?57 |\(\+57\) )?60\d )?\d{3} \d{2} \d{2}|" + r"(\+?57|\(\+57\))?3[012]\d{8}|" + r"(\+?57 |\(\+57\) )?3[012]\d \d{3} \d{2} \d{2}|" + r"01800\d{7}|" + r"01 800\d \d{3} \d{3}" + ) + for _ in range(num_samples): + phone_number = faker.phone_number() + assert pattern.fullmatch(phone_number) + + class TestEsEs: """Test es_ES phone number provider methods""" diff --git a/tests/providers/test_ssn.py b/tests/providers/test_ssn.py index 03ecd0a078..b0bef6bb70 100644 --- a/tests/providers/test_ssn.py +++ b/tests/providers/test_ssn.py @@ -16,6 +16,7 @@ from faker import Faker from faker.providers.ssn.en_CA import checksum as ca_checksum +from faker.providers.ssn.es_CO import nit_check_digit from faker.providers.ssn.es_MX import curp_checksum as mx_curp_checksum from faker.providers.ssn.es_MX import ssn_checksum as mx_ssn_checksum from faker.providers.ssn.et_EE import checksum as et_checksum @@ -525,6 +526,57 @@ def test_wrong_tin_type_case(self): self.fake.ssn(taxpayer_identification_number_type="ssn") +class TestEsCO(unittest.TestCase): + def setUp(self): + self._NUIP_REGEX: Pattern = re.compile(r"1[012]\d{8}|[1-9]\d{6,7}") + self._NATURAL_PERSON_NIT_REGEX: Pattern = self._NUIP_REGEX + self._CHECK_DIGIT_REGEX: Pattern = re.compile(r"\d") + self._LEGAL_PERSON_NIT_REGEX: Pattern = re.compile(r"[89]\d{8}") + self.fake = Faker("es_CO") + Faker.seed(0) + + def test_nuip(self): + for _ in range(100): + assert self._NUIP_REGEX.fullmatch(self.fake.nuip()) + assert self._NUIP_REGEX.fullmatch(self.fake.natural_person_nit()) + + def test_natural_person_nit_with_check_digit(self): + for _ in range(100): + natural_person_nit, check_digit = self.fake.natural_person_nit_with_check_digit().split("-") + assert self._NATURAL_PERSON_NIT_REGEX.fullmatch(natural_person_nit) + assert self._CHECK_DIGIT_REGEX.fullmatch(check_digit) + assert nit_check_digit(natural_person_nit) == check_digit + + def test_legal_person_nit(self): + for _ in range(100): + assert self._LEGAL_PERSON_NIT_REGEX.fullmatch(self.fake.legal_person_nit()) + + def test_legal_person_nit_with_check_digit(self): + for _ in range(100): + legal_person_nit, check_digit = self.fake.legal_person_nit_with_check_digit().split("-") + assert self._LEGAL_PERSON_NIT_REGEX.fullmatch(legal_person_nit) + assert self._CHECK_DIGIT_REGEX.fullmatch(check_digit) + assert nit_check_digit(legal_person_nit) == check_digit + + def test_nit_check_digit(self): + # NITs and check digits of some Colombian state entities. + # Source: + for nit, check_digit in ( + ("830040256", "0"), + ("899999003", "1"), + ("892301483", "2"), + ("800194600", "3"), + ("899999403", "4"), + ("860042945", "5"), + ("830114475", "6"), + ("811000231", "7"), + ("899999027", "8"), + ("900639630", "9"), + ): + with self.subTest(nit=nit, check_digit=check_digit): + assert nit_check_digit(nit) == check_digit + + class TestEsES(unittest.TestCase): def setUp(self): self.fake = Faker("es_ES")