Código-fonte para DadosAbertosBrasil.senado._orcamentos

from typing import Optional

from pydantic import validate_call, PositiveInt

from ..utils import Get, Formato, Output


[documentos] @validate_call def lista_orcamentos( autor: Optional[str] = None, tipo: Optional[str] = None, ano_execucao: Optional[PositiveInt] = None, ano_materia: Optional[PositiveInt] = None, url: bool = True, formato: Formato = "pandas", verificar_certificado: bool = True, ) -> Output: """Obtém a lista dos lotes de emendas orçamentárias. Parameters ---------- autor : str, optional Texto contendo nome do autor. tipo : str, optional Tipo de orçamento. ano_execucao : int, optional Ano que o orçamento foi executado. ano_materia : int, optional Ano da matéria. url : bool, default=False Se False, remove as colunas contendo URI, URL e e-mails. 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 dos lotes de emendas orçamentárias. Examples -------- Buscar o orçamento da Lei de Diretrizes Orçamentárias de 2020. >>> senado.orcamento(tipo='LDO', ano_execucao=2020) autor_nome ativo autor_email autor_codigo \ 0 Abou Anni True [email protected] 3896 1 Acir Gurgacz True [email protected] 2633 2 Adriana Ventura True [email protected] 3899 .. ... ... ... ... Pesquisar por emendas da deputada Adriana Ventura >>> senado.orcamento(autor='Adriana') autor_nome ativo autor_email autor_codigo \ 0 Adriana Ventura True [email protected] 3899 """ cols_to_rename = { "NomeAutorOrcamento": "autor_nome", "IndicadorAtivo": "ativo", "EmailAutorOrcamento": "autor_email", "CodigoAutorOrcamento": "autor_codigo", "DataOperacao": "data_operacao", "QuantidadeEmendas": "quantidade_emendas", "AnoExecucao": "ano_execucao", "NumeroMateria": "materia_numero", "AnoMateria": "materia_ano", "SiglaTipoPlOrcamento": "tipo_sigla", "DescricaoTipoPlOrcamento": "tipo_descricao", } data = Get( endpoint="senado", path=["orcamento", "lista"], unpack_keys=[ "ListaLoteEmendas", "LotesEmendasOrcamento", "LoteEmendasOrcamento", ], cols_to_rename=cols_to_rename, cols_to_int=[ "autor_codigo", "quantidade_emendas", "ano_execucao", "materia_ano", ], cols_to_date=["data_operacao"], cols_to_bool=["ativo"], true_value="Sim", false_value="Não", url_cols=["autor_email"], remover_url=not url, verify=verificar_certificado, ).get(formato) if formato == "pandas": if autor is not None: data = data[data["autor_nome"].str.contains(autor)] if tipo is not None: data = data[data["tipo_sigla"] == tipo] if ano_execucao is not None: data = data[data["ano_execucao"] == ano_execucao] if ano_materia is not None: data = data[data["ano_materia"] == ano_materia] return data