brutils-python icon indicating copy to clipboard operation
brutils-python copied to clipboard

Conversão de UF para Nome de Estado

Open camilamaia opened this issue 1 year ago • 5 comments

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

  1. Seguir até o passo 8 do guia de contribuição.

  2. 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 aqui
    

    Importar 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 arquivo brutils-python/brutils/__init__.py:

    __all__ = [
        ...
        # UF
        'convert_uf_to_text',
    ]
    
  3. 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
    
  4. 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.

camilamaia avatar Sep 12 '24 21:09 camilamaia

Oi! Posso pegar?

low-ise avatar Sep 13 '24 17:09 low-ise

Assign feito @low-ise!

camilamaia avatar Sep 13 '24 17:09 camilamaia

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 avatar Sep 22 '24 23:09 low-ise

@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

camilamaia avatar Sep 23 '24 14:09 camilamaia

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.

adorilson avatar Nov 25 '24 15:11 adorilson

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

github-actions[bot] avatar May 13 '25 16:05 github-actions[bot]

Bora!

dinalivia avatar May 19 '25 09:05 dinalivia

Issue 395 atribuida a dinalivia :rocket:" "Verifique o guia de contribuição para mais informações sobre como submeter sua Pull Request."

github-actions[bot] avatar May 19 '25 09:05 github-actions[bot]

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

github-actions[bot] avatar Jul 20 '25 01:07 github-actions[bot]