From 25921a64c054e881c5fa9156eba76314bc2a9030 Mon Sep 17 00:00:00 2001 From: erickcpassos Date: Mon, 9 Feb 2026 21:02:15 +0000 Subject: [PATCH 1/9] =?UTF-8?q?Adicionando=20utilit=C3=A1rio=20de=20passap?= =?UTF-8?q?orte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 235 +++++++++++++++++++++++++++++------------ README_EN.md | 234 ++++++++++++++++++++++++++++------------ brutils/__init__.py | 11 ++ brutils/passport.py | 107 +++++++++++++++++++ tests/test_passport.py | 62 +++++++++++ 5 files changed, 517 insertions(+), 132 deletions(-) create mode 100644 brutils/passport.py create mode 100644 tests/test_passport.py diff --git a/README.md b/README.md index a24fffa..8713f00 100644 --- a/README.md +++ b/README.md @@ -42,73 +42,86 @@ False # Utilitários -- [CPF](#cpf) - - [is\_valid\_cpf](#is_valid_cpf) - - [format\_cpf](#format_cpf) - - [remove\_symbols\_cpf](#remove_symbols_cpf) - - [generate\_cpf](#generate_cpf) -- [CNPJ](#cnpj) - - [is\_valid\_cnpj](#is_valid_cnpj) - - [format\_cnpj](#format_cnpj) - - [remove\_symbols\_cnpj](#remove_symbols_cnpj) - - [generate\_cnpj](#generate_cnpj) -- [CEP](#cep) - - [is\_valid\_cep](#is_valid_cep) - - [format\_cep](#format_cep) - - [remove\_symbols\_cep](#remove_symbols_cep) - - [generate\_cep](#generate_cep) - - [get\_address\_from\_cep](#get_address_from_cep) - - [get\_cep\_information\_from\_address](#get_cep_information_from_address) -- [Telefone](#telefone) - - [is\_valid\_phone](#is_valid_phone) - - [format\_phone](#format_phone) - - [remove\_symbols\_phone](#remove_symbols_phone) - - [remove\_international\_dialing\_code](#remove_international_dialing_code) - - [generate\_phone](#generate_phone) -- [Email](#email) - - [is\_valid\_email](#is_valid_email) -- [Data](#date) - - [convert\_date\_to_text](#convert_date_to_text) -- [CNH](#cnh) - - [is\_valid\_cnh](#is_valid_cnh) -- [Placa de Carro](#placa-de-carro) - - [is\_valid\_license\_plate](#is_valid_license_plate) - - [format\_license\_plate](#format_license_plate) - - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) - - [generate\_license\_plate](#generate_license_plate) - - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) - - [get\_format\_license\_plate](#get_format_license_plate) -- [PIS](#pis) - - [is\_valid\_pis](#is_valid_pis) - - [format\_pis](#format_pis) - - [remove\_symbols\_pis](#remove_symbols_pis) - - [generate\_pis](#generate_pis) -- [Processo Jurídico](#processo-jurídico) +- [Introdução](#introdução) +- [Instalação](#instalação) +- [Utilização](#utilização) +- [Utilitários](#utilitários) + - [CPF](#cpf) + - [is\_valid\_cpf](#is_valid_cpf) + - [format\_cpf](#format_cpf) + - [remove\_symbols\_cpf](#remove_symbols_cpf) + - [generate\_cpf](#generate_cpf) + - [CNPJ](#cnpj) + - [is\_valid\_cnpj](#is_valid_cnpj) + - [format\_cnpj](#format_cnpj) + - [remove\_symbols\_cnpj](#remove_symbols_cnpj) + - [generate\_cnpj](#generate_cnpj) + - [CEP](#cep) + - [is\_valid\_cep](#is_valid_cep) + - [format\_cep](#format_cep) + - [remove\_symbols\_cep](#remove_symbols_cep) + - [generate\_cep](#generate_cep) + - [get\_address\_from\_cep](#get_address_from_cep) + - [get\_cep\_information\_from\_address](#get_cep_information_from_address) + - [Telefone](#telefone) + - [is\_valid\_phone](#is_valid_phone) + - [format\_phone](#format_phone) + - [remove\_symbols\_phone](#remove_symbols_phone) + - [remove\_international\_dialing\_code](#remove_international_dialing_code) + - [generate\_phone](#generate_phone) + - [Email](#email) + - [is\_valid\_email](#is_valid_email) + - [Data](#data) + - [convert\_date\_to\_text](#convert_date_to_text) + - [CNH](#cnh) + - [is\_valid\_cnh](#is_valid_cnh) + - [Placa de Carro](#placa-de-carro) + - [is\_valid\_license\_plate](#is_valid_license_plate) + - [format\_license\_plate](#format_license_plate) + - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) + - [generate\_license\_plate](#generate_license_plate) + - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) + - [get\_format\_license\_plate](#get_format_license_plate) + - [PIS](#pis) + - [is\_valid\_pis](#is_valid_pis) + - [format\_pis](#format_pis) + - [remove\_symbols\_pis](#remove_symbols_pis) + - [generate\_pis](#generate_pis) + - [Processo Jurídico](#processo-jurídico) - [is\_valid\_legal\_process](#is_valid_legal_process) - - [format\_legal\_process](#format_legal_process) - - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) - - [generate\_legal\_process](#generate_legal_process) -- [RENAVAM](#renavam) - - [is_valid_renavam](#is_valid_renavam) -- [Titulo Eleitoral](#titulo-eleitoral) - - [is\_valid\_voter\_id](#is_valid_voter_id) - - [format\_voter\_id](#format_voter_id) - - [generate\_voter\_id](#generate_voter_id) -- [IBGE](#ibge) - - [convert_code_to_uf](#convert_code_to_uf) - - [convert_uf_to_name](#convert_uf_to_name) - - [convert_name_to_uf](#convert_name_to_uf) - - [get_code_by_municipality_name](#get_code_by_municipality_name) - - [get\_municipality\_by\_code](#get_municipality_by_code) -- [Feriados](#feriados) - - [is_holiday](#is_holiday) -- [Monetário](#monetário) - - [format\_currency](#format_currency) - - [convert\_real\_to\_text](#convert_real_to_text) -- [Natureza Jurídica](#natureza-jurídica) - - [is_valid_legal_nature](#is_valid_legal_nature) - - [get_legal_nature_description](#get_legal_nature_description) - - [list_all_legal_nature](#list_all_legal_nature) + - [format\_legal\_process](#format_legal_process) + - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) + - [generate\_legal\_process](#generate_legal_process) + - [Titulo Eleitoral](#titulo-eleitoral) + - [is\_valid\_voter\_id](#is_valid_voter_id) + - [format\_voter\_id](#format_voter_id) + - [generate\_voter\_id](#generate_voter_id) + - [IBGE](#ibge) + - [convert\_code\_to\_uf](#convert_code_to_uf) + - [get\_code\_by\_municipality\_name](#get_code_by_municipality_name) + - [get\_municipality\_by\_code](#get_municipality_by_code) + - [convert\_uf\_to\_name](#convert_uf_to_name) + - [convert\_name\_to\_uf](#convert_name_to_uf) + - [Feriados](#feriados) + - [is\_holiday](#is_holiday) + - [Monetário](#monetário) + - [format\_currency](#format_currency) + - [convert\_real\_to\_text](#convert_real_to_text) + - [Natureza Jurídica](#natureza-jurídica) + - [is\_valid\_legal\_nature](#is_valid_legal_nature) + - [get\_legal\_nature\_description](#get_legal_nature_description) + - [list\_all\_legal\_nature](#list_all_legal_nature) + - [RENAVAM](#renavam) + - [is\_valid\_renavam](#is_valid_renavam) + - [Passaporte](#passaporte) + - [is\_valid\_passport](#is_valid_passport) + - [format\_passport](#format_passport) + - [remove\_symbols\_passport](#remove_symbols_passport) + - [generate\_passport](#generate_passport) +- [Novos Utilitários e Reportar Bugs](#novos-utilitários-e-reportar-bugs) +- [Dúvidas? Ideias?](#dúvidas-ideias) +- [Contribuindo com o Código do Projeto](#contribuindo-com-o-código-do-projeto) + - [❤️ Quem já Contribuiu](#️-quem-já-contribuiu) ## CPF @@ -1446,6 +1459,8 @@ Retorna uma cópia do dicionário completo `{codigo: descricao}`. True >>> data["2062"] 'Sociedade Empresária Limitada' +``` + ## RENAVAM ### is_valid_renavam @@ -1473,6 +1488,94 @@ True False ``` +## Passaporte + +### is_valid_passport + +Verifica se um número de passaporte brasileiro é válido. + +Para ser considerado válido, a entrada deve ser uma string contendo exatamente dois caracteres alfabéticos seguidos de exatamente seis dígitos numéricos. + +Esta função não verifica se a entrada é um número de passaporte real, pois não existem dígitos verificadores para o passaporte brasileiro. + +Argumentos: +- passport (str): A string contendo o número do passaporte a ser verificado. + +Retorna: +- bool: True se o número do passaporte for válido (2 letras seguidas de 6 dígitos). False caso contrário. + +Exemplo: +```python +>>> from brutils import is_valid_passport +>>> is_valid_passport("Ab123456") +True +>>> is_valid_passport("12345678") +False +>>> is_valid_passport("DC-221345") +False +``` +### format_passport + +Formata um número de passaporte brasileiro para exibição. + +Esta função recebe uma string representando um número de passaporte válido e o retorna formatado (maiúsculas, sem símbolos). + +Argumentos: +- passport (str | None): Um número de passaporte brasileiro (minúsculas ou maiúsculas, possivelmente incluindo símbolos) + +Retorna: +- str: O número do passaporte formatado (maiúsculas, sem símbolos) ou None se a entrada for inválida + +Exemplo: +```python +>>> from brutils import format_passport +>>> format_passport("Ab123456") +AB123456 +>>> format_passport("Ab-123456") +AB123456 +>>> format_passport("111111") +None +``` +### remove_symbols_passport + +Remove símbolos ('-', '.' e espaços em branco) de um número de passaporte. + +Esta função recebe uma string com um número de passaporte como entrada e remove todas as ocorrências dos caracteres '.', '-' e espaço em branco. + +Argumentos: +- passport (str): A string contendo um número de passaporte + +Retorna: +- str: O número do passaporte com hífens (-), pontos (.) e espaços em branco ( ) removidos. + +Exemplo: +```python +>>> from brutils import remove_symbols_passport +>>> remove_symbols_passport("Ab123456") +Ab123456 +>>> remove_symbols_passport("Ab-123456") +Ab123456 +>>> remove_symbols_passport("Ab -. 123456") +Ab123456 +``` +### generate_passport + +Gera uma string com um número de passaporte brasileiro válido aleatório. + +Esta função gera uma string com um número de passaporte brasileiro aleatório. + +Retorna: +- str: Uma string com um número de passaporte válido aleatório. + +Exemplo: +```python +>>> from brutils import generate_passport +>>> generate_passport() +"RY393097" +>>> generate_passport() +"ZS840088" +``` + # Novos Utilitários e Reportar Bugs Caso queira sugerir novas funcionalidades ou reportar bugs, basta criar diff --git a/README_EN.md b/README_EN.md index aa784da..098c4fe 100644 --- a/README_EN.md +++ b/README_EN.md @@ -41,73 +41,86 @@ False # Utilities -- [CPF](#cpf) - - [is\_valid\_cpf](#is_valid_cpf) - - [format\_cpf](#format_cpf) - - [remove\_symbols\_cpf](#remove_symbols_cpf) - - [generate\_cpf](#generate_cpf) -- [CNPJ](#cnpj) - - [is\_valid\_cnpj](#is_valid_cnpj) - - [format\_cnpj](#format_cnpj) - - [remove\_symbols\_cnpj](#remove_symbols_cnpj) - - [generate\_cnpj](#generate_cnpj) -- [CEP](#cep) - - [is\_valid\_cep](#is_valid_cep) - - [format\_cep](#format_cep) - - [remove\_symbols\_cep](#remove_symbols_cep) - - [generate\_cep](#generate_cep) - - [get\_address\_from\_cep](#get_address_from_cep) - - [get\_cep\_information\_from\_address](#get_cep_information_from_address) -- [Date](#date) - - [convert\_date\_to_text](#convert_date_to_text) -- [Phone](#phone) - - [is\_valid\_phone](#is_valid_phone) - - [format\_phone](#format_phone) - - [remove\_symbols\_phone](#remove_symbols_phone) - - [remove\_international\_dialing\_code](#remove_international_dialing_code) - - [generate\_phone](#generate_phone) -- [Email](#email) - - [is\_valid\_email](#is_valid_email) -- [CNH](#cnh) - - [is\_valid\_cnh](#is_valid_cnh) -- [License Plate](#license-plate) - - [is\_valid\_license\_plate](#is_valid_license_plate) - - [format\_license\_plate](#format_license_plate) - - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) - - [generate\_license\_plate](#generate_license_plate) - - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) - - [get\_format\_license\_plate](#get_format_license_plate) -- [PIS](#pis) - - [is\_valid\_pis](#is_valid_pis) - - [format\_pis](#format_pis) - - [remove\_symbols\_pis](#remove_symbols_pis) - - [generate\_pis](#generate_pis) -- [RENAVAM](#renavam) - - [is_valid_renavam](#is_valid_renavam) -- [Legal Process](#legal-process) +- [Getting Started](#getting-started) +- [Installation](#installation) +- [Usage](#usage) +- [Utilities](#utilities) + - [CPF](#cpf) + - [is\_valid\_cpf](#is_valid_cpf) + - [format\_cpf](#format_cpf) + - [remove\_symbols\_cpf](#remove_symbols_cpf) + - [generate\_cpf](#generate_cpf) + - [CNPJ](#cnpj) + - [is\_valid\_cnpj](#is_valid_cnpj) + - [format\_cnpj](#format_cnpj) + - [remove\_symbols\_cnpj](#remove_symbols_cnpj) + - [generate\_cnpj](#generate_cnpj) + - [CEP](#cep) + - [is\_valid\_cep](#is_valid_cep) + - [format\_cep](#format_cep) + - [remove\_symbols\_cep](#remove_symbols_cep) + - [generate\_cep](#generate_cep) + - [get\_address\_from\_cep](#get_address_from_cep) + - [get\_cep\_information\_from\_address](#get_cep_information_from_address) + - [Date](#date) + - [convert\_date\_to\_text](#convert_date_to_text) + - [Phone](#phone) + - [is\_valid\_phone](#is_valid_phone) + - [format\_phone](#format_phone) + - [remove\_symbols\_phone](#remove_symbols_phone) + - [remove\_international\_dialing\_code](#remove_international_dialing_code) + - [generate\_phone](#generate_phone) + - [Email](#email) + - [is\_valid\_email](#is_valid_email) + - [CNH](#cnh) + - [is\_valid\_cnh](#is_valid_cnh) + - [License Plate](#license-plate) + - [is\_valid\_license\_plate](#is_valid_license_plate) + - [format\_license\_plate](#format_license_plate) + - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) + - [generate\_license\_plate](#generate_license_plate) + - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) + - [get\_format\_license\_plate](#get_format_license_plate) + - [PIS](#pis) + - [is\_valid\_pis](#is_valid_pis) + - [format\_pis](#format_pis) + - [remove\_symbols\_pis](#remove_symbols_pis) + - [generate\_pis](#generate_pis) + - [Legal Process](#legal-process) - [is\_valid\_legal\_process](#is_valid_legal_process) - - [format\_legal\_process](#format_legal_process) - - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) - - [generate\_legal\_process](#generate_legal_process) -- [Voter ID](#voter-id) - - [is_valid_voter_id](#is_valid_voter_id) - - [format_voter_id](#format_voter_id) - - [generate_voter_id](#generate_voter_id) -- [IBGE](#ibge) - - [convert_code_to_uf](#convert_code_to_uf) - - [convert_uf_to_name](#convert_uf_to_name) - - [convert_name_to_uf](#convert_name_to_uf) - - [get_code_by_municipality_name](#get_code_by_municipality_name) - - [get\_municipality\_by\_code](#get_municipality_by_code) -- [Holidays](#holidays) - - [is_holiday](#is_holiday) -- [Monetary](#monetary) - - [format_currency](#format_currency) - - [convert\_real\_to\_text](#convert_real_to_text) -- [Legal Nature](#legal-nature) - - [is_valid_legal_nature](#is_valid_legal_nature) - - [get_legal_nature_description](#get_legal_nature_description) - - [list_all_legal_nature](#list_all_legal_nature) + - [format\_legal\_process](#format_legal_process) + - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) + - [generate\_legal\_process](#generate_legal_process) + - [Voter ID](#voter-id) + - [is\_valid\_voter\_id](#is_valid_voter_id) + - [format\_voter\_id](#format_voter_id) + - [generate\_voter\_id](#generate_voter_id) + - [IBGE](#ibge) + - [convert\_code\_to\_uf](#convert_code_to_uf) + - [get\_code\_by\_municipality\_name](#get_code_by_municipality_name) + - [get\_municipality\_by\_code](#get_municipality_by_code) + - [convert\_uf\_to\_name](#convert_uf_to_name) + - [convert\_name\_to\_uf](#convert_name_to_uf) + - [Holidays](#holidays) + - [is\_holiday](#is_holiday) + - [Monetary](#monetary) + - [format\_currency](#format_currency) + - [convert\_real\_to\_text](#convert_real_to_text) + - [Legal Nature](#legal-nature) + - [is\_valid\_legal\_nature](#is_valid_legal_nature) + - [get\_legal\_nature\_description](#get_legal_nature_description) + - [list\_all\_legal\_nature](#list_all_legal_nature) + - [RENAVAM](#renavam) + - [is\_valid\_renavam](#is_valid_renavam) + - [Passport](#passport) + - [is\_valid\_passport](#is_valid_passport) + - [format\_passport](#format_passport) + - [remove\_symbols\_passport](#remove_symbols_passport) + - [generate\_passport](#generate_passport) +- [Feature Request and Bug Report](#feature-request-and-bug-report) +- [Questions? Ideas?](#questions-ideas) +- [Code Contribution](#code-contribution) + - [❤️ Contributors](#️-contributors) ## CPF @@ -1476,6 +1489,95 @@ Example: True >>> is_valid_renavam("12345678901") False +``` + +## Passport + +### is_valid_passport + +Checks if a Brazilian passport number is valid. + +To be considered valid, the input must be a string containing exactly two alphabetical characters followed by exactly six numerical digits. + +This function does not verify is the input is a real passport number, as there are no checksums for the Brazilian passport. + +Args: +- passport (str): The string containing the passport number to be checked. + +Returns: +- bool: True if the passport number is valid (2 letters followed by 6 digits). False otherwise. + +Example: +```python +>>> from brutils import is_valid_passport +>>> is_valid_passport("Ab123456") +True +>>> is_valid_passport("12345678") +False +>>> is_valid_passport("DC-221345") +False +``` +### format_passport + +Formats a Brazilian passport number for display. + +This function takes a string representing a valid passport number and returns it formatted (uppercase, without symbols). + +Args: +- passport (str | None): A Brazilian passport number (lower or uppercase, possibly including symbols) + +Returns: +- str: The formatted passport number (uppercase, without symbols) or None if the input is invalid + +Example: +```python +>>> format_passport("Ab123456") +AB123456 +>>> format_passport("Ab-123456") +AB123456 +>>> format_passport("111111") +None +``` + +### remove_symbols_passport + +Removes symbols ('-', '.', and whitespaces) from a passport number. + +This function takes a passport number string as input and removes all occurrences of +the '.', '-', and whitespace characters from it. + +Args: +- passport (str): The string containing a passport number + +Returns: +- str: The passport numbers with dashes (-), dots (.), and whitespaces ( ) removed. + +Example: +```python +>>> remove_symbols_passport("Ab123456") +Ab123456 +>>> remove_symbols_passport("Ab-123456") +Ab123456 +>>> remove_symbols_passport("Ab -. 123456") +Ab123456 +``` + +### generate_passport + +Generate a random valid Brazilian passport number string. + +This function generates a random Brazilian passport number string. + +Returns: +- str: A random valid passport number string. + +Example: +```python +>>> generate() +"RY393097" +>>> generate() +"ZS840088" +``` # Feature Request and Bug Report diff --git a/brutils/__init__.py b/brutils/__init__.py index 7ba6e25..ddb264e 100644 --- a/brutils/__init__.py +++ b/brutils/__init__.py @@ -64,6 +64,12 @@ from brutils.license_plate import is_valid as is_valid_license_plate from brutils.license_plate import remove_symbols as remove_symbols_license_plate +# Passport Imports +from brutils.passport import format_passport +from brutils.passport import generate as generate_passport +from brutils.passport import is_valid as is_valid_passport +from brutils.passport import remove_symbols as remove_symbols_passport + # Phone Imports from brutils.phone import ( format_phone, @@ -155,4 +161,9 @@ "is_valid_legal_nature", "get_natureza_legal_nature", "list_all_legal_nature", + # Passport + "is_valid_passport", + "remove_symbols_passport", + "format_passport", + "generate_passport", ] diff --git a/brutils/passport.py b/brutils/passport.py new file mode 100644 index 0000000..4c07781 --- /dev/null +++ b/brutils/passport.py @@ -0,0 +1,107 @@ +import random +import re +import string + + +def is_valid(passport: str) -> bool: + """ + Checks if a Brazilian passport number is valid. + + To be considered valid, the input must be a string containing exactly two alphabetical characters followed by exactly six numerical digits. + + This function does not verify is the input is a real passport number, as there are no checksums for the Brazilian passport. + + Args: + passport (str): The string containing the passport number to be checked. + + Returns: + bool: True if the passport number is valid (2 letters followed by 6 digits). False otherwise. + + Example: + >>> is_valid("Ab123456") + True + >>> is_valid("12345678") + False + >>> is_valid("DC-221345") + False + """ + + if not isinstance(passport, str): + return False + + pattern = re.compile("^[A-Z]{2}[0-9]{6}$") + match = re.match(pattern, passport) + return match is not None + + +def remove_symbols(passport: str) -> str: + """ + Removes symbols ('-', '.', and whitespaces) from a passport number. + + This function takes a passport number string as input and removes all occurrences of + the '.', '-', and whitespace characters from it. + + Args: + passport (str): The string containing a passport number + + Returns: + str: The passport numbers with dashes (-), dots (.), and whitespaces ( ) removed. + + Example: + >>> remove_symbols("Ab123456") + Ab123456 + >>> remove_symbols("Ab-123456") + Ab123456 + >>> remove_symbols("Ab -. 123456") + Ab123456 + """ + + return "".join(filter(lambda c: c not in ".- ", passport)) + + +def format_passport(passport: str) -> str | None: + """ + Formats a Brazilian passport number for display. + + This function takes a string representing a valid passport number and returns it formatted (uppercase, without symbols). + + Args: + passport (str | None): A Brazilian passport number (lower or uppercase, possibly including symbols) + + Returns: + str: The formatted passport number (uppercase, without symbols) or None if the input is invalid + + Example: + >>> format_passport("Ab123456") + AB123456 + >>> format_passport("Ab-123456") + AB123456 + >>> format_passport("111111") + None + """ + + passport = remove_symbols(passport.upper()) + + return passport if is_valid(passport) else None + + +def generate() -> str: + """ + Generate a random valid Brazilian passport number string. + + This function generates a random Brazilian passport number string. + + Returns: + str: A random valid passport number string. + + Example: + >>> generate() + "RY393097" + >>> generate() + "ZS840088" + """ + + letters = "".join(random.choices(string.ascii_uppercase, k=2)) + digits = "".join(random.choices(string.digits, k=6)) + + return f"{letters}{digits}" diff --git a/tests/test_passport.py b/tests/test_passport.py new file mode 100644 index 0000000..e75621e --- /dev/null +++ b/tests/test_passport.py @@ -0,0 +1,62 @@ +from unittest import TestCase, main +from unittest.mock import patch + +from brutils.passport import format_passport, generate, is_valid, remove_symbols + + +class TestCPF(TestCase): + def test_is_valid(self): + # When passport is not string, returns False + self.assertIs(is_valid(1), False) # type: ignore + + # When passport's len is different of 8, returns False + self.assertIs(is_valid("1"), False) + + # When passport does not contain only digits, returns False + self.assertIs(is_valid("1112223334-"), False) + + # When cpf is valid + self.assertIs(is_valid("AA111111"), True) + self.assertIs(is_valid("CL125167"), True) + + def test_generate(self): + for _ in range(10_000): + self.assertIs(is_valid(generate()), True) + + def test_remove_symbols(self): + # When there are no symbols, returns the same string + self.assertEqual(remove_symbols("Ab123456"), "Ab123456") + + # When there are spaces, returns the string without them + self.assertEqual(remove_symbols(" AB 123 456 "), "AB123456") + + # When there are dashes, returns the string without them + self.assertEqual(remove_symbols("-AB1-23-4-56-"), "AB123456") + + # When there are dots, returns the string without them + self.assertEqual(remove_symbols(".AB.1.23.456."), "AB123456") + + # When there are multiple symbols, returns the string without any of them + self.assertEqual(remove_symbols(".A B.1.2-3.45 -. 6."), "AB123456") + + +@patch("brutils.passport.is_valid") +class TestIsValidToFormat(TestCase): + def test_when_passport_is_valid_returns_true_to_format(self, mock_is_valid): + mock_is_valid.return_value = True + + # When passport is_valid, returns formatted passport + self.assertEqual(format_passport("yz 987654"), "YZ987654") + + # Checks if function is_valid_passport is called + mock_is_valid.assert_called_once_with("YZ987654") + + def test_when_cpf_is_not_valid_returns_none(self, mock_is_valid): + mock_is_valid.return_value = False + + # When passport isn't valid, returns None + self.assertIsNone(format_passport("acd12736")) + + +if __name__ == "__main__": + main() From 036b7710f6608b5f9f7942e5bd33837c88e51a1e Mon Sep 17 00:00:00 2001 From: erickcpassos Date: Tue, 10 Feb 2026 15:20:45 +0000 Subject: [PATCH 2/9] Corrige table of contents do README --- README.md | 153 ++++++++++++++++++++++++--------------------------- README_EN.md | 152 ++++++++++++++++++++++++-------------------------- 2 files changed, 144 insertions(+), 161 deletions(-) diff --git a/README.md b/README.md index 8713f00..6fc7dde 100644 --- a/README.md +++ b/README.md @@ -41,87 +41,78 @@ False ``` # Utilitários - -- [Introdução](#introdução) -- [Instalação](#instalação) -- [Utilização](#utilização) -- [Utilitários](#utilitários) - - [CPF](#cpf) - - [is\_valid\_cpf](#is_valid_cpf) - - [format\_cpf](#format_cpf) - - [remove\_symbols\_cpf](#remove_symbols_cpf) - - [generate\_cpf](#generate_cpf) - - [CNPJ](#cnpj) - - [is\_valid\_cnpj](#is_valid_cnpj) - - [format\_cnpj](#format_cnpj) - - [remove\_symbols\_cnpj](#remove_symbols_cnpj) - - [generate\_cnpj](#generate_cnpj) - - [CEP](#cep) - - [is\_valid\_cep](#is_valid_cep) - - [format\_cep](#format_cep) - - [remove\_symbols\_cep](#remove_symbols_cep) - - [generate\_cep](#generate_cep) - - [get\_address\_from\_cep](#get_address_from_cep) - - [get\_cep\_information\_from\_address](#get_cep_information_from_address) - - [Telefone](#telefone) - - [is\_valid\_phone](#is_valid_phone) - - [format\_phone](#format_phone) - - [remove\_symbols\_phone](#remove_symbols_phone) - - [remove\_international\_dialing\_code](#remove_international_dialing_code) - - [generate\_phone](#generate_phone) - - [Email](#email) - - [is\_valid\_email](#is_valid_email) - - [Data](#data) - - [convert\_date\_to\_text](#convert_date_to_text) - - [CNH](#cnh) - - [is\_valid\_cnh](#is_valid_cnh) - - [Placa de Carro](#placa-de-carro) - - [is\_valid\_license\_plate](#is_valid_license_plate) - - [format\_license\_plate](#format_license_plate) - - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) - - [generate\_license\_plate](#generate_license_plate) - - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) - - [get\_format\_license\_plate](#get_format_license_plate) - - [PIS](#pis) - - [is\_valid\_pis](#is_valid_pis) - - [format\_pis](#format_pis) - - [remove\_symbols\_pis](#remove_symbols_pis) - - [generate\_pis](#generate_pis) - - [Processo Jurídico](#processo-jurídico) - - [is\_valid\_legal\_process](#is_valid_legal_process) - - [format\_legal\_process](#format_legal_process) - - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) - - [generate\_legal\_process](#generate_legal_process) - - [Titulo Eleitoral](#titulo-eleitoral) - - [is\_valid\_voter\_id](#is_valid_voter_id) - - [format\_voter\_id](#format_voter_id) - - [generate\_voter\_id](#generate_voter_id) - - [IBGE](#ibge) - - [convert\_code\_to\_uf](#convert_code_to_uf) - - [get\_code\_by\_municipality\_name](#get_code_by_municipality_name) - - [get\_municipality\_by\_code](#get_municipality_by_code) - - [convert\_uf\_to\_name](#convert_uf_to_name) - - [convert\_name\_to\_uf](#convert_name_to_uf) - - [Feriados](#feriados) - - [is\_holiday](#is_holiday) - - [Monetário](#monetário) - - [format\_currency](#format_currency) - - [convert\_real\_to\_text](#convert_real_to_text) - - [Natureza Jurídica](#natureza-jurídica) - - [is\_valid\_legal\_nature](#is_valid_legal_nature) - - [get\_legal\_nature\_description](#get_legal_nature_description) - - [list\_all\_legal\_nature](#list_all_legal_nature) - - [RENAVAM](#renavam) - - [is\_valid\_renavam](#is_valid_renavam) - - [Passaporte](#passaporte) - - [is\_valid\_passport](#is_valid_passport) - - [format\_passport](#format_passport) - - [remove\_symbols\_passport](#remove_symbols_passport) - - [generate\_passport](#generate_passport) -- [Novos Utilitários e Reportar Bugs](#novos-utilitários-e-reportar-bugs) -- [Dúvidas? Ideias?](#dúvidas-ideias) -- [Contribuindo com o Código do Projeto](#contribuindo-com-o-código-do-projeto) - - [❤️ Quem já Contribuiu](#️-quem-já-contribuiu) +- [CPF](#cpf) + - [is\_valid\_cpf](#is_valid_cpf) + - [format\_cpf](#format_cpf) + - [remove\_symbols\_cpf](#remove_symbols_cpf) + - [generate\_cpf](#generate_cpf) +- [CNPJ](#cnpj) + - [is\_valid\_cnpj](#is_valid_cnpj) + - [format\_cnpj](#format_cnpj) + - [remove\_symbols\_cnpj](#remove_symbols_cnpj) + - [generate\_cnpj](#generate_cnpj) +- [CEP](#cep) + - [is\_valid\_cep](#is_valid_cep) + - [format\_cep](#format_cep) + - [remove\_symbols\_cep](#remove_symbols_cep) + - [generate\_cep](#generate_cep) + - [get\_address\_from\_cep](#get_address_from_cep) + - [get\_cep\_information\_from\_address](#get_cep_information_from_address) +- [Telefone](#telefone) + - [is\_valid\_phone](#is_valid_phone) + - [format\_phone](#format_phone) + - [remove\_symbols\_phone](#remove_symbols_phone) + - [remove\_international\_dialing\_code](#remove_international_dialing_code) + - [generate\_phone](#generate_phone) +- [Email](#email) + - [is\_valid\_email](#is_valid_email) +- [Data](#data) +- [convert\_date\_to\_text](#convert_date_to_text) +- [CNH](#cnh) + - [is\_valid\_cnh](#is_valid_cnh) +- [Placa de Carro](#placa-de-carro) + - [is\_valid\_license\_plate](#is_valid_license_plate) + - [format\_license\_plate](#format_license_plate) + - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) + - [generate\_license\_plate](#generate_license_plate) + - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) + - [get\_format\_license\_plate](#get_format_license_plate) +- [PIS](#pis) + - [is\_valid\_pis](#is_valid_pis) + - [format\_pis](#format_pis) + - [remove\_symbols\_pis](#remove_symbols_pis) + - [generate\_pis](#generate_pis) +- [Processo Jurídico](#processo-jurídico) +- [is\_valid\_legal\_process](#is_valid_legal_process) + - [format\_legal\_process](#format_legal_process) + - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) + - [generate\_legal\_process](#generate_legal_process) +- [Titulo Eleitoral](#titulo-eleitoral) + - [is\_valid\_voter\_id](#is_valid_voter_id) + - [format\_voter\_id](#format_voter_id) + - [generate\_voter\_id](#generate_voter_id) +- [IBGE](#ibge) + - [convert\_code\_to\_uf](#convert_code_to_uf) + - [get\_code\_by\_municipality\_name](#get_code_by_municipality_name) + - [get\_municipality\_by\_code](#get_municipality_by_code) + - [convert\_uf\_to\_name](#convert_uf_to_name) + - [convert\_name\_to\_uf](#convert_name_to_uf) +- [Feriados](#feriados) + - [is\_holiday](#is_holiday) +- [Monetário](#monetário) + - [format\_currency](#format_currency) + - [convert\_real\_to\_text](#convert_real_to_text) +- [Natureza Jurídica](#natureza-jurídica) + - [is\_valid\_legal\_nature](#is_valid_legal_nature) + - [get\_legal\_nature\_description](#get_legal_nature_description) + - [list\_all\_legal\_nature](#list_all_legal_nature) +- [RENAVAM](#renavam) + - [is\_valid\_renavam](#is_valid_renavam) +- [Passaporte](#passaporte) + - [is\_valid\_passport](#is_valid_passport) + - [format\_passport](#format_passport) + - [remove\_symbols\_passport](#remove_symbols_passport) + - [generate\_passport](#generate_passport) ## CPF diff --git a/README_EN.md b/README_EN.md index 098c4fe..1104b16 100644 --- a/README_EN.md +++ b/README_EN.md @@ -40,87 +40,79 @@ False ``` # Utilities +- [CPF](#cpf) + - [is\_valid\_cpf](#is_valid_cpf) + - [format\_cpf](#format_cpf) + - [remove\_symbols\_cpf](#remove_symbols_cpf) + - [generate\_cpf](#generate_cpf) +- [CNPJ](#cnpj) + - [is\_valid\_cnpj](#is_valid_cnpj) + - [format\_cnpj](#format_cnpj) + - [remove\_symbols\_cnpj](#remove_symbols_cnpj) + - [generate\_cnpj](#generate_cnpj) +- [CEP](#cep) + - [is\_valid\_cep](#is_valid_cep) + - [format\_cep](#format_cep) + - [remove\_symbols\_cep](#remove_symbols_cep) + - [generate\_cep](#generate_cep) + - [get\_address\_from\_cep](#get_address_from_cep) + - [get\_cep\_information\_from\_address](#get_cep_information_from_address) +- [Date](#date) + - [convert\_date\_to\_text](#convert_date_to_text) +- [Phone](#phone) + - [is\_valid\_phone](#is_valid_phone) + - [format\_phone](#format_phone) + - [remove\_symbols\_phone](#remove_symbols_phone) + - [remove\_international\_dialing\_code](#remove_international_dialing_code) + - [generate\_phone](#generate_phone) +- [Email](#email) + - [is\_valid\_email](#is_valid_email) +- [CNH](#cnh) + - [is\_valid\_cnh](#is_valid_cnh) +- [License Plate](#license-plate) + - [is\_valid\_license\_plate](#is_valid_license_plate) + - [format\_license\_plate](#format_license_plate) + - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) + - [generate\_license\_plate](#generate_license_plate) + - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) + - [get\_format\_license\_plate](#get_format_license_plate) +- [PIS](#pis) + - [is\_valid\_pis](#is_valid_pis) + - [format\_pis](#format_pis) + - [remove\_symbols\_pis](#remove_symbols_pis) + - [generate\_pis](#generate_pis) +- [Legal Process](#legal-process) +- [is\_valid\_legal\_process](#is_valid_legal_process) + - [format\_legal\_process](#format_legal_process) + - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) + - [generate\_legal\_process](#generate_legal_process) +- [Voter ID](#voter-id) + - [is\_valid\_voter\_id](#is_valid_voter_id) + - [format\_voter\_id](#format_voter_id) + - [generate\_voter\_id](#generate_voter_id) +- [IBGE](#ibge) + - [convert\_code\_to\_uf](#convert_code_to_uf) + - [get\_code\_by\_municipality\_name](#get_code_by_municipality_name) + - [get\_municipality\_by\_code](#get_municipality_by_code) + - [convert\_uf\_to\_name](#convert_uf_to_name) + - [convert\_name\_to\_uf](#convert_name_to_uf) +- [Holidays](#holidays) + - [is\_holiday](#is_holiday) +- [Monetary](#monetary) + - [format\_currency](#format_currency) + - [convert\_real\_to\_text](#convert_real_to_text) +- [Legal Nature](#legal-nature) + - [is\_valid\_legal\_nature](#is_valid_legal_nature) + - [get\_legal\_nature\_description](#get_legal_nature_description) + - [list\_all\_legal\_nature](#list_all_legal_nature) +- [RENAVAM](#renavam) + - [is\_valid\_renavam](#is_valid_renavam) +- [Passport](#passport) + - [is\_valid\_passport](#is_valid_passport) + - [format\_passport](#format_passport) + - [remove\_symbols\_passport](#remove_symbols_passport) + - [generate\_passport](#generate_passport) -- [Getting Started](#getting-started) -- [Installation](#installation) -- [Usage](#usage) -- [Utilities](#utilities) - - [CPF](#cpf) - - [is\_valid\_cpf](#is_valid_cpf) - - [format\_cpf](#format_cpf) - - [remove\_symbols\_cpf](#remove_symbols_cpf) - - [generate\_cpf](#generate_cpf) - - [CNPJ](#cnpj) - - [is\_valid\_cnpj](#is_valid_cnpj) - - [format\_cnpj](#format_cnpj) - - [remove\_symbols\_cnpj](#remove_symbols_cnpj) - - [generate\_cnpj](#generate_cnpj) - - [CEP](#cep) - - [is\_valid\_cep](#is_valid_cep) - - [format\_cep](#format_cep) - - [remove\_symbols\_cep](#remove_symbols_cep) - - [generate\_cep](#generate_cep) - - [get\_address\_from\_cep](#get_address_from_cep) - - [get\_cep\_information\_from\_address](#get_cep_information_from_address) - - [Date](#date) - - [convert\_date\_to\_text](#convert_date_to_text) - - [Phone](#phone) - - [is\_valid\_phone](#is_valid_phone) - - [format\_phone](#format_phone) - - [remove\_symbols\_phone](#remove_symbols_phone) - - [remove\_international\_dialing\_code](#remove_international_dialing_code) - - [generate\_phone](#generate_phone) - - [Email](#email) - - [is\_valid\_email](#is_valid_email) - - [CNH](#cnh) - - [is\_valid\_cnh](#is_valid_cnh) - - [License Plate](#license-plate) - - [is\_valid\_license\_plate](#is_valid_license_plate) - - [format\_license\_plate](#format_license_plate) - - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) - - [generate\_license\_plate](#generate_license_plate) - - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) - - [get\_format\_license\_plate](#get_format_license_plate) - - [PIS](#pis) - - [is\_valid\_pis](#is_valid_pis) - - [format\_pis](#format_pis) - - [remove\_symbols\_pis](#remove_symbols_pis) - - [generate\_pis](#generate_pis) - - [Legal Process](#legal-process) - - [is\_valid\_legal\_process](#is_valid_legal_process) - - [format\_legal\_process](#format_legal_process) - - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) - - [generate\_legal\_process](#generate_legal_process) - - [Voter ID](#voter-id) - - [is\_valid\_voter\_id](#is_valid_voter_id) - - [format\_voter\_id](#format_voter_id) - - [generate\_voter\_id](#generate_voter_id) - - [IBGE](#ibge) - - [convert\_code\_to\_uf](#convert_code_to_uf) - - [get\_code\_by\_municipality\_name](#get_code_by_municipality_name) - - [get\_municipality\_by\_code](#get_municipality_by_code) - - [convert\_uf\_to\_name](#convert_uf_to_name) - - [convert\_name\_to\_uf](#convert_name_to_uf) - - [Holidays](#holidays) - - [is\_holiday](#is_holiday) - - [Monetary](#monetary) - - [format\_currency](#format_currency) - - [convert\_real\_to\_text](#convert_real_to_text) - - [Legal Nature](#legal-nature) - - [is\_valid\_legal\_nature](#is_valid_legal_nature) - - [get\_legal\_nature\_description](#get_legal_nature_description) - - [list\_all\_legal\_nature](#list_all_legal_nature) - - [RENAVAM](#renavam) - - [is\_valid\_renavam](#is_valid_renavam) - - [Passport](#passport) - - [is\_valid\_passport](#is_valid_passport) - - [format\_passport](#format_passport) - - [remove\_symbols\_passport](#remove_symbols_passport) - - [generate\_passport](#generate_passport) -- [Feature Request and Bug Report](#feature-request-and-bug-report) -- [Questions? Ideas?](#questions-ideas) -- [Code Contribution](#code-contribution) - - [❤️ Contributors](#️-contributors) ## CPF From 0f1f0b5b4402c65116adf5efd08919d2b62b0304 Mon Sep 17 00:00:00 2001 From: erickcpassos Date: Tue, 10 Feb 2026 15:25:36 +0000 Subject: [PATCH 3/9] Corrige table of contents do README_EN --- README_EN.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README_EN.md b/README_EN.md index 1104b16..5fefcd6 100644 --- a/README_EN.md +++ b/README_EN.md @@ -113,7 +113,6 @@ False - [remove\_symbols\_passport](#remove_symbols_passport) - [generate\_passport](#generate_passport) - ## CPF ### is_valid_cpf From 7cbe015214fa551062e04441a414f657447102b2 Mon Sep 17 00:00:00 2001 From: erickcpassos Date: Tue, 10 Feb 2026 15:34:01 +0000 Subject: [PATCH 4/9] =?UTF-8?q?Adiciona=20novos=20utilit=C3=A1rios=20no=20?= =?UTF-8?q?changelog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8d204d..b9fef37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Utilitário `list_all_legal_nature` [#653](https://github.com/brazilian-utils/python/pull/653) - Utilitário `is_valid_cnh` [#651](https://github.com/brazilian-utils/brutils-python/pull/651) - Utilitário `is_valid_renavam` [#652](https://github.com/brazilian-utils/brutils-python/pull/652) +- Utilitário `is_valid_passport` [#579](https://github.com/brazilian-utils/python/issues/579) +- Utilitário `generate_passport` [#579](https://github.com/brazilian-utils/python/issues/579) +- Utilitário `format_passport` [#579](https://github.com/brazilian-utils/python/issues/579) +- Utilitário `remove_symbols_passport` [#579](https://github.com/brazilian-utils/python/issues/579) ### Fixed From c5e353f8dd6f6eff6541de783247b8a9d4a3a26d Mon Sep 17 00:00:00 2001 From: erickcpassos Date: Tue, 10 Feb 2026 16:02:09 +0000 Subject: [PATCH 5/9] =?UTF-8?q?Corrige=20espa=C3=A7amento=20do=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6fc7dde..f51fe93 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ False - [Email](#email) - [is\_valid\_email](#is_valid_email) - [Data](#data) -- [convert\_date\_to\_text](#convert_date_to_text) + - [convert\_date\_to\_text](#convert_date_to_text) - [CNH](#cnh) - [is\_valid\_cnh](#is_valid_cnh) - [Placa de Carro](#placa-de-carro) @@ -83,7 +83,7 @@ False - [remove\_symbols\_pis](#remove_symbols_pis) - [generate\_pis](#generate_pis) - [Processo Jurídico](#processo-jurídico) -- [is\_valid\_legal\_process](#is_valid_legal_process) + - [is\_valid\_legal\_process](#is_valid_legal_process) - [format\_legal\_process](#format_legal_process) - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) - [generate\_legal\_process](#generate_legal_process) From ee5d8b8a9d7582aeedf462e47ae5e8c0ad1f8839 Mon Sep 17 00:00:00 2001 From: erickcpassos Date: Tue, 10 Feb 2026 16:04:49 +0000 Subject: [PATCH 6/9] =?UTF-8?q?Corrige=20espa=C3=A7amento=20no=20README=5F?= =?UTF-8?q?EN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README_EN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_EN.md b/README_EN.md index 5fefcd6..c5cd875 100644 --- a/README_EN.md +++ b/README_EN.md @@ -82,7 +82,7 @@ False - [remove\_symbols\_pis](#remove_symbols_pis) - [generate\_pis](#generate_pis) - [Legal Process](#legal-process) -- [is\_valid\_legal\_process](#is_valid_legal_process) + - [is\_valid\_legal\_process](#is_valid_legal_process) - [format\_legal\_process](#format_legal_process) - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) - [generate\_legal\_process](#generate_legal_process) From 1e506e3e45d29077b0fc1f42bfcfd31c07891cf3 Mon Sep 17 00:00:00 2001 From: erickcpassos Date: Fri, 13 Feb 2026 16:09:04 +0000 Subject: [PATCH 7/9] =?UTF-8?q?Formata=20READMEs=20para=20o=20padr=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 110 +++++++++++++++++++++++++-------------------------- README_EN.md | 110 +++++++++++++++++++++++++-------------------------- 2 files changed, 110 insertions(+), 110 deletions(-) diff --git a/README.md b/README.md index f51fe93..7a904d7 100644 --- a/README.md +++ b/README.md @@ -42,77 +42,77 @@ False # Utilitários - [CPF](#cpf) - - [is\_valid\_cpf](#is_valid_cpf) - - [format\_cpf](#format_cpf) - - [remove\_symbols\_cpf](#remove_symbols_cpf) - - [generate\_cpf](#generate_cpf) + - [is_valid_cpf](#is_valid_cpf) + - [format_cpf](#format_cpf) + - [remove_symbols_cpf](#remove_symbols_cpf) + - [generate_cpf](#generate_cpf) - [CNPJ](#cnpj) - - [is\_valid\_cnpj](#is_valid_cnpj) - - [format\_cnpj](#format_cnpj) - - [remove\_symbols\_cnpj](#remove_symbols_cnpj) - - [generate\_cnpj](#generate_cnpj) + - [is_valid_cnpj](#is_valid_cnpj) + - [format_cnpj](#format_cnpj) + - [remove_symbols_cnpj](#remove_symbols_cnpj) + - [generate_cnpj](#generate_cnpj) - [CEP](#cep) - - [is\_valid\_cep](#is_valid_cep) - - [format\_cep](#format_cep) - - [remove\_symbols\_cep](#remove_symbols_cep) - - [generate\_cep](#generate_cep) - - [get\_address\_from\_cep](#get_address_from_cep) - - [get\_cep\_information\_from\_address](#get_cep_information_from_address) + - [is_valid_cep](#is_valid_cep) + - [format_cep](#format_cep) + - [remove_symbols_cep](#remove_symbols_cep) + - [generate_cep](#generate_cep) + - [get_address_from_cep](#get_address_from_cep) + - [get_cep_information_from_address](#get_cep_information_from_address) - [Telefone](#telefone) - - [is\_valid\_phone](#is_valid_phone) - - [format\_phone](#format_phone) - - [remove\_symbols\_phone](#remove_symbols_phone) - - [remove\_international\_dialing\_code](#remove_international_dialing_code) - - [generate\_phone](#generate_phone) + - [is_valid_phone](#is_valid_phone) + - [format_phone](#format_phone) + - [remove_symbols_phone](#remove_symbols_phone) + - [remove_international_dialing_code](#remove_international_dialing_code) + - [generate_phone](#generate_phone) - [Email](#email) - - [is\_valid\_email](#is_valid_email) + - [is_valid_email](#is_valid_email) - [Data](#data) - - [convert\_date\_to\_text](#convert_date_to_text) + - [convert_date_to_text](#convert_date_to_text) - [CNH](#cnh) - - [is\_valid\_cnh](#is_valid_cnh) + - [is_valid_cnh](#is_valid_cnh) - [Placa de Carro](#placa-de-carro) - - [is\_valid\_license\_plate](#is_valid_license_plate) - - [format\_license\_plate](#format_license_plate) - - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) - - [generate\_license\_plate](#generate_license_plate) - - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) - - [get\_format\_license\_plate](#get_format_license_plate) + - [is_valid_license_plate](#is_valid_license_plate) + - [format_license_plate](#format_license_plate) + - [remove_symbols_license_plate](#remove_symbols_license_plate) + - [generate_license_plate](#generate_license_plate) + - [convert_license_plate_to_mercosul](#convert_license_plate_to_mercosul) + - [get_format_license_plate](#get_format_license_plate) - [PIS](#pis) - - [is\_valid\_pis](#is_valid_pis) - - [format\_pis](#format_pis) - - [remove\_symbols\_pis](#remove_symbols_pis) - - [generate\_pis](#generate_pis) + - [is_valid_pis](#is_valid_pis) + - [format_pis](#format_pis) + - [remove_symbols_pis](#remove_symbols_pis) + - [generate_pis](#generate_pis) - [Processo Jurídico](#processo-jurídico) - - [is\_valid\_legal\_process](#is_valid_legal_process) - - [format\_legal\_process](#format_legal_process) - - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) - - [generate\_legal\_process](#generate_legal_process) + - [is_valid_legal_process](#is_valid_legal_process) + - [format_legal_process](#format_legal_process) + - [remove_symbols_legal_process](#remove_symbols_legal_process) + - [generate_legal_process](#generate_legal_process) - [Titulo Eleitoral](#titulo-eleitoral) - - [is\_valid\_voter\_id](#is_valid_voter_id) - - [format\_voter\_id](#format_voter_id) - - [generate\_voter\_id](#generate_voter_id) + - [is_valid_voter_id](#is_valid_voter_id) + - [format_voter_id](#format_voter_id) + - [generate_voter_id](#generate_voter_id) - [IBGE](#ibge) - - [convert\_code\_to\_uf](#convert_code_to_uf) - - [get\_code\_by\_municipality\_name](#get_code_by_municipality_name) - - [get\_municipality\_by\_code](#get_municipality_by_code) - - [convert\_uf\_to\_name](#convert_uf_to_name) - - [convert\_name\_to\_uf](#convert_name_to_uf) + - [convert_code_to_uf](#convert_code_to_uf) + - [get_code_by_municipality_name](#get_code_by_municipality_name) + - [get_municipality_by_code](#get_municipality_by_code) + - [convert_uf_to_name](#convert_uf_to_name) + - [convert_name_to_uf](#convert_name_to_uf) - [Feriados](#feriados) - - [is\_holiday](#is_holiday) + - [is_holiday](#is_holiday) - [Monetário](#monetário) - - [format\_currency](#format_currency) - - [convert\_real\_to\_text](#convert_real_to_text) + - [format_currency](#format_currency) + - [convert_real_to\_text](#convert_real_to_text) - [Natureza Jurídica](#natureza-jurídica) - - [is\_valid\_legal\_nature](#is_valid_legal_nature) - - [get\_legal\_nature\_description](#get_legal_nature_description) - - [list\_all\_legal\_nature](#list_all_legal_nature) + - [is_valid_legal_nature](#is_valid_legal_nature) + - [get_legal_nature_description](#get_legal_nature_description) + - [list_all_legal_nature](#list_all_legal_nature) - [RENAVAM](#renavam) - - [is\_valid\_renavam](#is_valid_renavam) + - [is_valid_renavam](#is_valid_renavam) - [Passaporte](#passaporte) - - [is\_valid\_passport](#is_valid_passport) - - [format\_passport](#format_passport) - - [remove\_symbols\_passport](#remove_symbols_passport) - - [generate\_passport](#generate_passport) + - [is_valid_passport](#is_valid_passport) + - [format_passport](#format_passport) + - [remove_symbols_passport](#remove_symbols_passport) + - [generate_passport](#generate_passport) ## CPF diff --git a/README_EN.md b/README_EN.md index c5cd875..cf9994c 100644 --- a/README_EN.md +++ b/README_EN.md @@ -41,77 +41,77 @@ False # Utilities - [CPF](#cpf) - - [is\_valid\_cpf](#is_valid_cpf) - - [format\_cpf](#format_cpf) - - [remove\_symbols\_cpf](#remove_symbols_cpf) - - [generate\_cpf](#generate_cpf) + - [is_valid_cpf](#is_valid_cpf) + - [format_cpf](#format_cpf) + - [remove_symbols_cpf](#remove_symbols_cpf) + - [generate_cpf](#generate_cpf) - [CNPJ](#cnpj) - - [is\_valid\_cnpj](#is_valid_cnpj) - - [format\_cnpj](#format_cnpj) - - [remove\_symbols\_cnpj](#remove_symbols_cnpj) - - [generate\_cnpj](#generate_cnpj) + - [is_valid_cnpj](#is_valid_cnpj) + - [format_cnpj](#format_cnpj) + - [remove_symbols_cnpj](#remove_symbols_cnpj) + - [generate_cnpj](#generate_cnpj) - [CEP](#cep) - - [is\_valid\_cep](#is_valid_cep) - - [format\_cep](#format_cep) - - [remove\_symbols\_cep](#remove_symbols_cep) - - [generate\_cep](#generate_cep) - - [get\_address\_from\_cep](#get_address_from_cep) - - [get\_cep\_information\_from\_address](#get_cep_information_from_address) + - [is_valid_cep](#is_valid_cep) + - [format_cep](#format_cep) + - [remove_symbols_cep](#remove_symbols_cep) + - [generate_cep](#generate_cep) + - [get_address_from_cep](#get_address_from_cep) + - [get_cep_information_from_address](#get_cep_information_from_address) - [Date](#date) - - [convert\_date\_to\_text](#convert_date_to_text) + - [convert_date_to_text](#convert_date_to_text) - [Phone](#phone) - - [is\_valid\_phone](#is_valid_phone) - - [format\_phone](#format_phone) - - [remove\_symbols\_phone](#remove_symbols_phone) - - [remove\_international\_dialing\_code](#remove_international_dialing_code) - - [generate\_phone](#generate_phone) + - [is_valid_phone](#is_valid_phone) + - [format_phone](#format_phone) + - [remove_symbols_phone](#remove_symbols_phone) + - [remove_international_dialing_code](#remove_international_dialing_code) + - [generate_phone](#generate_phone) - [Email](#email) - - [is\_valid\_email](#is_valid_email) + - [is_valid_email](#is_valid_email) - [CNH](#cnh) - - [is\_valid\_cnh](#is_valid_cnh) + - [is_valid_cnh](#is_valid_cnh) - [License Plate](#license-plate) - - [is\_valid\_license\_plate](#is_valid_license_plate) - - [format\_license\_plate](#format_license_plate) - - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) - - [generate\_license\_plate](#generate_license_plate) - - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) - - [get\_format\_license\_plate](#get_format_license_plate) + - [is_valid_license_plate](#is_valid_license_plate) + - [format_license_plate](#format_license_plate) + - [remove_symbols_license_plate](#remove_symbols_license_plate) + - [generate_license_plate](#generate_license_plate) + - [convert_license_plate_to_mercosul](#convert_license_plate_to_mercosul) + - [get_format_license_plate](#get_format_license_plate) - [PIS](#pis) - - [is\_valid\_pis](#is_valid_pis) - - [format\_pis](#format_pis) - - [remove\_symbols\_pis](#remove_symbols_pis) - - [generate\_pis](#generate_pis) + - [is_valid_pis](#is_valid_pis) + - [format_pis](#format_pis) + - [remove_symbols_pis](#remove_symbols_pis) + - [generate_pis](#generate_pis) - [Legal Process](#legal-process) - - [is\_valid\_legal\_process](#is_valid_legal_process) - - [format\_legal\_process](#format_legal_process) - - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) - - [generate\_legal\_process](#generate_legal_process) + - [is_valid_legal_process](#is_valid_legal_process) + - [format_legal_process](#format_legal_process) + - [remove_symbols_legal_process](#remove_symbols_legal_process) + - [generate_legal_process](#generate_legal_process) - [Voter ID](#voter-id) - - [is\_valid\_voter\_id](#is_valid_voter_id) - - [format\_voter\_id](#format_voter_id) - - [generate\_voter\_id](#generate_voter_id) + - [is_valid_voter_id](#is_valid_voter_id) + - [format_voter_id](#format_voter_id) + - [generate_voter_id](#generate_voter_id) - [IBGE](#ibge) - - [convert\_code\_to\_uf](#convert_code_to_uf) - - [get\_code\_by\_municipality\_name](#get_code_by_municipality_name) - - [get\_municipality\_by\_code](#get_municipality_by_code) - - [convert\_uf\_to\_name](#convert_uf_to_name) - - [convert\_name\_to\_uf](#convert_name_to_uf) + - [convert_code_to_uf](#convert_code_to_uf) + - [get_code_by_municipality_name](#get_code_by_municipality_name) + - [get_municipality_by_code](#get_municipality_by_code) + - [convert_uf_to_name](#convert_uf_to_name) + - [convert_name_to_uf](#convert_name_to_uf) - [Holidays](#holidays) - - [is\_holiday](#is_holiday) + - [is_holiday](#is_holiday) - [Monetary](#monetary) - - [format\_currency](#format_currency) - - [convert\_real\_to\_text](#convert_real_to_text) + - [format_currency](#format_currency) + - [convert_real_to_text](#convert_real_to_text) - [Legal Nature](#legal-nature) - - [is\_valid\_legal\_nature](#is_valid_legal_nature) - - [get\_legal\_nature\_description](#get_legal_nature_description) - - [list\_all\_legal\_nature](#list_all_legal_nature) + - [is_valid_legal_nature](#is_valid_legal_nature) + - [get_legal_nature_description](#get_legal_nature_description) + - [list_all_legal_nature](#list_all_legal_nature) - [RENAVAM](#renavam) - - [is\_valid\_renavam](#is_valid_renavam) + - [is_valid_renavam](#is_valid_renavam) - [Passport](#passport) - - [is\_valid\_passport](#is_valid_passport) - - [format\_passport](#format_passport) - - [remove\_symbols\_passport](#remove_symbols_passport) - - [generate\_passport](#generate_passport) + - [is_valid_passport](#is_valid_passport) + - [format_passport](#format_passport) + - [remove_symbols_passport](#remove_symbols_passport) + - [generate_passport](#generate_passport) ## CPF From 695674f8df91f8e05f2f003be2b5d4908e74f697 Mon Sep 17 00:00:00 2001 From: erickcpassos Date: Fri, 13 Feb 2026 16:14:00 +0000 Subject: [PATCH 8/9] Retoma READMEs anteriores --- README.md | 92 ++++++++++++++++++++++++++-------------------------- README_EN.md | 84 ++++++++++++++++++++++++----------------------- 2 files changed, 89 insertions(+), 87 deletions(-) diff --git a/README.md b/README.md index 7a904d7..c9ccefa 100644 --- a/README.md +++ b/README.md @@ -42,72 +42,72 @@ False # Utilitários - [CPF](#cpf) - - [is_valid_cpf](#is_valid_cpf) - - [format_cpf](#format_cpf) - - [remove_symbols_cpf](#remove_symbols_cpf) - - [generate_cpf](#generate_cpf) + - [is\_valid\_cpf](#is_valid_cpf) + - [format\_cpf](#format_cpf) + - [remove\_symbols\_cpf](#remove_symbols_cpf) + - [generate\_cpf](#generate_cpf) - [CNPJ](#cnpj) - - [is_valid_cnpj](#is_valid_cnpj) - - [format_cnpj](#format_cnpj) - - [remove_symbols_cnpj](#remove_symbols_cnpj) - - [generate_cnpj](#generate_cnpj) + - [is\_valid\_cnpj](#is_valid_cnpj) + - [format\_cnpj](#format_cnpj) + - [remove\_symbols\_cnpj](#remove_symbols_cnpj) + - [generate\_cnpj](#generate_cnpj) - [CEP](#cep) - - [is_valid_cep](#is_valid_cep) - - [format_cep](#format_cep) - - [remove_symbols_cep](#remove_symbols_cep) - - [generate_cep](#generate_cep) - - [get_address_from_cep](#get_address_from_cep) - - [get_cep_information_from_address](#get_cep_information_from_address) + - [is\_valid\_cep](#is_valid_cep) + - [format\_cep](#format_cep) + - [remove\_symbols\_cep](#remove_symbols_cep) + - [generate\_cep](#generate_cep) + - [get\_address\_from\_cep](#get_address_from_cep) + - [get\_cep\_information\_from\_address](#get_cep_information_from_address) - [Telefone](#telefone) - - [is_valid_phone](#is_valid_phone) - - [format_phone](#format_phone) - - [remove_symbols_phone](#remove_symbols_phone) - - [remove_international_dialing_code](#remove_international_dialing_code) - - [generate_phone](#generate_phone) + - [is\_valid\_phone](#is_valid_phone) + - [format\_phone](#format_phone) + - [remove\_symbols\_phone](#remove_symbols_phone) + - [remove\_international\_dialing\_code](#remove_international_dialing_code) + - [generate\_phone](#generate_phone) - [Email](#email) - - [is_valid_email](#is_valid_email) -- [Data](#data) - - [convert_date_to_text](#convert_date_to_text) + - [is\_valid\_email](#is_valid_email) +- [Data](#date) + - [convert\_date\_to_text](#convert_date_to_text) - [CNH](#cnh) - - [is_valid_cnh](#is_valid_cnh) + - [is\_valid\_cnh](#is_valid_cnh) - [Placa de Carro](#placa-de-carro) - - [is_valid_license_plate](#is_valid_license_plate) - - [format_license_plate](#format_license_plate) - - [remove_symbols_license_plate](#remove_symbols_license_plate) - - [generate_license_plate](#generate_license_plate) - - [convert_license_plate_to_mercosul](#convert_license_plate_to_mercosul) - - [get_format_license_plate](#get_format_license_plate) + - [is\_valid\_license\_plate](#is_valid_license_plate) + - [format\_license\_plate](#format_license_plate) + - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) + - [generate\_license\_plate](#generate_license_plate) + - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) + - [get\_format\_license\_plate](#get_format_license_plate) - [PIS](#pis) - - [is_valid_pis](#is_valid_pis) - - [format_pis](#format_pis) - - [remove_symbols_pis](#remove_symbols_pis) - - [generate_pis](#generate_pis) + - [is\_valid\_pis](#is_valid_pis) + - [format\_pis](#format_pis) + - [remove\_symbols\_pis](#remove_symbols_pis) + - [generate\_pis](#generate_pis) - [Processo Jurídico](#processo-jurídico) - - [is_valid_legal_process](#is_valid_legal_process) - - [format_legal_process](#format_legal_process) - - [remove_symbols_legal_process](#remove_symbols_legal_process) - - [generate_legal_process](#generate_legal_process) + - [is\_valid\_legal\_process](#is_valid_legal_process) + - [format\_legal\_process](#format_legal_process) + - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) + - [generate\_legal\_process](#generate_legal_process) +- [RENAVAM](#renavam) + - [is_valid_renavam](#is_valid_renavam) - [Titulo Eleitoral](#titulo-eleitoral) - - [is_valid_voter_id](#is_valid_voter_id) - - [format_voter_id](#format_voter_id) - - [generate_voter_id](#generate_voter_id) + - [is\_valid\_voter\_id](#is_valid_voter_id) + - [format\_voter\_id](#format_voter_id) + - [generate\_voter\_id](#generate_voter_id) - [IBGE](#ibge) - [convert_code_to_uf](#convert_code_to_uf) - - [get_code_by_municipality_name](#get_code_by_municipality_name) - - [get_municipality_by_code](#get_municipality_by_code) - [convert_uf_to_name](#convert_uf_to_name) - [convert_name_to_uf](#convert_name_to_uf) + - [get_code_by_municipality_name](#get_code_by_municipality_name) + - [get\_municipality\_by\_code](#get_municipality_by_code) - [Feriados](#feriados) - [is_holiday](#is_holiday) - [Monetário](#monetário) - - [format_currency](#format_currency) - - [convert_real_to\_text](#convert_real_to_text) + - [format\_currency](#format_currency) + - [convert\_real\_to\_text](#convert_real_to_text) - [Natureza Jurídica](#natureza-jurídica) - [is_valid_legal_nature](#is_valid_legal_nature) - [get_legal_nature_description](#get_legal_nature_description) - [list_all_legal_nature](#list_all_legal_nature) -- [RENAVAM](#renavam) - - [is_valid_renavam](#is_valid_renavam) - [Passaporte](#passaporte) - [is_valid_passport](#is_valid_passport) - [format_passport](#format_passport) diff --git a/README_EN.md b/README_EN.md index cf9994c..9186244 100644 --- a/README_EN.md +++ b/README_EN.md @@ -40,73 +40,75 @@ False ``` # Utilities +# Utilities + - [CPF](#cpf) - - [is_valid_cpf](#is_valid_cpf) - - [format_cpf](#format_cpf) - - [remove_symbols_cpf](#remove_symbols_cpf) - - [generate_cpf](#generate_cpf) + - [is\_valid\_cpf](#is_valid_cpf) + - [format\_cpf](#format_cpf) + - [remove\_symbols\_cpf](#remove_symbols_cpf) + - [generate\_cpf](#generate_cpf) - [CNPJ](#cnpj) - - [is_valid_cnpj](#is_valid_cnpj) - - [format_cnpj](#format_cnpj) - - [remove_symbols_cnpj](#remove_symbols_cnpj) - - [generate_cnpj](#generate_cnpj) + - [is\_valid\_cnpj](#is_valid_cnpj) + - [format\_cnpj](#format_cnpj) + - [remove\_symbols\_cnpj](#remove_symbols_cnpj) + - [generate\_cnpj](#generate_cnpj) - [CEP](#cep) - - [is_valid_cep](#is_valid_cep) - - [format_cep](#format_cep) - - [remove_symbols_cep](#remove_symbols_cep) - - [generate_cep](#generate_cep) - - [get_address_from_cep](#get_address_from_cep) - - [get_cep_information_from_address](#get_cep_information_from_address) + - [is\_valid\_cep](#is_valid_cep) + - [format\_cep](#format_cep) + - [remove\_symbols\_cep](#remove_symbols_cep) + - [generate\_cep](#generate_cep) + - [get\_address\_from\_cep](#get_address_from_cep) + - [get\_cep\_information\_from\_address](#get_cep_information_from_address) - [Date](#date) - - [convert_date_to_text](#convert_date_to_text) + - [convert\_date\_to_text](#convert_date_to_text) - [Phone](#phone) - - [is_valid_phone](#is_valid_phone) - - [format_phone](#format_phone) - - [remove_symbols_phone](#remove_symbols_phone) - - [remove_international_dialing_code](#remove_international_dialing_code) - - [generate_phone](#generate_phone) + - [is\_valid\_phone](#is_valid_phone) + - [format\_phone](#format_phone) + - [remove\_symbols\_phone](#remove_symbols_phone) + - [remove\_international\_dialing\_code](#remove_international_dialing_code) + - [generate\_phone](#generate_phone) - [Email](#email) - - [is_valid_email](#is_valid_email) + - [is\_valid\_email](#is_valid_email) - [CNH](#cnh) - - [is_valid_cnh](#is_valid_cnh) + - [is\_valid\_cnh](#is_valid_cnh) - [License Plate](#license-plate) - - [is_valid_license_plate](#is_valid_license_plate) - - [format_license_plate](#format_license_plate) - - [remove_symbols_license_plate](#remove_symbols_license_plate) - - [generate_license_plate](#generate_license_plate) - - [convert_license_plate_to_mercosul](#convert_license_plate_to_mercosul) - - [get_format_license_plate](#get_format_license_plate) + - [is\_valid\_license\_plate](#is_valid_license_plate) + - [format\_license\_plate](#format_license_plate) + - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) + - [generate\_license\_plate](#generate_license_plate) + - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) + - [get\_format\_license\_plate](#get_format_license_plate) - [PIS](#pis) - - [is_valid_pis](#is_valid_pis) - - [format_pis](#format_pis) - - [remove_symbols_pis](#remove_symbols_pis) - - [generate_pis](#generate_pis) + - [is\_valid\_pis](#is_valid_pis) + - [format\_pis](#format_pis) + - [remove\_symbols\_pis](#remove_symbols_pis) + - [generate\_pis](#generate_pis) +- [RENAVAM](#renavam) + - [is_valid_renavam](#is_valid_renavam) - [Legal Process](#legal-process) - - [is_valid_legal_process](#is_valid_legal_process) - - [format_legal_process](#format_legal_process) - - [remove_symbols_legal_process](#remove_symbols_legal_process) - - [generate_legal_process](#generate_legal_process) + - [is\_valid\_legal\_process](#is_valid_legal_process) + - [format\_legal\_process](#format_legal_process) + - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) + - [generate\_legal\_process](#generate_legal_process) - [Voter ID](#voter-id) - [is_valid_voter_id](#is_valid_voter_id) - [format_voter_id](#format_voter_id) - [generate_voter_id](#generate_voter_id) - [IBGE](#ibge) - [convert_code_to_uf](#convert_code_to_uf) - - [get_code_by_municipality_name](#get_code_by_municipality_name) - - [get_municipality_by_code](#get_municipality_by_code) - [convert_uf_to_name](#convert_uf_to_name) - [convert_name_to_uf](#convert_name_to_uf) + - [get_code_by_municipality_name](#get_code_by_municipality_name) + - [get\_municipality\_by\_code](#get_municipality_by_code) - [Holidays](#holidays) - [is_holiday](#is_holiday) - [Monetary](#monetary) - [format_currency](#format_currency) - - [convert_real_to_text](#convert_real_to_text) + - [convert\_real\_to\_text](#convert_real_to_text) - [Legal Nature](#legal-nature) - [is_valid_legal_nature](#is_valid_legal_nature) - [get_legal_nature_description](#get_legal_nature_description) - [list_all_legal_nature](#list_all_legal_nature) -- [RENAVAM](#renavam) - - [is_valid_renavam](#is_valid_renavam) - [Passport](#passport) - [is_valid_passport](#is_valid_passport) - [format_passport](#format_passport) From 3843805554ba051790a7ca2ce4d9a4d7872e9225 Mon Sep 17 00:00:00 2001 From: erickcpassos Date: Fri, 13 Feb 2026 16:15:13 +0000 Subject: [PATCH 9/9] =?UTF-8?q?Corrige=20t=C3=ADtulo=20utilit=C3=A1rios=20?= =?UTF-8?q?do=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README_EN.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README_EN.md b/README_EN.md index 9186244..559f8f5 100644 --- a/README_EN.md +++ b/README_EN.md @@ -40,8 +40,6 @@ False ``` # Utilities -# Utilities - - [CPF](#cpf) - [is\_valid\_cpf](#is_valid_cpf) - [format\_cpf](#format_cpf)