mexa package

Submodules

mexa.CurpField

Clase encargada del CURP

class mexa.CurpField.CurpField[fuente]

Bases: FieldInterface

CurpField, clase encargada de administrar el CURP, el cual lo representamos como:

>>> #    ⌐------------------------------ id_nombre: 1ras letras 1er ap, 2do ap y nombre
>>> #    |      ⌐----------------------- fecha_nacimiento: 6 digitos en orden AAMMDD
>>> #    |      |    ⌐------------------ sexo: un carácter el cual puede ser H ó  M
>>> #    |      |    |   ⌐-------------- entidad_federativa: codigo de 2 caracteres
>>> #    |      |    |   |   ⌐---------- consonantes_internas: 1er ap, 2d ap y nombre
>>> #    |      |    |   |   |    ⌐----- homoclave: Evita duplicidades
>>> #    |      |    |   |   |    |  ⌐-- checksum: Digito verificador de integridad
>>> #    |      |    |   |   |    |  |
>>> #  NNNN  AAMMDD  S  EN  CCC   H  C
>>> #  0123  012345  0  01  012   0  0
static check_fecha(fecha_str, homo_serial)[fuente]

Revisa si existe algún error en el en formato fecha AAMMDD

Parámetros:

fecha_str (str) – Fecha en 6 digitos en formato AAMMDD

Devuelve:

devuelve el código de error o None en caso de no existir error.

Tipo del valor devuelto:

CodeError/None

static checksum(curp: str) int[fuente]

Calcula el checksum del CURP.

Parámetros:

curp (str) – El curp sobre al cual se calcula el checksum.

Devuelve:

el valor del checksum.

Tipo del valor devuelto:

int

errorMsgs = {100: 'Valor en formato inválido', 101: 'El sexo debe ser H o M, valor invalido: {}', 102: 'Mes incorrecto', 103: 'La cantidad de días que supera a los del mes indicado.', 104: 'El codigo de entidad federativa({}) es inválido.', 105: 'Carácter ({}) invalido en la segunda parte del nombre.', 106: 'Suma de validación incorrecta ({}).', 201: 'La primer letra del nombre de pila debe ir en la posición 4', 202: 'La primer consonante interna del nombre de pila debe ir en la posición 16', 203: 'La primer letra del primer apellido debe ir en la posición 1', 204: 'La primer vocal interna del primer apellido debe ir en la posición 2', 205: 'La primer consonante interna del primer apellido debe ir en la posición 11', 206: 'La primer letra del segundo apellido debe ir en la posición 3', 207: 'La primer consonante interna del segundo apellido debe ir en la posición 15', 208: 'Las fecha del Curp con el valor recibido({}) a validar', 209: 'El sexo del CURP no coincide con el valor recibido({}) a validar', 210: 'La entidad federativa del Curp no coincide con el valor recibido({})'}
static find_match_error(match: dict)[fuente]

Busca errores a partir del match proporcionado.

Parámetros:

match (dict) – Diccionario de datos el cual puede contener los valores de nombre, primer_ap, segundo_ap, fecha_nacimiento, sexo y entidad_federativa

static find_match_error_nombre(nombre: str, curp: str) str[fuente]

Valida si el curp para el nombre el curp es correcto

Parámetros:
  • nombre (str) – Nombre a validar

  • curp – CURP a validar.

Devuelve:

True si encontró algun error/False en caso contrario

Tipo del valor devuelto:

bool

static find_match_error_primer_ap(primer_ap: str, curp: str) bool[fuente]

Valida si para el primer apellido el curp es correcto

Parámetros:
  • primer_ap (str) – El valor del primer apellido.

  • curp (str) – El valor del CURP.

Devuelve:

True si existe(n) error(es)/ False caso contrario

Tipo del valor devuelto:

bool

static find_match_error_segundo_ap(segundo_ap: str, curp: str) bool[fuente]

Valida si para el primer apellido el curp es correcto

Parámetros:
  • segundo_ap (str) – Valor del segundo apellido.

  • curp (str) – Valor del CURP

Devuelve:

True si existe(n) error(es)/ False caso contrario

Tipo del valor devuelto:

bool

static gen_consonantes_nombre(data)[fuente]

