Skip to main content

Esta librería proporciona una implementación en Python para validar y formatear el Rol Único Tributario (RUT) utilizado en Chile.

Project description

PyPI version Python License Code Style Continuous Integration CodeQL Coverage Status

Rutificador

Una biblioteca Python para validar y formatear RUTs (Rol Único Tributario) chilenos.

Tabla de Contenidos

Características

  • Validación del formato del RUT.
  • Cálculo del dígito verificador del RUT.
  • Formateo del RUT con diferentes opciones (separador de miles, mayúsculas, formato de salida).
  • Validación y formateo de listas de RUTs.
  • Manejo de excepciones personalizadas.
  • Procesamiento de lotes de RUTs: Permite procesar lotes de RUTs en lugar de hacerlo individualmente, lo que agiliza el trabajo con grandes cantidades de datos.
  • Separación de resultados: Los resultados de los lotes se entregan por separado, mostrando RUTs válidos e inválidos, y pueden exportarse en varios formatos, incluidos CSV, XML y JSON.

Instalación

Puedes instalar la librería utilizando pip:

pip install rutificador

Uso

Importar la clase Rut

from rutificador import Rut

Crear Un Objeto

rut1 = Rut('12345678-5')
rut2 = Rut('12.345.670')

Validar un RUT

La validación del RUT se realiza automáticamente al crear un objeto Rut. La clase 'Rut' acepta RUTs con y sin dígito verificador así como RUTs con y sin separador de miles. Si el RUT ingresado no es válido, se lanzará una excepción RutInvalidoError.

Calcular el Dígito Verificador de un RUT

from rutificador import RutDigitoVerificador

digito_verificador = RutDigitoVerificador('12345678').digito_verificador
print(digito_verificador)  # Salida: 5

Formatear un RUT

# Formato predeterminado
print(rut1.formatear())  # Salida: 12345678-5

# Con separador de miles
print(rut1.formatear(separador_miles=True))  # Salida: 12.345.678-5

# Formato predeterminado (Rut con dígito verificador = 'k')
print(rut2.formatear())  # Salida: 12345670-k

# Con separador de miles y en mayúsculas
print(rut2.formatear(separador_miles=True, mayusculas=True))  # Salida: 12.345.670-K

Validar y Formatear una lista de RUTs en diversos formatos

Al igual que con los RUTs individuales, al utilizar el método formatear_lista_ruts la validación se hace de forma automática cuando se trata de listas de RUTs, la diferencia es que en vez de mostrar una excepción RutInvalidoError separará los RUTs válidos de los inválidos. Veamos algunos ejemplos:

# Sin formato
ruts = ['12345678-5', '12345670-k', '98765432-1']
print(Rut.formatear_lista_ruts(ruts, separador_miles=True, mayusculas=True, formato=None))
# Salida:
# RUTs válidos:
# 12.345.678-5
# 12.345.670-K

RUTs inválidos:
98765432-1 - El dígito verificador '1' no coincide con el dígito verificador calculado '5'.

# En formato csv
ruts = ['12.345.678', '9876543', '1.234.567-4', '18005183']
csv_ruts = Rut.formatear_lista_ruts(ruts, formato='csv')
print(csv_ruts)
# Salida
# RUTs válidos:
# rut
# 12345678-5
# 9876543-3
# 1234567-4
# 18005183-k

# En formato json
ruts = ['12.345.678', '9876543', '1.234.567-4', '18005183']
json_ruts = Rut.formatear_lista_ruts(ruts, formato='json')
print(json_ruts)
# Salida
# RUTs válidos:
# [{"rut": "12345678-5"}, {"rut": "9876543-3"}, {"rut": "1234567-4"}, {"rut": "18005183-k"}]

# En formato xml
ruts = ['12.345.678', '9876543', '1.234.567-4', '18005183']
xml_ruts = Rut.formatear_lista_ruts(ruts, formato='xml')
print(xml_ruts)
# Salida
# RUTs válidos:
# <root>
#     <rut>12345678-5</rut>
#     <rut>9876543-3</rut>
#     <rut>1234567-4</rut>
#     <rut>18005183-k</rut>
# </root>

Desarrollo

Configuración del Entorno

  1. Clonar el repositorio: git clone https://github.com/cortega26/rutificador.git cd rutificador

  2. Crear un entorno virtual: python -m venv venv source venv/bin/activate # En Windows use venv\Scripts\activate

  3. Instalar las dependencias de desarrollo: pip install -r requirements-dev.txt

Ejecutar Pruebas

Para ejecutar las pruebas, use el siguiente comando:

pytest

Problemas o Requerimientos

¿Te gustaría reportar algún error, solicitar alguna modificación o característica adicional en esta librería? Solo debes abrir un issue y describir tu petición de la forma más precisa y clara posible.

Contribuciones

Las contribuciones son bienvenidas. Solo debes hacer un fork del repositorio, crear una rama nueva, hacer los cambios que consideres pertinentes con su respectiva documentación, y finalmente hacer push y abrir un pull request para migrar los cambios al master.

Licencia

Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.

Créditos

Este paquete fue creado por Carlos Ortega y se inspiró en el proyecto rut-chile de gevalenz, que es un módulo Python que proporciona funcionalidades comunes relacionadas con el RUT chileno.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rutificador-0.2.25.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

rutificador-0.2.25-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file rutificador-0.2.25.tar.gz.

File metadata

  • Download URL: rutificador-0.2.25.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for rutificador-0.2.25.tar.gz
Algorithm Hash digest
SHA256 29b0c63068cdbd66d491d16d1e4f875040d90676e34c8e80abfcbe599b6c75a5
MD5 16ec13d102803bd26cbeece954dd7b4b
BLAKE2b-256 40368c529b2028b7882f2a6be643c6ffee51ea3eda0d5f98b3bedb66269d15dc

See more details on using hashes here.

File details

Details for the file rutificador-0.2.25-py3-none-any.whl.

File metadata

  • Download URL: rutificador-0.2.25-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for rutificador-0.2.25-py3-none-any.whl
Algorithm Hash digest
SHA256 c41a49128c7ce5ec3e1eea02955865d0cc31ab1b8b55997965d1527f245698e3
MD5 b2eb2211c29084cef30430c69aebd65e
BLAKE2b-256 838da9771da6f29c684434fe0d6e7b31ab79687066606813b442b396cc5fc0f8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page