Package: mexa
Mexa-
Mexican PowerGenerador y Verificador de campos.Mexaes un validador y generador de diferentes campos, utiles para la tramitología mexicana:Listado de campos:CURP: Clave Única de Registro de Población.Nss: Número de Seguro Social.RFC: Registro Federal de Contribuyentes(física y moral).Tel: Télefonos con lada de México.Instalación.El paquete esta disponible enpypi(https://pypi.org/project/mexa/), para puedes instalarlo desdepip:# Instalación de Mexa.
pip install mexaUso:frommexaimportfake,validate,Nss,Curp,generate# ------------------------- fake --------------------------------------------## Fake generando campos aleatorios.#nss=fake('nss')# Valor valido por ejemplo `48979152914`curp=fake('curp')# Valor valido por ejemplo `AAMR740524HOCBRN08`# ------------------------- validate ------------------------------------------## Validación de datosifvalidate('nss',nss):# Esto debe valer True por lo tanto mostrará el nss generadoprint(nss)ifvalidate('curp',curp):# Esto debe valer Trueprint(curp)## EXPERIMENTAL. ###### Devuelve true si:#  - El curp es valido#  - Con el  valor del campo nombre, es viable formar el CURP recibido.data={"nombre":"MIGUEL ANGEL"}ifvalidate('curp',value="BAUM690216HMSLRG18",match=data):print(curp)# ------------------------- generate ------------------------------------------## Puede generar un curp tomando en consideración los datos que ingrese.curp_str=generate('curp',data)print('curp generada a partir del nombre',curp_str)# por ejemplo: ZUVM471127HOCTJG03# Los datos restantes los genera de forma aleatoria, en este sentido es parecida a fake.# Pero... en la medida que agregue datos el CURP generado es predictivo, ejemplo:data={"nombre":"Juan Manuel","primer_ap":"Lopéz","segundo_ap":"Lopéz","fecha_nacimiento":"780609",# 9 de junio del 1978"sexo":"H",# H: hombre, M: Mujer,"entidad_federativa":"SP"# San Luis Potosí}curp_str=generate('curp',data)# resultado: LOLJ780609HSPPPN09print('curp generado con todos los datos recibidos',curp_str)nss_data={"region_imss":"72","folio_imss":"0804","fecha_nacimiento":"56","f_afiliacion":"79",}nss_str=generate('nss',nss_data)# resultado: 72795608040print('NSS generado con todos los datos recibidos',nss_str)# ------------------------- Manejo de errores ---------------------------------# Un caso de error en donde el año de afiliación/nacimientoifnotvalidate('nss','12345678901'):print('NSS Errores: ',Nss.errors)# De forma similar probamos con un valor invalido para el curpifnotvalidate('curp','--invalido--'):print('CURP Errores: ',Curp.errors)##Número de seguro social NssEl numero de seguro social de México se conforma de 11 dígitos:Formato.ElNssesta conformado de las siguientes partes:Diez digitos de información.2 Dígitos Región IMSS.2 Dígitos Año afiliación al Seguro Social.2 Dígitos Año de nacimiento.4 Folio IMSS.Un digito verificador (el último)En la onceava posición y ultima posición se encuentra el dígito permite validar los diez dígitos previos, previniendo errores de captura pues la simple alteración de un digito en la cadena de diez digitos genera un cambio en el dígito verificador.Este digito es creado por medio de una implementación delalgoritmo Luhn.Nota: para mayores informes consultar la definición del algoritmo en wikipedia:
:point_right:https://es.wikipedia.org/wiki/Algoritmo_de_Luhn