Skip to content

Conversão de Código do IBGE de Estado para UF #397

@camilamaia

Description

@camilamaia

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

Dado um código do IBGE de dois dígitos que representa um estado brasileiro, quero obter a sigla de Unidade Federativa (UF) correspondente. Isso é útil para conversão de códigos numéricos do IBGE em siglas de estados para sistemas e documentos.

Por exemplo, converter "12" para "AM" (Amazonas).

Descreva a solução que você gostaria

  • Uma função convert_code_to_uf, que recebe um código do IBGE (string de 2 dígitos) e retorna a sigla de UF correspondente.
  • A função deve verificar se o código do IBGE é válido e retornar a sigla da UF correspondente.
  • Se o código do IBGE 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.
  • Os códigos do IBGE devem ser representados como strings de dois dígitos.
  • Já existe um enum dos códigos do IBGE e suas correspondências com UF no arquivo brutils/data/enums/ibge_uf.py, porém o enum não mapeia para o código. Criar um novo Enum no mesmo arquivo que mapeie código e UF.

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_code_to_uf(code): # type: (str) -> str | None
        """
        Converts a given IBGE code (2-digit string) to its corresponding UF (state abbreviation).
    
        This function takes a 2-digit IBGE code and returns the corresponding UF code. 
        It handles all Brazilian states and the Federal District. 
    
        Args:
            code (str): The 2-digit IBGE code to be converted.
    
        Returns:
            str or None: The UF code corresponding to the IBGE code, 
                or None if the IBGE code is invalid.
    
        Example:
            >>> convert_code_to_uf('12')
            "AM"
            >>> convert_code_to_uf('33')
            "RJ"
            >>> convert_code_to_uf('99')
            None
        """
        # implementar a lógica da função aqui

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

    # IBGE Imports    
    from brutils.ibge.uf import (
        convert_code_to_uf,
    )

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

    __all__ = [
        ...
        # IBGE
        'convert_code_to_uf',
    ]
  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_code_to_uf
    
    class TestUF(TestCase):
        def test_convert_code_to_uf(self):
            # Testes para códigos válidos
            self.assertEqual(convert_code_to_uf('12'), "AM")  # Amazonas
            self.assertEqual(convert_code_to_uf('33'), "RJ")  # Rio de Janeiro
            self.assertEqual(convert_code_to_uf('31'), "MG")  # Minas Gerais
            self.assertEqual(convert_code_to_uf('52'), "GO")  # Goiás
    
            # Testes para códigos inválidos
            self.assertIsNone(convert_code_to_uf('99'))  # Código não existe
            self.assertIsNone(convert_code_to_uf('00'))  # Código não existe
            self.assertIsNone(convert_code_to_uf(''))   # Código vazio
            self.assertIsNone(convert_code_to_uf('AB'))  # Código não numérico
    
            # implementar mais casos de teste aqui se necessário
  4. Seguir os passos seguintes do guia de contribuição.

Contexto adicional

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions