8
8
9
9
10
10
class RutInvalidoError (Exception ):
11
- """Lanzada cuando el formato del RUT ingresado es inválido."""
11
+ """Lanzada cuando el RUT ingresado es inválido."""
12
12
13
13
14
14
class RutBase :
@@ -75,38 +75,26 @@ class Rut:
75
75
PATRON_RUT = re .compile (RUT_REGEX )
76
76
77
77
def __init__ (self , rut : str ):
78
- """
79
- Inicializa un objeto Rut.
80
-
81
- Args:
82
- rut (str): El RUT en formato string o numérico.
83
-
84
- Raises:
85
- RutInvalidoError: Si el formato del RUT ingresado es inválido.
86
- """
87
78
self .rut_string = str (rut ).strip ()
88
79
self ._validar_formato_rut ()
80
+ self ._validar_digito_verificador ()
89
81
self .base = RutBase (self .base_string )
90
82
self .digito_verificador = RutDigitoVerificador (self .base_string )
91
83
92
84
def _validar_formato_rut (self ):
93
- """Valida el formato del RUT ingresado."""
94
85
match = Rut .PATRON_RUT .fullmatch (self .rut_string )
95
86
if not match :
96
87
raise RutInvalidoError (
97
88
f"El formato del RUT '{ self .rut_string } ' es inválido."
98
89
)
99
-
100
90
self .base_string = match .group (1 )
91
+
92
+ def _validar_digito_verificador (self ):
93
+ match = Rut .PATRON_RUT .fullmatch (self .rut_string )
101
94
digito_verificador_input = match .group (3 ).lower () if match .group (3 ) else None
102
- digito_verificador_calculado = RutDigitoVerificador (
103
- self .base_string
104
- ).digito_verificador
105
-
106
- if (
107
- digito_verificador_input
108
- and digito_verificador_input != digito_verificador_calculado
109
- ):
95
+ digito_verificador_calculado = RutDigitoVerificador (self .base_string ).digito_verificador
96
+
97
+ if digito_verificador_input and digito_verificador_input != digito_verificador_calculado :
110
98
raise RutInvalidoError (
111
99
f"El dígito verificador '{ digito_verificador_input } ' no coincide con "
112
100
f"el dígito verificador calculado '{ digito_verificador_calculado } '."
@@ -116,16 +104,7 @@ def __str__(self):
116
104
return f"{ self .base } -{ self .digito_verificador } "
117
105
118
106
def formatear (self , separador_miles = False , mayusculas = False ):
119
- """
120
- Formatea el RUT según las opciones especificadas.
121
-
122
- Args:
123
- separador_miles (bool, opcional): Si se deben agregar separadores de miles (puntos).
124
- mayusculas (bool, opcional): Si el D.V. debe ser mayúscula cuando este sea 'k'.
125
-
126
- Returns:
127
- str: El RUT formateado según las opciones especificadas.
128
- """
107
+ """Formatea el RUT según las opciones especificadas."""
129
108
rut = str (self )
130
109
if separador_miles :
131
110
rut = (
@@ -153,11 +132,8 @@ def validar_lista_ruts(ruts):
153
132
ruts (List[str]): Una lista de RUTs en formato string o numérico.
154
133
155
134
Returns:
156
- dict: Un diccionario con dos claves: 'validos' y 'invalidos',
135
+ dict: Un diccionario con dos claves: 'validos' e 'invalidos',
157
136
cada una conteniendo una lista de RUTs válidos e inválidos respectivamente.
158
-
159
- Raises:
160
- RutInvalidoError: Si alguno de los RUTs en la lista es inválido.
161
137
"""
162
138
validos = []
163
139
invalidos = []
@@ -201,15 +177,11 @@ def formatear_lista_ruts(
201
177
ruts (List[str]): Una lista de RUTs en formato string o numérico.
202
178
separador_miles (bool): Si se deben agregar separadores de miles (puntos).
203
179
mayusculas (bool): Si los RUTs deben estar en mayúsculas.
204
- formato (str, opcional): El formato de salida deseado (csv, json, xml, etc. ).
180
+ formato (str, opcional): El formato de salida deseado (csv, json, xml, None ).
205
181
206
182
Returns:
207
183
str: Una cadena con los RUTs válidos e inválidos formateados según las opciones
208
184
especificadas.
209
-
210
- Raises:
211
- RutInvalidoError: Si alguno de los RUTs en la lista es inválido.
212
- ValueError: Si se especifica un formato no válido.
213
185
"""
214
186
formato_salida = {
215
187
"csv" : Rut ._formatear_csv ,
0 commit comments