Skip to content

Commit 4af1cdc

Browse files
authored
docs: adicionando MAINTAINING.md (brazilian-utils#427)
1 parent 3549669 commit 4af1cdc

File tree

1 file changed

+177
-0
lines changed

1 file changed

+177
-0
lines changed

MAINTAINING.md

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
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

Comments
 (0)