-
-
Notifications
You must be signed in to change notification settings - Fork 84
Description
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
-
Seguir até o passo 8 do guia de contribuição.
-
Como parte do passo 8, criar o arquivo:
brutils-python/brutils/ibge/uf.py
.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
:# UF Imports from brutils.ibge.uf import ( convert_text_to_uf, )
E adicionar o nome da nova função na lista
__all__
do mesmo arquivobrutils-python/brutils/__init__.py
:__all__ = [ ... # UF 'convert_text_to_uf', ]
-
Como parte do passo 9, criar o arquivo de teste:
brutils-python/tests/test_uf.py
.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
-
Seguir os passos seguintes do guia de contribuição.
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.
- 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.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status