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

Retornar Código IBGE a partir do Nome do Município #399

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

Retornar Código IBGE a partir do Nome do Município #399

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

Comments

@camilamaia
Copy link
Member

camilamaia commented Sep 13, 2024

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

Dado o nome de um município, desejo obter o código IBGE correspondente. A busca deve funcionar mesmo sem considerar diferenças de maiúsculas, minúsculas, acentuação e o caractere especial ç (considerando c também).

Por exemplo, ao passar o nome "São Paulo", "sao paulo", ou "São paulo", a função deve retornar "3550308". Também deve considerar "Conceição do Coité" como "Conceicao do Coite".

Descreva a solução que você gostaria

  • Uma função get_code_by_municipality_name, que recebe o nome de um município (string) e retorna o código IBGE correspondente (string).
  • A função deve ignorar diferenças de maiúsculas, minúsculas, acentos e o caractere especial ç (considerando c também).
  • Para nomes de municípios que não existirem na base, a função deve retornar None.
  • A saída deve ser formatada como: "Código IBGE". Exemplo: "3550308".

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_code_by_municipality_name(municipality_name): # type: (str) -> str | None
        """
        Returns the IBGE code for a given municipality name.
    
        This function takes a string representing a municipality's name 
        and returns the corresponding IBGE code (string). The function 
        will handle names by ignoring differences in case, accents, and 
        treating the character ç as c.
    
        Args:
            municipality_name (str): The name of the municipality.
    
        Returns:
            str: The IBGE code of the municipality.
                - Returns None if the name is not valid or does not exist.
    
        Example:
            >>> get_code_by_municipality_name("São Paulo")
            "3550308"
            >>> get_code_by_municipality_name("goiania")
            "5208707"
            >>> get_code_by_municipality_name("Conceição do Coité")
            "2909401"
            >>> get_code_by_municipality_name("conceicao do Coite")
            "2909401"
            >>> get_code_by_municipality_name("Municipio Inexistente")
            None
        """
        # Implementar a lógica de busca pelo nome do município, lidando com diferenças de acentuação e capitalização

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

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

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

    __all__ = [
        ...
        # IBGE
        get_code_by_municipality_name
    ]
  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_code_by_municipality_name
    
    class TestIBGE(TestCase):
        def test_get_code_by_municipality_name(self):
            self.assertEqual(get_code_by_municipality_name("São Paulo"), "3550308")
            self.assertEqual(get_code_by_municipality_name("rio de janeiro"), "3304557")
            self.assertEqual(get_code_by_municipality_name("GOIANIA"), "5208707")
            self.assertEqual(get_code_by_municipality_name("Conceição do Coité"), "2909401")
            self.assertEqual(get_code_by_municipality_name("conceicao do Coite"), "2909401") 
            self.assertIsNone(get_code_by_municipality_name("Municipio Inexistente"))
    
            # Implementar mais casos de teste aqui
  4. Seguir os passos seguintes do guia de contribuição.

Contexto adicional

  • A função deve ser capaz de validar se o nome do município está correto e retornar o código IBGE correspondente, ignorando variações de acentuação e o caractere especial ç (considerando c também).
  • Referência de códigos IBGE: https://www.ibge.gov.br/explica/codigos-dos-municipios.php
@camilamaia camilamaia added feature python sul 2024 Issues para o tutorial na Python Sul 2024 labels Sep 13, 2024
@ThalesCarl
Copy link

Oi, pode me dar assign nessa issue?

@camilamaia
Copy link
Member Author

Feito @ThalesCarl!

@ThalesCarl
Copy link

I quit. Pode remover meu assign? Pois o outro grupo já começou a trabalhar na issue

@CarduCaldeira
Copy link

Pode me colocar como o responsável?

@camilamaia
Copy link
Member Author

@CarduCaldeira e @ThalesCarl feito!

@CarduCaldeira CarduCaldeira linked a pull request Sep 13, 2024 that will close this issue
10 tasks
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