Skip to content

Commit

Permalink
Code black style update
Browse files Browse the repository at this point in the history
  • Loading branch information
cortega26 committed May 3, 2024
1 parent 134eee9 commit 0ffab50
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 27 deletions.
2 changes: 1 addition & 1 deletion rutificador/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# pylint: disable=missing-module-docstring
from .main import Rut, RutDigitoVerificador # noqa: F401
from .main import Rut, RutDigitoVerificador # noqa: F401
46 changes: 28 additions & 18 deletions rutificador/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
MODULO_DIGITO_VERIFICADOR: int = 11
RUT_REGEX: str = r"^(\d{1,8}(?:.\d{3})*)(-([0-9kK]))?$"


class RutInvalidoError(Exception):
"""Lanzada cuando el RUT ingresado es inválido."""


class RutBase:
"""Representa el número base de un RUT chileno."""

Expand Down Expand Up @@ -49,6 +51,7 @@ def validar_y_normalizar_base(self, base: str) -> str:
def __str__(self) -> str:
return self.base


class RutDigitoVerificador(RutBase):
"""Calcula y representa el dígito verificador de un RUT chileno."""

Expand Down Expand Up @@ -81,6 +84,7 @@ def calcular_digito_verificador(self) -> str:
def __str__(self) -> str:
return self.digito_verificador


class Rut:
"""
Representa un RUT chileno.
Expand Down Expand Up @@ -128,9 +132,14 @@ def _validar_digito_verificador(self) -> None:
"""
match = Rut.PATRON_RUT.fullmatch(self.rut_string)
digito_verificador_input = match.group(3).lower() if match.group(3) else None
digito_verificador_calculado = RutDigitoVerificador(self.base_string).digito_verificador

if digito_verificador_input and digito_verificador_input != digito_verificador_calculado:
digito_verificador_calculado = RutDigitoVerificador(
self.base_string
).digito_verificador

if (
digito_verificador_input
and digito_verificador_input != digito_verificador_calculado
):
raise RutInvalidoError(
f"El dígito verificador '{digito_verificador_input}' no coincide con "
f"el dígito verificador calculado '{digito_verificador_calculado}'."
Expand Down Expand Up @@ -196,7 +205,7 @@ def validar_lista_ruts(ruts: list[str]) -> dict[str, list[str]]:
validos.append(rut_valido)
except RutInvalidoError as e:
invalidos.append((rut, str(e)))
return {'validos': validos, 'invalidos': invalidos}
return {"validos": validos, "invalidos": invalidos}

@staticmethod
def _formatear_csv(ruts_formateados: list[str]) -> str:
Expand All @@ -205,7 +214,7 @@ def _formatear_csv(ruts_formateados: list[str]) -> str:

@staticmethod
def _formatear_xml(ruts_formateados: list[str]) -> str:
xml_lines:list[str] = ["<root>"]
xml_lines: list[str] = ["<root>"]
for rut in ruts_formateados:
xml_lines.append(f" <rut>{rut}</rut>")
xml_lines.append("</root>")
Expand All @@ -221,7 +230,7 @@ def formatear_lista_ruts(
ruts: list[str],
separador_miles: bool = False,
mayusculas: bool = False,
formato = None,
formato=None,
) -> str:
"""
Formatea una lista de RUTs según las opciones especificadas.
Expand All @@ -242,24 +251,25 @@ def formatear_lista_ruts(
"json": Rut._formatear_json,
}
ruts_validos_invalidos: dict[str, list[str]] = Rut.validar_lista_ruts(ruts)
ruts_validos: list[str] = ruts_validos_invalidos['validos']
ruts_invalidos: list[tuple[str, str]] = ruts_validos_invalidos['invalidos']
ruts_validos: list[str] = ruts_validos_invalidos["validos"]
ruts_invalidos: list[tuple[str, str]] = ruts_validos_invalidos["invalidos"]

resultado: str = ''
resultado: str = ""
if ruts_validos:
ruts_validos_formateados: list[str] = [Rut(rut).formatear(separador_miles, mayusculas)
for rut in ruts_validos]
resultado += 'RUTs válidos:\n'
if formato in ('csv', 'xml', 'json'):
ruts_validos_formateados: list[str] = [
Rut(rut).formatear(separador_miles, mayusculas) for rut in ruts_validos
]
resultado += "RUTs válidos:\n"
if formato in ("csv", "xml", "json"):
resultado += formato_salida[formato](ruts_validos_formateados)
else:
#resultado += '\n'.join(ruts_validos_formateados)
resultado += '\n'.join(ruts_validos_formateados)
resultado += '\n\n'
# resultado += '\n'.join(ruts_validos_formateados)
resultado += "\n".join(ruts_validos_formateados)
resultado += "\n\n"

if ruts_invalidos:
resultado += 'RUTs inválidos:\n'
resultado += "RUTs inválidos:\n"
for rut, error in ruts_invalidos:
resultado += f'{rut} - {error}\n'
resultado += f"{rut} - {error}\n"

return resultado
22 changes: 14 additions & 8 deletions tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import pytest
from rutificador.main import Rut, RutDigitoVerificador, RutBase, RutInvalidoError


# pylint: disable=R0904
class TestRutDigitoVerificador:
"""
Expand Down Expand Up @@ -291,7 +292,7 @@ def test_validate_list_of_valid_rut_strings(self):
"""
ruts = ["12345678-5", "98765432-5", "11111111-1"]
result = Rut.validar_lista_ruts(ruts)
assert result['validos'] == ["12345678-5", "98765432-5", "11111111-1"]
assert result["validos"] == ["12345678-5", "98765432-5", "11111111-1"]

# pylint: disable=C0301
def test_validate_list_of_ruts(self):
Expand All @@ -300,15 +301,20 @@ def test_validate_list_of_ruts(self):
invalid RUT strings.
"""
ruts = ["12345678-9", "98765432-1", "11111111-1", "22222222-2", "33333333-3"]
expected_valid = ['11111111-1', '22222222-2', '33333333-3']
expected_valid = ["11111111-1", "22222222-2", "33333333-3"]
expected_invalid = [
('12345678-9', "El dígito verificador '9' no coincide con el dígito verificador calculado '5'."),
('98765432-1', "El dígito verificador '1' no coincide con el dígito verificador calculado '5'.")
]
(
"12345678-9",
"El dígito verificador '9' no coincide con el dígito verificador calculado '5'.",
),
(
"98765432-1",
"El dígito verificador '1' no coincide con el dígito verificador calculado '5'.",
),
]
result = Rut.validar_lista_ruts(ruts)
assert result['validos'] == expected_valid
assert result['invalidos'] == expected_invalid

assert result["validos"] == expected_valid
assert result["invalidos"] == expected_invalid

def test_invalid_rut_string_with_invalid_format(self):
"""
Expand Down

0 comments on commit 0ffab50

Please sign in to comment.