Genera la segunda parte parte del nombre

Parámetros:

data (dict) – diccionario de datos a utilizar.

Devuelve:

la segunda parte del nombre, en formato de 3 consonantes.

Tipo del valor devuelto:

str

static gen_entidad_federativa(data: dict) str[fuente]

Genera la entidad federativa, en caso de ya venir uno devuelve esta.

Parámetros:

data (dict) – Diccionario de datos de parametros definidos por el usuario

Devuelve:

La entidad_federativa un código de 2 carácteres

Tipo del valor devuelto:

str

static gen_fecha_nacimiento(data: dict) str[fuente]

Genera/Busca la fecha de nacimiento

Parámetros:

data (dic) – Diccionario que puede contener el valor de fecha_nacimiento

Devuelve:

Una fecha de nacimiento valida en forma de 6 digítos AAMMDD

Tipo del valor devuelto:

str

static gen_id_nombre(data)[fuente]

Genera la parte del nombre, los primeros 4 dígitos,

Parámetros:

data (dict) – diccionario de datos a utilizar.

Devuelve:

Genera el id del nombre un str de 4 carácteres.

Tipo del valor devuelto:

str

static gen_sexo(data: dict) str[fuente]

Genera el sexo, en caso de ya venir uno devuelve este normalizado.

Parámetros:

data (dict) – Diccionario de datos de parametros definidos por el usuario

Devuelve:

El sexo un caracter que puede ser H ó M

Tipo del valor devuelto:

str

static generate(data: dict) str[fuente]

Genera el CURP, en caso de ya venir uno devuelve esta.

Parámetros:

data (dict) – Diccionario de datos de parametros definidos por el usuario

Devuelve:

el CURP código de 18 carácteres

Tipo del valor devuelto:

str

static is_valid(value, match=None)[fuente]

Valida el CURP

Parámetros:

value (str) – Contiene el valor del CURP.

Devuelve:

Regresa True si value es un CURP valido

Tipo del valor devuelto:

bool

mexa.CurpUtils

Módulo que contiene un conjunto de utilerías diseñadas para darle soporte a la Clase: CurpField

class mexa.CurpUtils.CurpTools[fuente]

Bases: object

Clase que modela el CURP

static anio(last2_digits: str, homo_serial: str) int[fuente]

Devuelve al año, agregando los primeros digitos, esto si la parte de la homoclave que genera la serialización para evitar curps repetidos Si es mayor a A entonces nacio despues del año 2000

Parámetros:
  • last2_digits (str) – Los dos ultimos digitos del año.

  • homo_serial (str) – Valor de la homoclave

  • last2_digits:str

  • homo_serial:str

Devuelve:

El año obtenido.

Tipo del valor devuelto:

int

Example:

>>> CurpTools.anio("20", "0") # 1920
>>> CurpTools.anio("20", "A") # 2020
static estado_to_2chars(edo)[fuente]

Recibe el estado devuelve el código del mismo a dos caracteres

Parámetros:

edo (str) – El nombre del estado

Devuelve:

El codigo del estado

Tipo del valor devuelto:

str

static fecha_to_6digits(fecha) str[fuente]

Recibe una fecha y la normaliza a formato AAMMDD

Parámetros:

fecha – La fecha

Devuelve:

La fecha en formato AAMMDD

Tipo del valor devuelto:

str

static limpiar_mal_palabra(palabra: str) str[fuente]

Transforma una «mala palabra».

Parámetros:
  • palabra (str) – Palabra a buscar si es «mala palabra».

  • palabra:str

Devuelve:

la palabra original en caso de ser «mala» la limpia.

Tipo del valor devuelto:

str

Example:

>>> CurpTools.limpiar_mal_palabra("CACA") # "CXCA"
>>> CurpTools.limpiar_mal_palabra("HOLA") # "HOLA" (sin cambio)
>>> CurpTools.limpiar_mal_palabra("PITO") # "PXTO"
static nombre_de_pila(nombre: str) str[fuente]

Devuelve el nombre de pila, en donde si el primer nombre es María o José devolverá el segundo nombre.

Parámetros:
  • nombre (str) – Nombre del que se sacará el nombre de pila

  • nombre:str

Devuelve:

