Validação do RENAVAM
Seu pedido de recurso está relacionado a um problema? Por favor, descreva.
Preciso de uma função que valide se um número RENAVAM é correto. O RENAVAM é um número único para cada veículo no Brasil, e a validação é crucial para garantir que o número informado está correto e associado a um veículo.
Descreva a solução que você gostaria
- Uma função
is_valid_renavam, que recebe uma string representando o RENAVAM e retornaTruese o número for válido eFalsecaso contrário. - A função deve verificar se o RENAVAM tem exatamente 11 dígitos.
- A lógica para calcular o dígito verificador deve ser implementada, conforme descrito anteriormente.
- A função deve lidar com entradas que não são numéricas, entradas com espaços e outros caracteres não permitidos.
- A função deve considerar o maior número de edge cases possíveis, como RENAVAM com caracteres especiais e entradas vazias.
Descreva alternativas que você considerou
-
Seguir até o passo 8 do guia de contribuição.
-
Como parte do passo 8, criar o arquivo:
brutils-python/brutils/renavam.py.def is_valid_renavam(renavam): # type: (str) -> bool """ Validates the Brazilian vehicle registration number (RENAVAM). This function takes a RENAVAM string and checks if it is valid. A valid RENAVAM consists of exactly 11 digits, with the last digit as a verification digit calculated from the previous 10 digits. Args: renavam (str): The RENAVAM string to be validated. Returns: bool: True if the RENAVAM is valid, False otherwise. Example: >>> is_valid_renavam('12345678901') True >>> is_valid_renavam('12345678900') False >>> is_valid_renavam('1234567890a') False >>> is_valid_renavam('12345678 901') False >>> is_valid_renavam('12345678') # Less than 11 digits False >>> is_valid_renavam('') # Empty string False """ # implementar a lógica da função aquiImportar a nova função no arquivo
brutils-python/brutils/__init__.py:# RENAVAM Imports from brutils.renavam import ( is_valid_renavam, )E adicionar o nome da nova função na lista
__all__do mesmo arquivobrutils-python/brutils/__init__.py:__all__ = [ ... # RENAVAM 'is_valid_renavam', ] -
Como parte do passo 9, criar o arquivo de teste:
brutils-python/tests/test_renavam.py.from unittest import TestCase from brutils.renavam import is_valid_renavam class TestRENAVAM(TestCase): def test_is_valid_renavam(self): # Testes para RENAVAM válidos self.assertTrue(is_valid_renavam('12345678901')) # Supondo que seja válido self.assertFalse(is_valid_renavam('12345678900')) # Supondo que seja inválido # Testes para entradas inválidas self.assertFalse(is_valid_renavam('1234567890a')) # Contém letra self.assertFalse(is_valid_renavam('12345678 901')) # Contém espaço self.assertFalse(is_valid_renavam('12345678')) # Menos de 11 dígitos self.assertFalse(is_valid_renavam('')) # String vazia self.assertFalse(is_valid_renavam('123456789012')) # Mais de 11 dígitos self.assertFalse(is_valid_renavam('abcdefghijk')) # Apenas letras self.assertFalse(is_valid_renavam('12345678901!')) # Contém caractere especial # implementar mais casos de teste aqui se necessário -
Seguir os passos seguintes do guia de contribuição.
Contexto adicional
- https://pt.wikipedia.org/wiki/Registro_Nacional_de_Ve%C3%ADculos_Automotores
- https://siga0984.wordpress.com/2019/05/01/algoritmos-validacao-de-renavam/
Posso pegar?
"A lógica para calcular o dígito verificador deve ser implementada, conforme descrito anteriormente.", não consegui entender qual é a lógica. É apenas verificar se há 11 digitos numéricos?
@camilamaia
bora!
Issue 430 atribuida a Oleari19 :rocket:" "Verifique o guia de contribuição para mais informações sobre como submeter sua Pull Request."
:warning: [PT-BR] Esta issue está inativa há 104 dias. Os assignees serão removidos em 7 dias caso não haja atualizações.
:warning: [EN] This issue has been inactive for 104 days. The assignees will be removed in 7 days if there are no updates.
bora
🇧🇷 Português ✅ Issue #430 atribuída a @Fontebasso-JV. Verifique o guia de contribuição para instruções sobre como submeter sua Pull Request.
🇬🇧 English ✅ Issue #430 assigned to @Fontebasso-JV. Check the contributing guide for instructions on submitting your Pull Request.