Seu pedido de recurso está relacionado a um problema? Por favor, descreva.
Gostaria de implementar uma função para validar a CNH (Carteira Nacional de Habilitação) brasileira. Essa funcionalidade é útil para verificar a autenticidade e a validade do número da CNH fornecido, garantindo que ele esteja em conformidade com os critérios de formatação e validação.
Descreva a solução que você gostaria
Uma função is_valid_cnh, que recebe um número de CNH (string) e retorna True se a CNH for válida e False caso contrário.
A função deve considerar os seguintes casos:
O formato deve ser de 11 a 15 caracteres, incluindo números e letras.
Deve validar se a CNH contém apenas caracteres permitidos (números e letras).
Deve lidar com CNHs com e sem o caractere de verificação no final.
Deve considerar CNHs que já foram canceladas ou que estão expiradas.
A lógica da função deve ser implementada no futuro.
Como parte do passo 8, criar o arquivo: brutils-python/brutils/cnh.py.
def is_valid_cnh(cnh: str) -> bool:
"""
Validates the Brazilian CNH (Carteira Nacional de Habilitação).
This function checks if the given CNH is valid based on the format and allowed characters.
It considers the CNH with or without the verification character.
Args:
cnh (str): The CNH number to be validated.
Returns:
bool: True if the CNH is valid, False otherwise.
Example:
>>> is_valid_cnh('12345678900')
True
>>> is_valid_cnh('AB123456789')
False
>>> is_valid_cnh('123456789012345')
True
>>> is_valid_cnh('12345')
False
"""
# implementar a lógica da função aqui
Importar a nova função no arquivo brutils-python/brutils/__init__.py:
# CNH Imports
from brutils.cnh import (
is_valid_cnh,
)
E adicionar o nome da nova função na lista __all__ do mesmo arquivo brutils-python/brutils/__init__.py:
__all__ = [
...
# CNH
'is_valid_cnh',
]
Como parte do passo 9, criar o arquivo de teste: brutils-python/tests/test_cnh.py.
from unittest import TestCase
from brutils.cnh import is_valid_cnh
class TestCNH(TestCase):
def test_is_valid_cnh(self):
# Testes para CNHs válidas
self.assertTrue(is_valid_cnh('12345678900'))
self.assertTrue(is_valid_cnh('123456789012345'))
self.assertTrue(is_valid_cnh('ABCDE123456789'))
# Testes para CNHs inválidas
self.assertFalse(is_valid_cnh('AB123456789')) # Formato inválido
self.assertFalse(is_valid_cnh('12345')) # Muito curto
self.assertFalse(is_valid_cnh('1234567890123456')) # Muito longo
self.assertFalse(is_valid_cnh('1234-5678')) # Caracteres não permitidos
self.assertFalse(is_valid_cnh('')) # Vazio
# implementar mais casos de teste aqui se necessário
Seu pedido de recurso está relacionado a um problema? Por favor, descreva.
Gostaria de implementar uma função para validar a CNH (Carteira Nacional de Habilitação) brasileira. Essa funcionalidade é útil para verificar a autenticidade e a validade do número da CNH fornecido, garantindo que ele esteja em conformidade com os critérios de formatação e validação.
Descreva a solução que você gostaria
is_valid_cnh
, que recebe um número de CNH (string) e retornaTrue
se a CNH for válida eFalse
caso contrário.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/cnh.py
.Importar a nova função no arquivo
brutils-python/brutils/__init__.py
:E adicionar o nome da nova função na lista
__all__
do mesmo arquivobrutils-python/brutils/__init__.py
:Como parte do passo 9, criar o arquivo de teste:
brutils-python/tests/test_cnh.py
.Seguir os passos seguintes do guia de contribuição.
Contexto adicional