|
| 1 | +# Prompt ChatGPT para Criar Issues |
| 2 | + |
| 3 | +## Exemplo: formatar moeda brasileira |
| 4 | + |
| 5 | +- Criar uma issue para o repositório brutils-python. |
| 6 | +- Issue: formatar moeda brasileira |
| 7 | +- nome da função: format_brl |
| 8 | +- entrada: float |
| 9 | +- saída: string formatada |
| 10 | +- caso entrada seja inválida, retornar None |
| 11 | +- Não implementar a lógica da função. Apenas deixar a docstring e um comentário `# implementar a lógica da função aqui` |
| 12 | +- Considerar o maior número de edge cases possíveis |
| 13 | +- Criar testes unitários para todos os edge cases |
| 14 | +- Estes são os utilitários já existentes na lib: |
| 15 | + |
| 16 | +```md |
| 17 | +- [CPF](#cpf) |
| 18 | + - [is\_valid\_cpf](#is_valid_cpf) |
| 19 | + - [format\_cpf](#format_cpf) |
| 20 | + - [remove\_symbols\_cpf](#remove_symbols_cpf) |
| 21 | + - [generate\_cpf](#generate_cpf) |
| 22 | +- [CNPJ](#cnpj) |
| 23 | + - [is\_valid\_cnpj](#is_valid_cnpj) |
| 24 | + - [format\_cnpj](#format_cnpj) |
| 25 | + - [remove\_symbols\_cnpj](#remove_symbols_cnpj) |
| 26 | + - [generate\_cnpj](#generate_cnpj) |
| 27 | +- [CEP](#cep) |
| 28 | + - [is\_valid\_cep](#is_valid_cep) |
| 29 | + - [format\_cep](#format_cep) |
| 30 | + - [remove\_symbols\_cep](#remove_symbols_cep) |
| 31 | + - [generate\_cep](#generate_cep) |
| 32 | + - [get\_address\_from\_cep](#get_address_from_cep) |
| 33 | + - [get\_cep\_information\_from\_address](#get_cep_information_from_address) |
| 34 | +- [Telefone](#telefone) |
| 35 | + - [is\_valid\_phone](#is_valid_phone) |
| 36 | + - [format\_phone](#format_phone) |
| 37 | + - [remove\_symbols\_phone](#remove_symbols_phone) |
| 38 | + - [remove\_international\_dialing\_code](#remove_international_dialing_code) |
| 39 | + - [generate\_phone](#generate_phone) |
| 40 | +- [Email](#email) |
| 41 | + - [is\_valid\_email](#is_valid_email) |
| 42 | +- [Placa de Carro](#placa-de-carro) |
| 43 | + - [is\_valid\_license\_plate](#is_valid_license_plate) |
| 44 | + - [format\_license\_plate](#format_license_plate) |
| 45 | + - [remove\_symbols\_license\_plate](#remove_symbols_license_plate) |
| 46 | + - [generate\_license\_plate](#generate_license_plate) |
| 47 | + - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul) |
| 48 | + - [get\_format\_license\_plate](#get_format_license_plate) |
| 49 | +- [PIS](#pis) |
| 50 | + - [is\_valid\_pis](#is_valid_pis) |
| 51 | + - [format\_pis](#format_pis) |
| 52 | + - [remove\_symbols\_pis](#remove_symbols_pis) |
| 53 | + - [generate\_pis](#generate_pis) |
| 54 | +- [Processo Jurídico](#processo-jurídico) |
| 55 | + - [is\_valid\_legal\_process](#is_valid_legal_process) |
| 56 | + - [format\_legal\_process](#format_legal_process) |
| 57 | + - [remove\_symbols\_legal\_process](#remove_symbols_legal_process) |
| 58 | + - [generate\_legal\_process](#generate_legal_process) |
| 59 | +- [Título Eleitoral](#titulo-eleitoral) |
| 60 | + - [is_valid_voter_id](#is_valid_voter_id) |
| 61 | + - [format_voter_id](#format_voter_id) |
| 62 | + - [generate_voter_id](#generate_voter_id) |
| 63 | +- [IBGE](#ibge) |
| 64 | + - [convert_code_to_uf](#convert_code_to_uf) |
| 65 | +``` |
| 66 | + |
| 67 | +- Seguindo exatamento o mesmo modelo dessa issue: |
| 68 | + |
| 69 | +```md |
| 70 | +Título da Issue: Conversão de Nome de Estado para UF |
| 71 | + |
| 72 | +**Seu pedido de recurso está relacionado a um problema? Por favor, descreva.** |
| 73 | + |
| 74 | +Dado o nome completo de um estado brasileiro, quero obter o código de Unidade Federativa (UF) correspondente. Isso é útil para conversão de nomes completos de estados em siglas utilizadas em sistemas e documentos. |
| 75 | + |
| 76 | +Por exemplo, converter `"São Paulo"` para `"SP"`. |
| 77 | + |
| 78 | +**Descreva a solução que você gostaria** |
| 79 | + |
| 80 | +* Uma função `convert_text_to_uf`, que recebe o nome completo do estado (string) e retorna o código UF correspondente. |
| 81 | +* A função deve ignorar maiúsculas e minúsculas, e também deve desconsiderar acentos e o caractere especial ç (considerando c também). |
| 82 | +* A função deve verificar se o nome completo é válido e retornar o código UF correspondente. |
| 83 | +* Se o nome completo não for válido, a função deve retornar `None`. |
| 84 | +* A função deve lidar com todos os estados e o Distrito Federal do Brasil. |
| 85 | +* A lista das UFs e seus nomes completos já existe no arquivo `brutils/data/enums/uf.py`. Ela deve ser reutilizada. |
| 86 | + |
| 87 | +**Descreva alternativas que você considerou** |
| 88 | + |
| 89 | +1. Seguir até o passo 8 do [guia de contribuição](https://github.com/brazilian-utils/brutils-python/blob/main/CONTRIBUTING.md#primeira-contribui%C3%A7%C3%A3o). |
| 90 | + |
| 91 | +2. Como parte do passo 8, criar o arquivo: `brutils-python/brutils/ibge/uf.py`. |
| 92 | + |
| 93 | + ```python |
| 94 | + def convert_text_to_uf(state_name): # type: (str) -> str | None |
| 95 | + """ |
| 96 | + Converts a given Brazilian state full name to its corresponding UF code. |
| 97 | + |
| 98 | + This function takes the full name of a Brazilian state and returns the corresponding |
| 99 | + 2-letter UF code. It handles all Brazilian states and the Federal District. |
| 100 | + |
| 101 | + Args: |
| 102 | + state_name (str): The full name of the state to be converted. |
| 103 | + |
| 104 | + Returns: |
| 105 | + str or None: The UF code corresponding to the full state name, |
| 106 | + or None if the full state name is invalid. |
| 107 | + |
| 108 | + Example: |
| 109 | + >>> convert_text_to_uf('São Paulo') |
| 110 | + "SP" |
| 111 | + >>> convert_text_to_uf('Rio de Janeiro') |
| 112 | + "RJ" |
| 113 | + >>> convert_text_to_uf('Minas Gerais') |
| 114 | + "MG" |
| 115 | + >>> convert_text_to_uf('Distrito Federal') |
| 116 | + "DF" |
| 117 | + >>> convert_text_to_uf('Estado Inexistente') |
| 118 | + None |
| 119 | + """ |
| 120 | + # implementar a lógica da função aqui |
| 121 | + ``` |
| 122 | + |
| 123 | + Importar a nova função no arquivo `brutils-python/brutils/__init__.py`: |
| 124 | + |
| 125 | + ```python |
| 126 | + # UF Imports |
| 127 | + from brutils.ibge.uf import ( |
| 128 | + convert_text_to_uf, |
| 129 | + ) |
| 130 | + ``` |
| 131 | + |
| 132 | + E adicionar o nome da nova função na lista `__all__` do mesmo arquivo `brutils-python/brutils/__init__.py`: |
| 133 | + |
| 134 | + ```python |
| 135 | + __all__ = [ |
| 136 | + ... |
| 137 | + # UF |
| 138 | + 'convert_text_to_uf', |
| 139 | + ] |
| 140 | + ``` |
| 141 | + |
| 142 | +3. Como parte do passo 9, criar o arquivo de teste: `brutils-python/tests/test_uf.py`. |
| 143 | + |
| 144 | + ```python |
| 145 | + from unittest import TestCase |
| 146 | + from brutils.ibge.uf import convert_text_to_uf |
| 147 | + |
| 148 | + class TestUF(TestCase): |
| 149 | + def test_convert_text_to_uf(self): |
| 150 | + # Testes para nomes válidos |
| 151 | + self.assertEqual(convert_text_to_uf('São Paulo'), "SP") |
| 152 | + self.assertEqual(convert_text_to_uf('Rio de Janeiro'), "RJ") |
| 153 | + self.assertEqual(convert_text_to_uf('Minas Gerais'), "MG") |
| 154 | + self.assertEqual(convert_text_to_uf('Distrito Federal'), "DF") |
| 155 | + self.assertEqual(convert_text_to_uf('são paulo'), "SP") # Teste com minúsculas |
| 156 | + self.assertEqual(convert_text_to_uf('riO de janeiRo'), "RJ") # Teste com misturas de maiúsculas e minúsculas |
| 157 | + self.assertEqual(convert_text_to_uf('minas gerais'), "MG") # Teste com minúsculas |
| 158 | + self.assertEqual(convert_text_to_uf('sao paulo'), "SP") # Teste sem acento |
| 159 | + |
| 160 | + # Testes para nomes inválidos |
| 161 | + self.assertIsNone(convert_text_to_uf('Estado Inexistente')) # Nome não existe |
| 162 | + self.assertIsNone(convert_text_to_uf('')) # Nome vazio |
| 163 | + self.assertIsNone(convert_text_to_uf('123')) # Nome com números |
| 164 | + self.assertIsNone(convert_text_to_uf('São Paulo SP')) # Nome com sigla incluída |
| 165 | + self.assertIsNone(convert_text_to_uf('A')) # Nome com letra não mapeada |
| 166 | + self.assertIsNone(convert_text_to_uf('ZZZ')) # Nome com mais de 2 letras |
| 167 | + |
| 168 | + # implementar mais casos de teste aqui se necessário |
| 169 | + ``` |
| 170 | + |
| 171 | +4. Seguir os passos seguintes do [guia de contribuição](https://github.com/brazilian-utils/brutils-python/blob/main/CONTRIBUTING.md#primeira-contribui%C3%A7%C3%A3o). |
| 172 | + |
| 173 | +**Contexto adicional** |
| 174 | + |
| 175 | +* A lista de estados e suas siglas é definida pelo Instituto Brasileiro de Geografia e Estatística (IBGE). Para mais detalhes, consulte o [site do IBGE](https://atendimento.tecnospeed.com.br/hc/pt-br/articles/360021494734-Tabela-de-C%C3%B3digo-de-UF-do-IBGE). |
| 176 | +* A função deve lidar com a normalização de texto, incluindo a remoção de acentos e a conversão para minúsculas para garantir que o texto seja comparado de forma consistente. |
| 177 | +``` |
0 commit comments