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

Conversão de UF para Nome de Estado #395

Open
camilamaia opened this issue Sep 12, 2024 · 5 comments · May be fixed by #421
Open

Conversão de UF para Nome de Estado #395

camilamaia opened this issue Sep 12, 2024 · 5 comments · May be fixed by #421
Assignees
Labels
feature python sul 2024 Issues para o tutorial na Python Sul 2024

Comments

@camilamaia
Copy link
Member

camilamaia commented Sep 12, 2024

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 camilamaia added feature python sul 2024 Issues para o tutorial na Python Sul 2024 labels Sep 12, 2024
@camilamaia camilamaia changed the title Conversão de UF para Nome Conversão de UF para Nome de Estado Sep 12, 2024
@low-ise
Copy link

low-ise commented Sep 13, 2024

Oi! Posso pegar?

@camilamaia
Copy link
Member Author

Assign feito @low-ise!

@low-ise
Copy link

low-ise commented Sep 22, 2024

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

@camilamaia
Copy link
Member Author

@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

@antoniamaia antoniamaia linked a pull request Oct 15, 2024 that will close this issue
10 tasks
@adorilson
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature python sul 2024 Issues para o tutorial na Python Sul 2024
Projects
Status: In Progress
Development

Successfully merging a pull request may close this issue.

3 participants