brutils-python icon indicating copy to clipboard operation
brutils-python copied to clipboard

Validação de CNH

Open camilamaia opened this issue 1 year ago • 13 comments

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.

Descreva alternativas que você considerou

  1. Seguir até o passo 8 do guia de contribuição.

  2. 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',
    ]
    
  3. 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
    
  4. Seguir os passos seguintes do guia de contribuição.

Contexto adicional

camilamaia avatar Oct 21 '24 16:10 camilamaia

Posso pegar?

LucasAlvws avatar Oct 23 '24 16:10 LucasAlvws

@camilamaia

LucasAlvws avatar Oct 23 '24 16:10 LucasAlvws

Este é outro caso que não achei uma documentação de validação disso, eu deveria então apenas verifcar o tamanho da string se ele é numerica?

LucasAlvws avatar Oct 25 '24 17:10 LucasAlvws

Bora!

devid8642 avatar Feb 02 '25 19:02 devid8642

Issue 431 atribuida a devid8642 :rocket:" "Verifique o guia de contribuição para mais informações sobre como submeter sua Pull Request."

github-actions[bot] avatar Feb 02 '25 19:02 github-actions[bot]

:warning: [PT-BR] Esta issue está inativa há 99 dias. Os assignees serão removidos em 7 dias caso não haja atualizações.

:warning: [EN] This issue has been inactive for 99 days. The assignees will be removed in 7 days if there are no updates.

github-actions[bot] avatar May 13 '25 16:05 github-actions[bot]

@camilamaia Vi agora que a pr foi fechada por mim (acho que fechei sem querer) foi por isso que o bot marcou inatividade? Posso reabri-lá para revisão novamente ou você acha que as validações que eu fiz não cumpriram com o objetivo da issue e é melhor manter a pr fechada mesmo?

devid8642 avatar May 14 '25 11:05 devid8642

Oii @devid8642! Olha, vou te dizer que não sei o quê deu hah porque olhando parece só que vc fechou o PR duas vezes e não o bot. Mas vai entender, que doideira.

Image

O bot foi só para tirar o assign da issue. Mas então posso te redicionar no assign da issue e aí vc reabre o PR, pode ser?

camilamaia avatar May 15 '25 10:05 camilamaia

@camilamaia Blz, então foi eu mesmo que fechei a PR, devo estar ficando louco mesmo com esse negócio de código kk. Vou reabrir aqui obrigado

devid8642 avatar May 15 '25 11:05 devid8642

:warning: [PT-BR] Esta issue está inativa há 65 dias. Os assignees serão removidos em 7 dias caso não haja atualizações.

:warning: [EN] This issue has been inactive for 65 days. The assignees will be removed in 7 days if there are no updates.

github-actions[bot] avatar Jul 20 '25 01:07 github-actions[bot]

:warning: [PT-BR] Esta issue está inativa há 62 dias. Os assignees serão removidos em 7 dias caso não haja atualizações.

:warning: [EN] This issue has been inactive for 62 days. The assignees will be removed in 7 days if there are no updates.

github-actions[bot] avatar Sep 21 '25 00:09 github-actions[bot]

bora

willkraemer avatar Oct 27 '25 17:10 willkraemer

🇧🇷 Português ✅ Issue #431 atribuída a @willkraemer. Verifique o guia de contribuição para instruções sobre como submeter sua Pull Request.

🇬🇧 English ✅ Issue #431 assigned to @willkraemer. Check the contributing guide for instructions on submitting your Pull Request.

github-actions[bot] avatar Oct 27 '25 17:10 github-actions[bot]