Skip to content

Adicionar função de validação e limpeza de CNH (Carteira Nacional de Habilitação) #578

@MatheusPaivaa

Description

@MatheusPaivaa

Função para validação e limpeza de CNH

Descrição

Adição das funções:

  • remove_symbols_cnh responsável por limpar qualquer caractere não numérico de uma string de CNH.

  • is_valid_cnh para validar números de CNH. A função deve receber uma string ou valor convertível em string e indicar se a CNH é válida conforme regras de formatação e dígitos verificadores.

Especificações das Funções

  • Nome da função: remove_symbols_cnh

  • Entradas:

    • cnh (str | None) — String contendo a CNH com ou sem símbolos.
  • Saída:

    • str | None — String contendo apenas os dígitos da CNH ou None se a entrada não for uma string.
  • Nome da função: is_valid_cnh

  • Entradas:

    • cnh (str | Any) — Valor da CNH. Se não for string, a função deve tentar converter para string com segurança; se não for possível, tratar como inválido.
  • Saída:

    • bool | NoneTrue se a CNH for válida, False se for inválida, None para entrada inválida (por exemplo, None, string vazia, tipos irrecuperáveis).
  • Comportamento esperado:

    • Remover espaços em branco nas extremidades.
    • Permitir que a entrada contenha caracteres não numéricos comuns (pontos, hífens, espaços); a validação deve ocorrer sobre os dígitos.
    • Verificar tamanho esperado (11 dígitos) antes de aplicar o algoritmo.
    • Tratar casos evidentemente inválidos (por exemplo, todos os dígitos iguais) como inválidos.

Exemplos de Uso

from brutils.cnh import remove_symbols_cnh, is_valid_cnh

remove_symbols_cnh("123.456.789-00")
# Saída esperada: "12345678900"

remove_symbols_cnh(None)
# Saída esperada: None

is_valid_cnh("02650306461")
# Saída esperada: True

is_valid_cnh("00000000000")
# Saída esperada: False

is_valid_cnh("026.503.064-61")
# Saída esperada: True

is_valid_cnh("")
# Saída esperada: None

is_valid_cnh(None)
# Saída esperada: None

is_valid_cnh(2650306461)
# Saída esperada : False (tamanho incorreto)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions