Conversão de UF para Nome de Estado
Seu pedido de recurso está relacionado a um problema? Por favor, descreva.
Dado um código de Unidade Federativa (UF) do Brasil, quero obter o nome completo do estado correspondente. Isso é útil para conversão de siglas de estados em nomes completos em sistemas e documentos.
Por exemplo, converter "SP" para "São Paulo".
Descreva a solução que você gostaria
- Uma função
convert_uf_to_text, que recebe um código de UF (string de 2 letras) e retorna o nome completo do estado correspondente. - A função deve verificar se o código UF é válido e retornar o nome do estado correspondente.
- Se o código UF 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.
- Já existe uma lista das UFs 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_uf_to_text(uf): # type: (str) -> str | None """ Converts a given Brazilian state code (UF) to its full state name. This function takes a 2-letter UF code and returns the corresponding full state name. It handles all Brazilian states and the Federal District. Args: uf (str): The 2-letter UF code to be converted. Returns: str or None: The full name of the state corresponding to the UF code, or None if the UF code is invalid. Example: >>> convert_uf_to_text('SP') "São Paulo" >>> convert_uf_to_text('RJ') "Rio de Janeiro" >>> convert_uf_to_text('XX') None """ # implementar a lógica da função aquiImportar a nova função no arquivo
brutils-python/brutils/__init__.py:# UF Imports from brutils.ibge.uf import ( convert_uf_to_text, )E adicionar o nome da nova função na lista
__all__do mesmo arquivobrutils-python/brutils/__init__.py:__all__ = [ ... # UF 'convert_uf_to_text', ] -
Como parte do passo 9, criar o arquivo de teste:
brutils-python/tests/ibge/test_uf.py.from unittest import TestCase from brutils.ibge.uf import convert_uf_to_text class TestUF(TestCase): def test_convert_uf_to_text(self): # Testes para códigos válidos self.assertEqual(convert_uf_to_text('SP'), "São Paulo") self.assertEqual(convert_uf_to_text('RJ'), "Rio de Janeiro") self.assertEqual(convert_uf_to_text('MG'), "Minas Gerais") self.assertEqual(convert_uf_to_text('DF'), "Distrito Federal") self.assertEqual(convert_uf_to_text('df'), "Distrito Federal") # Testes para códigos inválidos self.assertIsNone(convert_uf_to_text('XX')) # Código não existe self.assertIsNone(convert_uf_to_text('')) # Código vazio # Implementar mais casos de teste aqui -
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 sigla deve ser verificada contra a lista oficial de estados e do Distrito Federal.
Oi! Posso pegar?
Assign feito @low-ise!
Oi! Estou com um problema na hora de rodar os testes. Fiz todo o passo-a-passo porém meu make test retorna:
FAIL: test_public_methods_in_imports (test_imports.TestImports.test_public_methods_in_imports)
Test that all public methods are imported or aliased.
Traceback (most recent call last):
File "~/brutils-python/tests/test_imports.py", line 104, in test_public_methods_in_imports
self.fail(
AssertionError: -1 public method(s) missing from imports at __init__.py. You need to import the new brutils features methods inside the brutils/__init__.py file
Conferi o init.py e o all e ainda não encontrei o erro. SOS
@low-ise você consegue mandar o seu código para o github para que eu possa dar uma olhadinha?
Para isso, supondo que você já está numa branch chamada 395, basta fazer:
$ make format
Depois:
$ git add --all
Em seguida:
$ git commit -a -m "Adicionando utilitário convert_uf_to_text"
E por último:
$ git push --set-upstream origin 395
Alguma razão para o nome da função ser *_to_text ?
Acredito que *_to_name ou *_to_fullname sejam melhores ("text" é muito genérico, a propria "uf" é um texto), além de mais consistentes com a string de documentação da função.
:warning: [PT-BR] Esta issue está inativa há 169 dias. Os assignees serão removidos em 7 dias caso não haja atualizações.
:warning: [EN] This issue has been inactive for 169 days. The assignees will be removed in 7 days if there are no updates.
Bora!
Issue 395 atribuida a dinalivia :rocket:" "Verifique o guia de contribuição para mais informações sobre como submeter sua Pull Request."
:warning: [PT-BR] Esta issue está inativa há 61 dias. Os assignees serão removidos em 7 dias caso não haja atualizações.
:warning: [EN] This issue has been inactive for 61 days. The assignees will be removed in 7 days if there are no updates.