Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: adicionando MAINTAINING.md #427

Merged
merged 1 commit into from
Oct 21, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
177 changes: 177 additions & 0 deletions MAINTAINING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
# Prompt ChatGPT para Criar Issues

## Exemplo: formatar moeda brasileira

- Criar uma issue para o repositório brutils-python.
- Issue: formatar moeda brasileira
- nome da função: format_brl
- entrada: float
- saída: string formatada
- caso entrada seja inválida, retornar None
- 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`
- Considerar o maior número de edge cases possíveis
- Criar testes unitários para todos os edge cases
- Estes são os utilitários já existentes na lib:

```md
- [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)
- [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)
- [Título 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)
```

- Seguindo exatamento o mesmo modelo dessa issue:

```md
Título da Issue: Conversão de Nome de Estado para UF

**Seu pedido de recurso está relacionado a um problema? Por favor, descreva.**

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.

Por exemplo, converter `"São Paulo"` para `"SP"`.

**Descreva a solução que você gostaria**

* Uma função `convert_text_to_uf`, que recebe o nome completo do estado (string) e retorna o código UF correspondente.
* A função deve ignorar maiúsculas e minúsculas, e também deve desconsiderar acentos e o caractere especial ç (considerando c também).
* A função deve verificar se o nome completo é válido e retornar o código UF correspondente.
* Se o nome completo não for válido, a função deve retornar `None`.
* A função deve lidar com todos os estados e o Distrito Federal do Brasil.
* A lista das UFs e seus nomes completos já existe no arquivo `brutils/data/enums/uf.py`. Ela deve ser reutilizada.

**Descreva alternativas que você considerou**

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).

2. Como parte do passo 8, criar o arquivo: `brutils-python/brutils/ibge/uf.py`.

```python
def convert_text_to_uf(state_name): # type: (str) -> str | None
"""
Converts a given Brazilian state full name to its corresponding UF code.

This function takes the full name of a Brazilian state and returns the corresponding
2-letter UF code. It handles all Brazilian states and the Federal District.

Args:
state_name (str): The full name of the state to be converted.

Returns:
str or None: The UF code corresponding to the full state name,
or None if the full state name is invalid.

Example:
>>> convert_text_to_uf('São Paulo')
"SP"
>>> convert_text_to_uf('Rio de Janeiro')
"RJ"
>>> convert_text_to_uf('Minas Gerais')
"MG"
>>> convert_text_to_uf('Distrito Federal')
"DF"
>>> convert_text_to_uf('Estado Inexistente')
None
"""
# implementar a lógica da função aqui
```

Importar a nova função no arquivo `brutils-python/brutils/__init__.py`:

```python
# UF Imports
from brutils.ibge.uf import (
convert_text_to_uf,
)
```

E adicionar o nome da nova função na lista `__all__` do mesmo arquivo `brutils-python/brutils/__init__.py`:

```python
__all__ = [
...
# UF
'convert_text_to_uf',
]
```

3. Como parte do passo 9, criar o arquivo de teste: `brutils-python/tests/test_uf.py`.

```python
from unittest import TestCase
from brutils.ibge.uf import convert_text_to_uf

class TestUF(TestCase):
def test_convert_text_to_uf(self):
# Testes para nomes válidos
self.assertEqual(convert_text_to_uf('São Paulo'), "SP")
self.assertEqual(convert_text_to_uf('Rio de Janeiro'), "RJ")
self.assertEqual(convert_text_to_uf('Minas Gerais'), "MG")
self.assertEqual(convert_text_to_uf('Distrito Federal'), "DF")
self.assertEqual(convert_text_to_uf('são paulo'), "SP") # Teste com minúsculas
self.assertEqual(convert_text_to_uf('riO de janeiRo'), "RJ") # Teste com misturas de maiúsculas e minúsculas
self.assertEqual(convert_text_to_uf('minas gerais'), "MG") # Teste com minúsculas
self.assertEqual(convert_text_to_uf('sao paulo'), "SP") # Teste sem acento

# Testes para nomes inválidos
self.assertIsNone(convert_text_to_uf('Estado Inexistente')) # Nome não existe
self.assertIsNone(convert_text_to_uf('')) # Nome vazio
self.assertIsNone(convert_text_to_uf('123')) # Nome com números
self.assertIsNone(convert_text_to_uf('São Paulo SP')) # Nome com sigla incluída
self.assertIsNone(convert_text_to_uf('A')) # Nome com letra não mapeada
self.assertIsNone(convert_text_to_uf('ZZZ')) # Nome com mais de 2 letras

# implementar mais casos de teste aqui se necessário
```

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).

**Contexto adicional**

* 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).
* 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.
```