brazilian-utils / brutils-python

Biblioteca de utilitários projetada para validar, gerar e manipular dados de acordo com as particularidades do Brasil 🇧🇷
https://pypi.python.org/pypi/brutils
MIT License
249 stars 59 forks source link

Retornar Município e UF a partir do Código IBGE #398

Open camilamaia opened 1 month ago

camilamaia commented 1 month ago

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

Dado um código de município do IBGE em formato de string, quero obter uma tupla com o nome do município e a UF correspondente.

Por exemplo, ao passar o código "3550308", a função deve retornar ("São Paulo", "SP").

Descreva a solução que você gostaria

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/municipality.py.

    def get_municipality_by_code(code): # type: (str) -> (str, str) | None
        """
        Returns the municipality name and UF for a given IBGE code.
    
        This function takes a string representing an IBGE municipality code 
        and returns a tuple with the municipality's name and its corresponding UF.
    
        Args:
            code (str): The IBGE code of the municipality.
    
        Returns:
            tuple: A tuple formatted as ("Município", "UF").
                - Returns None if the code is not valid.
    
        Example:
            >>> get_municipality_by_code("3550308")
            ("São Paulo", "SP")
        """
        # Implementar a lógica para recuperar o município e a UF pelo código do IBGE

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

    # IBGE Imports    
    from brutils.ibge.municipality import (
        get_municipality_by_code,
    )

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

    __all__ = [
        ...
        # IBGE
        get_municipality_by_code
    ]
  3. Como parte do passo 9, criar o arquivo de teste: brutils-python/tests/ibge/municipality.py.

    from unittest import TestCase
    from brutils.ibge.municipality import get_municipality_by_code
    
    class TestIBGE(TestCase):
        def test_get_municipality_by_code(self):
            self.assertEqual(get_municipality_by_code("3550308"), ("São Paulo", "SP"))
            self.assertEqual(get_municipality_by_code("3304557"), ("Rio de Janeiro", "RJ"))
            self.assertEqual(get_municipality_by_code("5208707"), ("Goiânia", "GO"))
            self.assertIsNone(get_municipality_by_code("1234567"))
    
            # implementar mais casos de teste aqui se necessário
  4. Seguir os passos seguintes do guia de contribuição.

Contexto adicional

jaimenunes commented 1 month ago

Olá, posso trabalhar nessa issue?

camilamaia commented 1 month ago

Feito! @jaimenunes