Código-fonte para DadosAbertosBrasil.camara._legislaturas

from datetime import date
from typing import Optional

from pydantic import validate_call, PositiveInt

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


[documentos] class Legislatura(Base): """Informações extras sobre uma determinada legislatura da Câmara. Parameters ---------- cod : int Código numérico da legislatura da 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 da legislatura. inicio : str Primeiro dia da legislatura. fim : str Último dia da legislatura. uri : str Endereço para coleta de dados direta pela API da legislatura. Methods ------- mesa() Quais deputados fizeram parte da Mesa Diretora em uma legislatura. Examples -------- Obter o primeiro e último dia da legislatura #56. >>> leg = camara.Legislatura(cod=54) >>> leg.inicio ... '2011-02-01' >>> leg.fim ... '2015-01-31' """ def __init__(self, cod: int, verificar_certificado: bool = True): self.cod = cod self.verify = verificar_certificado atributos = {"fim": ["dataFim"], "inicio": ["dataInicio"], "uri": ["uri"]} super().__init__( endpoint="camara", path=["legislaturas", str(cod)], unpack_keys=["dados"], error_key="dataInicio", atributos=atributos, verify=self.verify, ) def __repr__(self) -> str: return f"DadosAbertosBrasil.camara: Legislatura {self.cod}" def __str__(self) -> str: return f"Legislatura {self.cod}"
[documentos] def mesa( self, inicio: Optional[date] = None, fim: Optional[date] = None, url: bool = True, index: bool = False, formato: Formato = "pandas", ) -> Output: """Quais deputados fizeram parte da Mesa Diretora em uma legislatura. Retorna uma lista com dados básicos sobre todos os deputados que ocuparam algum posto na Mesa Diretora da Câmara em algum período de tempo dentro da legislatura. Normalmente, cada legislatura tem duas Mesas Diretoras, com presidente, dois vice-presidentes, quatro secretários parlamentares e os suplentes dos secretários. Parameters ---------- inicio : str, optional Dia de início do intervalo de tempo do qual se deseja saber a composição da Mesa, no formato `'AAAA-MM-DD'`. fim : str, optional Data de término do intervalo de tempo do qual se deseja saber a composição da Mesa, no formato `'AAAA-MM-DD'`. 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. Returns ------- pandas.core.frame.DataFrame | str | dict | list[dict] Quais deputados fizeram parte da Mesa Diretora em uma legislatura. """ params = {} if inicio is not None: params["dataInicio"] = parse.data(inicio, "camara") if fim is not None: params["dataFim"] = parse.data(fim, "camara") cols_to_rename = { "id": "codigo", "uri": "uri", "nome": "nome", "siglaPartido": "partido", "uriPartido": "partido_uri", "siglaUf": "uf", "idLegislatura": "legislatura", "urlFoto": "foto", "email": "email", "dataInicio": "data_inicio", "dataFim": "data_fim", "titulo": "titulo", "codTitulo": "titulo_codigo", } return Get( endpoint="camara", path=["legislaturas", str(self.cod), "mesa"], params=params, unpack_keys=["dados"], cols_to_rename=cols_to_rename, cols_to_int=["titulo_codigo"], cols_to_date=["data_inicio", "data_fim"], url_cols=["uri", "partido_uri", "foto", "email"], remover_url=not url, index=index, verify=self.verify, ).get(formato)
[documentos] @validate_call def lista_legislaturas( data: Optional[date] = None, pagina: PositiveInt = 1, itens: Optional[PositiveInt] = None, asc: bool = False, ordenar_por: str = "id", url: bool = True, index: bool = False, formato: Formato = "pandas", verificar_certificado: bool = True, ) -> Output: """Os períodos de mandatos e atividades parlamentares da Câmara. Legislatura é o nome dado ao período de trabalhos parlamentares entre uma eleição e outra. Esta função retorna uma lista em que cada item contém as informações básicas sobre um desses períodos. Os números que identificam as legislaturas são sequenciais, desde a primeira que ocorreu. Parameters ---------- data : str, optional Data no formato `'AAAA-MM-DD'`. Se este parâmetro estiver presente, a função retornará as informações básicas sobre a legislatura que estava em curso na data informada. 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=False 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='id' 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] Os períodos de mandatos e atividades parlamentares da Câmara. """ params = { "pagina": pagina, "ordem": "asc" if asc else "desc", "ordenarPor": ordenar_por, } if data is not None: params["data"] = data if itens is not None: params["itens"] = itens cols_to_rename = { "id": "codigo", "uri": "uri", "dataInicio": "data_inicio", "dataFim": "data_fim", } return Get( endpoint="camara", path=["legislaturas"], params=params, unpack_keys=["dados"], cols_to_rename=cols_to_rename, cols_to_date=["data_inicio", "data_fim"], url_cols=["uri"], remover_url=not url, index=index, verify=verificar_certificado, ).get(formato)