-
-
Notifications
You must be signed in to change notification settings - Fork 88
Open
Labels
Description
Descrição
Adicionar utilidades para Passaporte brasileiro ao brutils.
O número de passaporte brasileiro é composto por duas letras (“série”) + seis dígitos (ex.: CS265436). Não há “Passport Book Number” nem dígito verificador publicado pela PF; portanto, a validação é apenas de formato.
Novas funções seguindo o padrão das outras features:
• is_valid_passport(passport: str) -> bool
• remove_symbols_passport(passport: str) -> str
• format_passport(passport: str) -> str | None
• generate_passport() -> str (sintático; não corresponde a documento real)
Especificações da Função
Nome das funções
• is_valid_passport
• remove_symbols_passport
• format_passport
• generate_passport
Entradas
• passport: str — String contendo o passaporte (pode chegar com espaços, pontos ou hífens).
• Para generate_passport não há entrada.
Saída
• is_valid_passport → bool (True se corresponder a ^[A-Za-z]{2}\d{6}$, após normalização para maiúsculas).
• remove_symbols_passport → str (remove apenas '-', '.' e espaço, mantendo o resto).
• format_passport → str | None (normaliza para maiúsculas, remove símbolos; retorna None se não bater o padrão).
• generate_passport → str (duas letras maiúsculas + seis dígitos).
Comportamento esperado
• Normalização: comparar sempre em maiúsculas.
• Remoção de símbolos: só '-', '.' e espaço (consistente com outros remove_symbols_* do projeto).
• Validação: aceitar apenas AA999999 (2 letras + 6 dígitos), sem separadores.
• Sem checksum: validação é estritamente por padrão.
• Robustez: entradas não-string retornam False em is_valid_passport e None em format_passport.
Objetivos
1. Criar brutils/passport.py com:
• regex ^[A-Z]{2}[0-9]{6}$
• remove_symbols_passport, is_valid_passport, format_passport, generate_passport
2. Expor as funções em brutils/__init__.py e __all__.
3. Adicionar tests/test_passport.py.