Nombre de pila

Tipo del valor devuelto:

str

Example:

>>> CurpTools.nombre_de_pila("JOSE ANGEL")   # "ANGEL"
>>> CurpTools.nombre_de_pila("MA. FERNANDA") # "FERNANDA"
>>> CurpTools.nombre_de_pila("JUAN ANGEL")   # "JUAN"
>>> CurpTools.nombre_de_pila("J. DEL CIELO") # "CIELO"
static primer_consonante_interna(palabra)[fuente]

Devuelve el valor de la primer consonante interna en palabra

Parámetros:

palabra (str) – palabra con la que se van a trabajar.

Devuelve:

El valor de la primer consonante.

Tipo del valor devuelto:

str

Example:

>>> CurpTools.primer_consonante_interna('JOEL') # L
>>> CurpTools.primer_consonante_interna('TIO')  # X (No se encontró)
static primer_letra(palabra: str) str[fuente]

Devuelve la primer letra de la palabra recibida.

Parámetros:
  • palabra (str) – La parabra en la que se extrae el primer caracter.

  • palabra – str:

Devuelve:

la primer letra en caso que la cadena es vacia regresa X

Tipo del valor devuelto:

str

Example:

>>> CurpTools.primer_letra('JOEL')    # J
>>> CurpTools.primer_letra('Miguel')  # M
static primer_vocal_interna(palabra: str) str[fuente]

Devuelve la primer vocal de parabra

Parámetros:
  • palabra (str) – La palabra sobre en cual se buscará la primer vocal.

  • palabra:str

Devuelve:

La primer vocal interna encontrada, Si no encuentra devuelve X

Tipo del valor devuelto:

str

Example:

>>> CurpTools.primer_vocal_interna('OLLA') # A
>>> CurpTools.primer_vocal_interna('ELY')  # X (no encontró)
static quitar_conjunciones(s)[fuente]

Cuando el nombre o los apellidos son compuestos y tienen proposiciones, contracciones o conjunciones, se deben eliminar esas palabras son eliminadas.

Parámetros:

s (str) – string el cual se le quitaran las conjunciones.

Devuelve:

El texto de entrada sin contracciones, conjunciones, etc..

Tipo del valor devuelto:

str

Example:

>>> CurpTools.quitar_conjunciones("DE LA CRUZ") # "CRUZ"
>>> CurpTools.quitar_conjunciones("DEL CUELLO DI ANGEL") # "CUELLO ANGEL"
static sanitizar(value: str) str[fuente]

Recibe un string y devuelve su equivalente normalizado.

Parámetros:
  • value (str) – valor del str a sanitizar.

  • value:str

Devuelve:

el str sanitizado.

Tipo del valor devuelto:

str

class mexa.CurpUtils.Rand[fuente]

Bases: object

Devuelve aleatoriamente diferentes elementos

static consonante()[fuente]

Devuelve una consonante de manera aleatoria.

Devuelve:

s ∈ ALPHABET) ^ (s ∉ VOWELS)

Tipo del valor devuelto:

str

Example:

>>> Rand.consonante() # M (por ejemplo)
static digito()[fuente]

Regresa un valor aleatorio entre 0 a 9

Devuelve:

