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

Validação de Passaporte

Open DeguShi opened this issue 3 months ago • 5 comments

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.

DeguShi avatar Sep 11 '25 12:09 DeguShi

Bora!

DeguShi avatar Sep 11 '25 13:09 DeguShi

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

github-actions[bot] avatar Sep 11 '25 13:09 github-actions[bot]

Bora!

rochamrcs avatar Oct 27 '25 14:10 rochamrcs

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

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

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

Bora!

willkraemer avatar Nov 07 '25 23:11 willkraemer

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

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

github-actions[bot] avatar Nov 07 '25 23:11 github-actions[bot]