Código-fonte para DadosAbertosBrasil.camara._blocos

from typing import Optional

from pydantic import validate_call, PositiveInt

from ..utils import Base, Get, Formato, Output


[documentos] class Bloco(Base): """Informações sobre um bloco partidário específico. Parameters ---------- cod: int Código numérico do bloco partidário do qual se deseja informações. verificar_certificado : bool, default=True Defina esse argumento como `False` em caso de falha na verificação do certificado SSL. Attributes ---------- dados : dict Conjunto completo de dados. cod : int Código numérico do bloco partidário. legislatura : str Legislatura do bloco partidário. nome : str Nome do bloco partidário. uri : str Endereço para coleta de dados direta pela API do bloco partidário. Examples -------- Obter o nome do bloco #576. >>> bl = camara.Bloco(cod=576) >>> bl.nome ... 'PSL, PTB' """ def __init__(self, cod: int, verificar_certificado: bool = True): self.cod = cod self.verify = verificar_certificado atributos = {"legislatura": ["idLegislatura"], "nome": ["nome"], "uri": ["uri"]} super().__init__( endpoint="camara", path=["blocos", str(cod)], unpack_keys=["dados"], error_key="nome", atributos=atributos, verify=self.verify, ) def __repr__(self) -> str: return f"<DadosAbertosBrasil.camara: Bloco {self.nome}>" def __str__(self) -> str: return f"Bloco {self.nome}"
[documentos] @validate_call def lista_blocos( legislatura: Optional[PositiveInt] = None, pagina: PositiveInt = 1, itens: Optional[PositiveInt] = None, asc: bool = True, ordenar_por: str = "nome", url: bool = True, index: bool = False, formato: Formato = "pandas", verificar_certificado: bool = True, ) -> Output: """Lista de dados sobre os blocos partidários. Nas atividades parlamentares, partidos podem se juntar em blocos partidários. Quando associados, os partidos passam a trabalhar como se fossem um "partidão", com um só líder e um mesmo conjunto de vice-líderes. Os blocos só podem existir até o fim da legislatura em que foram criados: na legislatura seguinte, os mesmos partidos, se associados, formam um novo bloco. Este recurso é uma lista dos blocos em atividade no momento da requisição. Se forem passados números de legislaturas com o parâmetro `legislatura`, são listados também os blocos formados e extintos nessas legislaturas. Parameters ---------- legislatura : int, optional Número da legislatura a qual os dados buscados devem corresponder. Se omitido, busca os dados da legislatura atual. pagina : int, default=1 Número da página de resultados, a partir de 1, que se deseja obter com a requisição, contendo o número de itens definido pelo parâmetro `itens`. Se omitido, assume o valor 1. itens : int, optional Número máximo de itens na página que se deseja obter com esta requisição. asc : bool, default=True Se os registros são ordenados no sentido ascendente: - True: De A a Z ou 0 a 9 (ascendente); - False: De Z a A ou 9 a 0 (descendente). ordenar_por : str, default='nome' Qual dos elementos da representação deverá ser usado para aplicar ordenação à lista. url : bool, default=False Se False, remove as colunas contendo URI, URL e e-mails. Esse argumento é ignorado se `formato` for igual a 'json'. index : bool, default=False Se True, define a coluna `codigo` como index do DataFrame. Esse argumento é ignorado se `formato` for igual a 'json'. formato : {"json", "pandas", "url"}, default="pandas" Formato do dado que será retornado: - "json": Dicionário com as chaves e valores originais da API; - "pandas": DataFrame formatado; - "url": Endereço da API que retorna o arquivo JSON. verificar_certificado : bool, default=True Defina esse argumento como `False` em caso de falha na verificação do certificado SSL. Returns ------- pandas.core.frame.DataFrame | str | dict | list[dict] Lista de blocos partidários. """ params = { "pagina": pagina, "ordem": "asc" if asc else "desc", "ordenarPor": ordenar_por, } if legislatura is not None: params["idLegislatura"] = legislatura if itens is not None: params["itens"] = itens cols_to_rename = { "id": "codigo", "uri": "uri", "nome": "nome", "idLegislatura": "legislatura", } return Get( endpoint="camara", path=["blocos"], params=params, unpack_keys=["dados"], cols_to_rename=cols_to_rename, cols_to_int=["codigo", "legislatura"], url_cols=["uri"], remover_url=not url, index=index, verify=verificar_certificado, ).get(formato)