i ∈ (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

Tipo del valor devuelto:

int

Example:

>>> Rand.digito() # 3 (por ejemplo)
static estado()[fuente]

Devuelve el código de un estado de forma aleatoria

Devuelve:

s ∈ ESTADOS_CODIGOS

Tipo del valor devuelto:

str

Example:

>>> Rand.estado() # "MN" ("Michoacán de Ocampo",por ejemplo)
static fecha() str[fuente]

Devuelve una fecha aleatoria en formato de 6 carácteres.

Devuelve:

AAMMDD

Tipo del valor devuelto:

str

Example:

>>> Rand.fecha() # "200229" ("29/feb/2020", por ejemplo)
static sexo()[fuente]

Devuelve el sexo en modo aleatorio

Devuelve:

s ∈ (H, M)

Tipo del valor devuelto:

str

Example:

>>> Rand.sexo() # M (por ejemplo)
static vocal()[fuente]

Regresa una vocal aleatoriamente

Devuelve:

s ∈ (A, E, I, O , U)

Tipo del valor devuelto:

str

Example:

>>> Rand.digito() # 3 (por ejemplo)

mexa.ErrorMsgs

Contiene todos los mensajes de error

mexa.Estados

Entidades de la República Mexicana y su código ISO

mexa.NssField

Clase encargada del Nss

class mexa.NssField.NssField[fuente]

Bases: FieldInterface

Clase que modela el Nss

static anios(data=None)[fuente]

Devuelve un arreglo con los años de nacimiento y afiliacion

Parámetros:

data (dic) – Los datos el cual puede contener fecha_nacimiento y f_afiliacion de existir deberán ser tomados en cuenta estos valores.

Devuelve:

Arreglo ordenado de la forma [fecha_nacimiento, f_afiliacion]

static autocomplete(value)[fuente]

Devuelve true si value es valido

errorMsgs = {100: 'El valor debe tener una longitud de 11 carácteres númericos', 101: 'El año de afiliación no puede ser menor que el de nacimiento', 102: 'Suma de validación incorrecta({})'}
static generate(data=None)[fuente]

Genera un Nss a partir de los datos recibidos.

Parámetros:

data (dic) – Los valores contenidos deberán ser tomados en cuenta.

Devuelve:

str nss Un número del Seguro Social válido

static is_valid(value, match=None)[fuente]

Devuelve true si value es valido

static nss_checksum(nss)[fuente]

Recibe un string que representa el nss, regresa el checksum

mexa.core

Se encarga de implementar funciones para el nucleo de la aplicacion.

class mexa.core.FieldInterface[fuente]

Bases: object

Forza a que la función que la implemente sobre-escriba los metodos vacios

classmethod add_error(code=100, value=None)[fuente]

Agrega el mensaje de error y devuelve siempre False

static autocomplete(value)[fuente]

Devuelve un string igual o mayor al recibido

classmethod clear_errors()[fuente]

Recibe un mensaje y lo guarda en el error

errorMsgs = {}
errors = []
static generate(data)[fuente]

Devuelve el valor a partir de los metadatos recibidos en data

classmethod has_errors()[fuente]

Devuelve true si existen errores

static is_valid(value, match=None)[fuente]

Devuelve true si value es valido

class mexa.core.Partes(regex: str)[fuente]

Bases: object

Se encarga de dividir el valor en partes

get(index: str) str | None[fuente]

Devuelve un grupo dentro de la expresión regular

Parámetros:

index (int) – el indice del grupo a devolver.

Devuelve:

El grupo en cuestion ó None en caso de error

Tipo del valor devuelto:

str/None

load(value: str)[fuente]

Carga el valor en el objeto evaluando dicho valor con el regex

Parámetros:

value (str) – valor del elemento en cuestión.

value() str | None[fuente]

Devuelve un grupo 0 que contiene el valor empatado. :return: El grupo 0 :rtype: str :rtype: str/None

mexa.core.year_by_last2digit(last2_digits)[fuente]

Regresa el año completo a partir de los dos últimos digitos

Parámetros:

last2_digits (int) – los dos últimos digitos del año, p.e. 23 para el 2023

Devuelve:

El año completo

Tipo del valor devuelto:

int

mexa.data_ladas

Contiene las ladas de México, infomración extraida del PDF de ladas, para mayores detalles revisar documentación.

Module contents

Mexa validador y generador de campos

mexa.Curp

alias de CurpField

class mexa.CurpTools[fuente]

Bases: object

Clase que modela el CURP

static anio(last2_digits: str, homo_serial: str) int[fuente]

Devuelve al año, agregando los primeros digitos, esto si la parte de la homoclave que genera la serialización para evitar curps repetidos Si es mayor a A entonces nacio despues del año 2000

Parámetros:
  • last2_digits (str) – Los dos ultimos digitos del año.

  • homo_serial (str) – Valor de la homoclave

  • last2_digits:str

  • homo_serial:str

Devuelve:

El año obtenido.

Tipo del valor devuelto:

int

Example:

>>> CurpTools.anio("20", "0") # 1920
>>> CurpTools.anio("20", "A") # 2020
static estado_to_2chars(edo)[fuente]

Recibe el estado devuelve el código del mismo a dos caracteres

Parámetros:

edo (str) – El nombre del estado

Devuelve:

El codigo del estado

Tipo del valor devuelto:

str

static fecha_to_6digits(fecha) str[fuente]

Recibe una fecha y la normaliza a formato AAMMDD

Parámetros:

fecha – La fecha

Devuelve:

La fecha en formato AAMMDD

Tipo del valor devuelto:

str

static limpiar_mal_palabra(palabra: str) str[fuente]

Transforma una «mala palabra».

Parámetros:
  • palabra (str) – Palabra a buscar si es «mala palabra».

  • palabra:str

Devuelve:

la palabra original en caso de ser «mala» la limpia.

Tipo del valor devuelto:

str

Example:

>>> CurpTools.limpiar_mal_palabra("CACA") # "CXCA"
>>> CurpTools.limpiar_mal_palabra("HOLA") # "HOLA" (sin cambio)
>>> CurpTools.limpiar_mal_palabra("PITO") # "PXTO"
static nombre_de_pila(nombre: str) str[fuente]

Devuelve el nombre de pila, en donde si el primer nombre es María o José devolverá el segundo nombre.

Parámetros:
  • nombre (str) – Nombre del que se sacará el nombre de pila

  • nombre:str

Devuelve:

Nombre de pila

Tipo del valor devuelto:

str

Example:

>>> CurpTools.nombre_de_pila("JOSE ANGEL")   # "ANGEL"
>>> CurpTools.nombre_de_pila("MA. FERNANDA") # "FERNANDA"
>>> CurpTools.nombre_de_pila("JUAN ANGEL")   # "JUAN"
>>> CurpTools.nombre_de_pila("J. DEL CIELO") # "CIELO"
static primer_consonante_interna(palabra)[fuente]

Devuelve el valor de la primer consonante interna en palabra

Parámetros:

palabra (str) – palabra con la que se van a trabajar.

Devuelve:

El valor de la primer consonante.

Tipo del valor devuelto:

str

Example:

>>> CurpTools.primer_consonante_interna('JOEL') # L
>>> CurpTools.primer_consonante_interna('TIO')  # X (No se encontró)
static primer_letra(palabra: str) str[fuente]

Devuelve la primer letra de la palabra recibida.

Parámetros:
  • palabra (str) – La parabra en la que se extrae el primer caracter.

  • palabra – str:

Devuelve:

la primer letra en caso que la cadena es vacia regresa X

Tipo del valor devuelto:

str

Example:

>>> CurpTools.primer_letra('JOEL')    # J
>>> CurpTools.primer_letra('Miguel')  # M
static primer_vocal_interna(palabra: str) str[fuente]

Devuelve la primer vocal de parabra

Parámetros:
  • palabra (str) – La palabra sobre en cual se buscará la primer vocal.

  • palabra:str

Devuelve:

La primer vocal interna encontrada, Si no encuentra devuelve X

Tipo del valor devuelto:

str

Example:

>>> CurpTools.primer_vocal_interna('OLLA') # A
>>> CurpTools.primer_vocal_interna('ELY')  # X (no encontró)
static quitar_conjunciones(s)[fuente]

Cuando el nombre o los apellidos son compuestos y tienen proposiciones, contracciones o conjunciones, se deben eliminar esas palabras son eliminadas.

Parámetros:

s (str) – string el cual se le quitaran las conjunciones.

Devuelve:

El texto de entrada sin contracciones, conjunciones, etc..

Tipo del valor devuelto:

str

Example:

>>> CurpTools.quitar_conjunciones("DE LA CRUZ") # "CRUZ"
>>> CurpTools.quitar_conjunciones("DEL CUELLO DI ANGEL") # "CUELLO ANGEL"
static sanitizar(value: str) str[fuente]

Recibe un string y devuelve su equivalente normalizado.

Parámetros:
  • value (str) – valor del str a sanitizar.

  • value:str

Devuelve:

el str sanitizado.

Tipo del valor devuelto:

str

mexa.Nss

alias de NssField

mexa.generate(type_field, data)[fuente]

genera a partir de los datos recibidos

mexa.validate(type_field, value, match=None)[fuente]

Valida el type_field el valor