rut-validator
Librería para validar RUT chileno con enfoque Pydantic-first y soporte completo para frameworks web.
✨ Características
- ✅ Validación pura de RUT chileno usando algoritmo módulo 11
- ✅ Detección automática de formato: dotted (
12.345.678-9), hyphenated (12345678-9), numeric (123456789) - ✅ Integración completa con Pydantic (
RutPydantic) - ✅ Campo Django (
RutDjango) listo para usar - ✅ Tipo SQLAlchemy (
RutSQLAlchemy) para bases de datos - ✅ Integración SQLModel con almacenamiento normalizado
- ✅ Compatible con FastAPI y otros frameworks web
- ✅ Type hints completos para mejor desarrollo
- ✅ Sin dependencias externas para funcionalidad core
- ✅ Tests exhaustivos con alta cobertura
🚀 Instalación
pip install rut-validator
# Con soporte Pydantic
pip install rut-validator[pydantic]
# Con soporte para una integración concreta
pip install rut-validator[sqlalchemy]
pip install rut-validator[django]
pip install rut-validator[sqlmodel]
# Con soporte FastAPI
pip install rut-validator[fastapi]
# Todas las integraciones
pip install rut-validator[all]
# Para desarrollo
pip install rut-validator[dev]
📖 Uso Básico
Validación Simple
from rut_validator import RutValidator
# Validar RUT con cualquier formato
rut = RutValidator.validate("20.884.437-7")
print(f"RUT válido: {rut.formatted}") # "20.884.437-7"
print(f"Número: {rut.body}") # 20884437
print(f"Dígito: {rut.check_digit}") # "7"
print(f"Formato: {rut.format}") # RutFormat.FORMATTED
Para un uso funcional más directo:
from rut_validator import calculate_check_digit, validate_rut
rut = validate_rut("12.345.678-5")
assert rut.normalized == "123456785"
assert calculate_check_digit("12345678") == "5"
Detección de Formato
from rut_validator import RutValidator
# La librería detecta automáticamente el formato de entrada
formats = [
"20.884.437-7", # Formato dotted
"20884437-7", # Formato hyphenated
"208844377", # Formato numeric
]
for rut_str in formats:
rut = RutValidator.validate(rut_str)
print(f"'{rut_str}' -> Formato: {rut.format}, Es dotted: {rut.is_dotted}")
Con Pydantic
from pydantic import BaseModel
from rut_validator.orm.pydantic import RutPydantic
class User(BaseModel):
name: str
rut: RutPydantic # Validación automática
# Uso
user = User(name="Juan Pérez", rut="12.345.678-5")
print(user.rut) # "123456785" (normalizado)
Con Django
from django.db import models
from rut_validator.orm.django import RutDjango
class Person(models.Model):
name = models.CharField(max_length=100)
rut = RutDjango(unique=True) # Validación automática en DB
Con SQLAlchemy
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from rut_validator.orm.sqlalchemy import RutSQLAlchemy
Base = declarative_base()
class Person(Base):
__tablename__ = 'persons'
id = Column(Integer, primary_key=True)
name = Column(String)
rut = Column(RutSQLAlchemy) # Validación y normalización automáticas
📚 Documentación
Lee la documentación completa en docs/index.md o constrúyela localmente:
poetry install --all-extras
poetry run mkdocs serve
🧪 Ejemplos
🔧 Desarrollo
Configuración del entorno
# Clonar repositorio
git clone https://github.com/ezer-mackenzie/rut-validator.git
cd rut-validator
# Instalar dependencias de desarrollo
poetry install --with dev
# Ejecutar tests
poetry run pytest
# Ejecutar linting
poetry run black src/ tests/
poetry run isort src/ tests/
poetry run flake8 src/ tests/
poetry run mypy src/rut_validator/
Pre-commit hooks
poetry run pre-commit install
🤝 Contribuir
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
📄 Licencia
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
🙏 Agradecimientos
- Algoritmo de validación basado en el estándar chileno del Servicio de Impuestos Internos
- Inspirado en bibliotecas similares pero con enfoque moderno y tipado fuerte
📞 Soporte
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rut_validator-0.7.0.tar.gz.
File metadata
- Download URL: rut_validator-0.7.0.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7153fbc52d5a94220b8600d88a48af8492f9e7b935334e8cacd07d6c23fc19a4
|
|
| MD5 |
d45dd3457468f4aad8a17090f77a8eb4
|
|
| BLAKE2b-256 |
daba1e62b81282e999560cfb225c2cfc3db739244903f53237b96a368dcf4c9b
|
Provenance
The following attestation bundles were made for rut_validator-0.7.0.tar.gz:
Publisher:
publish.yml on ezer-mackenzie/rut-validator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rut_validator-0.7.0.tar.gz -
Subject digest:
7153fbc52d5a94220b8600d88a48af8492f9e7b935334e8cacd07d6c23fc19a4 - Sigstore transparency entry: 2229579437
- Sigstore integration time:
-
Permalink:
ezer-mackenzie/rut-validator@329969ed0315fddea082aff3ce1fe4865fd5644f -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/ezer-mackenzie
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@329969ed0315fddea082aff3ce1fe4865fd5644f -
Trigger Event:
release
-
Statement type:
File details
Details for the file rut_validator-0.7.0-py3-none-any.whl.
File metadata
- Download URL: rut_validator-0.7.0-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ca0d80852533ece297cafc06889a7c4a2174ace1963de36fd996a20221e56d1
|
|
| MD5 |
b4f3bd354b95b0e8483d1556deda530e
|
|
| BLAKE2b-256 |
119f9cce7bb2cdacc1b144cdc086f7f70a8f94f940163c9a0ade9fb200e994be
|
Provenance
The following attestation bundles were made for rut_validator-0.7.0-py3-none-any.whl:
Publisher:
publish.yml on ezer-mackenzie/rut-validator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rut_validator-0.7.0-py3-none-any.whl -
Subject digest:
6ca0d80852533ece297cafc06889a7c4a2174ace1963de36fd996a20221e56d1 - Sigstore transparency entry: 2229579870
- Sigstore integration time:
-
Permalink:
ezer-mackenzie/rut-validator@329969ed0315fddea082aff3ce1fe4865fd5644f -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/ezer-mackenzie
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@329969ed0315fddea082aff3ce1fe4865fd5644f -
Trigger Event:
release
-
Statement type: