This release is a pre-release and may not be stable for production use.
tocayo
tocayo (sust. m.): persona que tiene el mismo nombre que otra. El falso positivo clásico de la resolución de entidades.
Entity resolution para datos latinoamericanos. Las herramientas de record linkage (Splink, Dedupe, Zingg) asumen nombres anglosajones: un nombre, un apellido, un orden fijo. En Latinoamérica, José Luis Hernández García puede aparecer como HERNANDEZ GARCIA JOSE LUIS, J.L. Hernández o Jose Hdz Garcia — y ninguna librería existente lo maneja. Esto le cuesta millones en deduplicación fallida a cada banco, retailer y dependencia de gobierno de la región.
tocayo aporta las piezas que faltan:
- 🪪 Validadores estructurales de CURP y RFC que no solo validan: extraen los campos embebidos (fecha de nacimiento, sexo, entidad) como evidencia parcial para matching.
- 🧹 Normalización canónica de nombres en español: acentos (preservando la Ñ), abreviaturas de captura (
Ma.→MARÍA,Hdz→HERNÁNDEZ), limpieza de ruido. - 👤 Parser de nombres mexicanos (en construcción): dos apellidos, partículas compuestas (
De la Garza), orden incierto (APELLIDOS NOMBRESvsNombres Apellidos), con scores de confianza por campo. - 🔗 Comparadores para Splink 4 (en construcción): comparación consciente de estructura, fonética del español, blocking rules probadas para nombres mexicanos.
Instalación
pip install tocayo
Uso
from tocayo import normalizar, validar_curp
normalizar(" ma. del Cármen Hdz. ")
# 'MARIA DEL CARMEN HERNANDEZ'
info = validar_curp("GARJ900101HNLRRS01")
info.valida # True
info.fecha_nacimiento # datetime.date(1990, 1, 1)
info.sexo # 'H'
info.entidad # 'NL'
Estado
Alfa temprana (0.1.0a1). La API puede cambiar. Hoja de ruta pública en los issues.
Filosofía de diseño
- Núcleo sin dependencias. Strings entran, dataclasses salen. Los adaptadores (pandas, Splink) son extras opcionales.
- Los tests son la especificación. Cada comportamiento documentado tiene un test.
- Estructura antes que magia. CURP y RFC tienen estructura verificable; los nombres mexicanos tienen gramática. La explotamos antes de recurrir a modelos.
Licencia
tocayo (English)
Entity resolution building blocks for Latin American data. Record linkage tools assume Anglo naming conventions — one given name, one surname, fixed order. Latin American names have two surnames, compound particles (De la Garza), and appear in wildly inconsistent formats across systems. tocayo provides Mexican name parsing, structural validators for national identifiers (CURP, RFC) that extract embedded fields as partial matching evidence, Spanish-aware normalization, and (soon) ready-to-use Splink 4 comparators and phonetic encoding for Spanish.
Early alpha. Star the repo to follow along.
Metadata
Release files for tocayo 0.1.0a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tocayo-0.1.0a1.tar.gz | 11.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tocayo-0.1.0a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.4 kB
Release files / tocayo-0.1.0a1.tar.gz
| Download URL | tocayo-0.1.0a1.tar.gz |
|---|---|
| Size | 11.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5281a90b749e62029cd6802ac8e4c72e0bc18d2edda91e45833d6c4c985b9244
|
|
BLAKE2b-256 checksum How to use checksums |
8fe3aca86bffbe764b6d3150803c09a466ece6cd90d96dd323ac5c819987a95b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.10
|
Release files / tocayo-0.1.0a1-py3-none-any.whl
| Download URL | tocayo-0.1.0a1-py3-none-any.whl |
|---|---|
| Size | 11.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
576ac8fd67fad778356918e4a59a1c798999b83d7eacd134754efb3c36cce4e8
|
|
BLAKE2b-256 checksum How to use checksums |
8e355cde6d791d8680eae5d5a17e773aeffd025a87d64e3a62cb7336f1b4bc6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.10
|